參考推薦:http://www.reibang.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
//在里面添加內(nèi)容:
/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.設(shè)置redis密碼
a.運行命令:
redis-cli
b.查看現(xiàn)有的redis密碼(可選操作绵载,可以沒有)
config get requirepass
如果沒有設(shè)置過密碼的話運行結(jié)果會如下圖所示
c.設(shè)置redis密碼
config set requirepass ****
(****為你要設(shè)置的密碼)完域,設(shè)置成功的話會返回‘OK’字樣
d.測試連接
重啟redis服務(wù)
redis-cli -h 127.0.0.1 -p 6379 -a ****
(****為你設(shè)置的密碼))
輸入 redis-cli 進(jìn)入命令模式贾节,使用 auth '*****' (****為你設(shè)置的密碼)登陸
10.讓外網(wǎng)能夠訪問redis
**a.配置防火墻: **
firewall-cmd --zone=public --add-port=6379/tcp --permanent
(開放6379端口)
systemctl restart firewalld
(重啟防火墻以使配置即時生效)
查看系統(tǒng)所有開放的端口:
firewall-cmd --zone=public --list-ports
b.此時 雖然防火墻開放了6379端口障本,但是外網(wǎng)還是無法訪問的锡搜,因為redis監(jiān)聽的是127.0.0.1:6379,并不監(jiān)聽外網(wǎng)的請求署驻。
(一)把文件夾目錄里的redis.conf配置文件里的bind 127.0.0.1前面加#注釋掉
(二)命令:redis-cli連接到redis后奋献,通過 config get daemonize和config get protected-mode 是不是都為no健霹,如果不是,就用config set 配置名 屬性 改為no瓶蚂。
image.png
設(shè)置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服務(wù)
systemctl disable redis 取消開機自啟
systemctl start redis.service 啟動redis服務(wù)
systemctl stop redis.service 停止服務(wù)
systemctl restart redis.service 重新啟動服務(wù)
systemctl status redis.service 查看服務(wù)當(dāng)前狀態(tài)
systemctl list-units --type=service 查看所有已啟動的服務(wù)
=====以下不重要糖埋,在哪抄的忘了=====
常用命令
redis-server /usr/local/redis/etc/redis.conf //啟動redis
pkill redis //停止redis
卸載redis:
rm -rf /usr/local/redis //刪除安裝目錄
rm -rf /usr/bin/redis-* //刪除所有redis相關(guān)命令腳本
rm -rf /root/download/redis-4.0.4 //刪除redis解壓文件夾
8-啟動redis:
兩種方式:
redis-server &
加上`&`號使redis以后臺程序方式運行
或者是
redis-server
9-檢測后臺進(jìn)程是否存在
ps -ef |grep redis
10-檢測6379端口是否在監(jiān)聽
netstat -lntp | grep 6379
有時候會報異常
原因: Redis已經(jīng)啟動
解決: 關(guān)掉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服務(wù)端
$ src/redis-server
啟動redis客戶端
$ src/redis-cli
Redis客戶端常見操作
Redis是key-value數(shù)據(jù)庫窃这,支持五種數(shù)據(jù)類型:string(字符串)瞳别,hash(哈希),list(列表)杭攻,set(集合)及zset(sorted set:有序集合)祟敛。
-
當(dāng)value是string類型,命令包括set get setnx incr del 等兆解。
set server:name "fido" // 設(shè)置鍵值
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
當(dāng)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表示失敗
當(dāng)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
當(dāng)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
當(dāng)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" // 設(shè)置多個field和value
OK
hget user:1001 name // 根據(jù)field獲取value
"Mary Jones"
hset user:1000 visits 10 // field可以映射到數(shù)字值
(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
設(shè)置和查看key的生命周期仪召,key過期會被自動刪除,命令包括expire ttl 等松蒜。
set resource:lock "Redis Demo"
OK
expire resource:lock 120 // 設(shè)置生命周期為120s
(integer) 1
ttl resource:lock // 查看當(dāng)前生命周期還剩多少時間
(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系統(tǒng)下設(shè)置redis的密碼
Linux系統(tǒng)下設(shè)置redis的密碼:
1秸苗、進(jìn)入redis操作的命令行
運行命令:redis-cli
2召娜、查看現(xiàn)有的redis密碼(可選操作,可以沒有)
運行命令:config get requirepass如果沒有設(shè)置過密碼的話運行結(jié)果會如下圖所示
3惊楼、設(shè)置redis密碼
運行命令:config set requirepass ****(****為你要設(shè)置的密碼)玖瘸,設(shè)置成功的話會返回‘OK’字樣
4秸讹、重啟redis服務(wù)
ctrl+C退出當(dāng)前的命令行模式后運行命令:
redis-cli -h 127.0.0.1 -p 6379 -a ****(****為你心設(shè)置的密碼)