參考推薦:http://www.lxweimin.com/p/fbe40258fe27
點擊查看原文
1.獲取redis資源
wget http://download.redis.io/releases/redis-4.0.8.tar.gz
2.解壓
tar xzvf redis-4.0.8.tar.gz
3.安裝
cd redis-4.0.8
make
cd src
make install PREFIX=/usr/local/redis
4.移動配置文件到安裝目錄下
cd ../
mkdir /usr/local/redis/etc
mv redis.conf /usr/local/redis/etc
5.配置redis為后臺啟動
vim /usr/local/redis/etc/redis.conf
將daemonize no 改成daemonize yes
6.將redis加入到開機啟動
vi /etc/rc.local
//在里面添加內容:
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
7.開啟redis
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
8.將redis-cli,redis-server拷貝到bin下,讓redis-cli指令可以在任意目錄下直接使用
cp /usr/local/redis/bin/redis-server /usr/local/bin/
cp /usr/local/redis/bin/redis-cli /usr/local/bin/
9.設置redis密碼
a.運行命令:
redis-cli
b.查看現有的redis密碼(可選操作,可以沒有)
config get requirepass
如果沒有設置過密碼的話運行結果會如下圖所示
c.設置redis密碼
config set requirepass ****
(****為你要設置的密碼),設置成功的話會返回‘OK’字樣
d.測試連接
重啟redis服務
redis-cli -h 127.0.0.1 -p 6379 -a ****
(****為你設置的密碼))
輸入 redis-cli 進入命令模式,使用 auth '*****' (****為你設置的密碼)登陸
10.讓外網能夠訪問redis
**a.配置防火墻: **
firewall-cmd --zone=public --add-port=6379/tcp --permanent
(開放6379端口)
systemctl restart firewalld
(重啟防火墻以使配置即時生效)
查看系統所有開放的端口:
firewall-cmd --zone=public --list-ports
b.此時 雖然防火墻開放了6379端口,但是外網還是無法訪問的,因為redis監聽的是127.0.0.1:6379,并不監聽外網的請求。
(一)把文件夾目錄里的redis.conf配置文件里的bind 127.0.0.1前面加#注釋掉
(二)命令:redis-cli連接到redis后,通過 config get daemonize和config get protected-mode 是不是都為no,如果不是,就用config set 配置名 屬性 改為no。
image.png
設置systemctl啟動
[Unit]
Description=redis
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
ExecStop=/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379 shutdown
PrivateTmp=true
[Install]
WantedBy=multi-user.target
然后保存退出
刷新一下
systemctl daemon-reload
systemctl 常用命令
systemctl enable redis 開機自啟redis服務
systemctl disable redis 取消開機自啟
systemctl start redis.service 啟動redis服務
systemctl stop redis.service 停止服務
systemctl restart redis.service 重新啟動服務
systemctl status redis.service 查看服務當前狀態
systemctl list-units --type=service 查看所有已啟動的服務
=====以下不重要,在哪抄的忘了=====
常用命令
redis-server /usr/local/redis/etc/redis.conf //啟動redis
pkill redis //停止redis
卸載redis:
rm -rf /usr/local/redis //刪除安裝目錄
rm -rf /usr/bin/redis-* //刪除所有redis相關命令腳本
rm -rf /root/download/redis-4.0.4 //刪除redis解壓文件夾
8-啟動redis:
兩種方式:
redis-server &
加上`&`號使redis以后臺程序方式運行
或者是
redis-server
9-檢測后臺進程是否存在
ps -ef |grep redis
10-檢測6379端口是否在監聽
netstat -lntp | grep 6379
有時候會報異常
原因: Redis已經啟動
解決: 關掉Redis,重啟即可
redis-cli shutdown
redis-server
然后你就能看到Redis愉快的運行了.
使用redis-cli
客戶端檢測連接是否正常
redis-cli
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set key "hello world"
OK
127.0.0.1:6379> get key
"hello world"
停止redis:
使用客戶端
redis-cli shutdown
因為Redis可以妥善處理SIGTERM信號,所以直接kill -9也是可以的
kill -9 PID
啟動redis服務端
$ src/redis-server
啟動redis客戶端
$ src/redis-cli
Redis客戶端常見操作
Redis是key-value數據庫,支持五種數據類型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
-
當value是string類型,命令包括set get setnx incr del 等。
set server:name "fido" // 設置鍵值
OK
get server:name // 獲取鍵值
"fido"
setnx connections 10 // set if not exists
OK
incr connections // 原子性增加values值
(integer) 11
incr connections
(integer) 12
del connections // 刪除key
(integer) 1
incr connections
(integer) 1
當value是list類型,命令包括rpush lpush llen lrange lpop rpop del 等。
rpush friends "Alice" // 在末尾追加
(integer) 1
rpush friends "Bob"
(integer) 2
lpush friends "Sam" // 插入到開頭
(integer) 3
lrange friends 0 -1 // 返回列表的子集,類似切片操作
- "Sam"
- "Alice"
- "Bob"
lrange friends 0 1
- "Sam"
- "Alice"
lrange friends 1 2
- "Alice"
- "Bob"
llen friends // 返回列表長度
(integer) 3
lpop friends // 刪除并返回列表第一個元素
"Sam"
rpop friends // 刪除并返回列表最后一個元素
"Bob"
lrange friends 0 -1
- "Alice"
del friends // 刪除key
(integer) 1 // 1表示成功,0表示失敗
當value是set類型,命令包括sadd srem sismember smembers sunion del等。
sadd superpowers "flight" // 添加元素
(integer) 1
sadd superpowers "x-ray vision"
(integer) 1
sadd superpowers "reflexes"
(integer) 1
srem superpowers "reflexes" // 刪除元素
1
sismember superpowers "flight" // 測試元素是否在集合中
(integer) 1
sismember superpowers "reflexes"
(integer) 0
smembers superpowers // 返回集合中所有元素
- "x-ray vision"
- "flight"
sadd birdpowers "pecking"
(integer) 1
sadd birdpowers "flight"
(integer) 1
sunion superpowers birdpowers // 合并多個set,返回合并后的元素列表
- "x-ray vision"
- "flight"
- "pecking"
del superpowers // 刪除key
(integer) 1
當value是zset類型,命令包括 zadd zrange del等,注意給value一個編號用于排序。
zadd hacker 1940 "Alan Kay" // 給value指定一個編號,比如以年份1940作為編號
(integer) 1
zadd hacker 1906 "Grace Hopper"
(integer) 1
zadd hacker 1953 "Richard Stallman"
(integer) 1
zadd hacker 1965 "Yukihiro Matsumoto"
(integer) 1
zadd hacker 1916 "Claude Shannon"
(integer) 1
zadd hacker 1969 "Linux Torvalds"
(integer) 1
zadd hacker 1957 "Sophie Wilson"
(integer) 1
zadd hacker 1912 "Alan Turing"
(integer) 1
zrange hacker 2 4 // 切片返回有序集合中元素
- "Claude Shannon"
- "Alan Kay"
- "Richard Stallman"
del hacker // 刪除key
(integer) 1
當value是hash類型,hash類型可以理解為字典,需要給value指定一個field用于映射,命令包括hset hmset hget hgetall hdel hincrby del 等。
hset user:1000 name "John Smith" // 給value指定一個field,比如name
(integer) 1
hset user:1000 email "john.smith@example.com"
(integer) 1
hset user:1000 password "s3cret"
(integer) 1
hgetall user:1000 // 獲得hash表中所有成員,包括field和value
- "name"
- "John Smith"
- "email"
- "john.smith@example.com"
- "password"
- "s3cret"
hmset user:1001 name "Mary Jones" password "hidden" email
"mjones@example.com" // 設置多個field和value
OK
hget user:1001 name // 根據field獲取value
"Mary Jones"
hset user:1000 visits 10 // field可以映射到數字值
(integer) 1
hincrby user:1000 visits 1 // 原子性增加value的值,增加1
(integer) 11
hincrby user:1000 visits 10 // 增加10
(integer) 21
hdel user:1000 visits // 刪除field及其value
(integer) 1
hincrby user:1000 visits 1
(integer) 1
del user:1000 // 刪除key
(integer) 1
設置和查看key的生命周期,key過期會被自動刪除,命令包括expire ttl 等。
set resource:lock "Redis Demo"
OK
expire resource:lock 120 // 設置生命周期為120s
(integer) 1
ttl resource:lock // 查看當前生命周期還剩多少時間
(integer) 109
ttl resource:lock // 120s后查看,返回-2表示已過期或不存在
(integer) -2
set resource:lock "Redis Demo 2"
OK
ttl resource:lock // 返回-1表示永不過期
(integer) -1
查看linux上面是否有安裝redis,redis啟動
1、檢測是否有安裝redis-cli和redis-server;
[root@localhost bin]# whereis redis-cli
redis-cli: /usr/bin/redis-cli
[root@localhost bin]# whereis redis-server
redis-server: /usr/bin/redis-server
Linux系統下設置redis的密碼
Linux系統下設置redis的密碼:
1、進入redis操作的命令行
運行命令:redis-cli
2、查看現有的redis密碼(可選操作,可以沒有)
運行命令:config get requirepass如果沒有設置過密碼的話運行結果會如下圖所示
3、設置redis密碼
運行命令:config set requirepass ****(****為你要設置的密碼),設置成功的話會返回‘OK’字樣
4、重啟redis服務
ctrl+C退出當前的命令行模式后運行命令:
redis-cli -h 127.0.0.1 -p 6379 -a ****(****為你心設置的密碼)