linux 安裝redis 完整步驟

參考推薦: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


image.png

6.將redis加入到開機啟動

  vi /etc/rc.local

//在里面添加內容:

/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
意思就是開機調用這段開啟redis的命令

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

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

有時候會報異常

image

原因: Redis已經啟動

解決: 關掉Redis,重啟即可

  1. redis-cli shutdown

  2. redis-server

然后你就能看到Redis愉快的運行了.

使用redis-cli客戶端檢測連接是否正常

  1. redis-cli

  2. 127.0.0.1:6379> keys *

  3. (empty list or set)

  4. 127.0.0.1:6379> set key "hello world"

  5. OK

  6. 127.0.0.1:6379> get key

  7. "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 // 返回列表的子集,類似切片操作

  1. "Sam"
  2. "Alice"
  3. "Bob"

lrange friends 0 1

  1. "Sam"
  2. "Alice"

lrange friends 1 2

  1. "Alice"
  2. "Bob"

llen friends // 返回列表長度
(integer) 3
lpop friends // 刪除并返回列表第一個元素
"Sam"
rpop friends // 刪除并返回列表最后一個元素
"Bob"
lrange friends 0 -1

  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 // 返回集合中所有元素

  1. "x-ray vision"
  2. "flight"

sadd birdpowers "pecking"
(integer) 1
sadd birdpowers "flight"
(integer) 1
sunion superpowers birdpowers // 合并多個set,返回合并后的元素列表

  1. "x-ray vision"
  2. "flight"
  3. "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 // 切片返回有序集合中元素

  1. "Claude Shannon"
  2. "Alan Kay"
  3. "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

  1. "name"
  2. "John Smith"
  3. "email"
  4. "john.smith@example.com"
  5. "password"
  6. "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;

  1. [root@localhost bin]# whereis redis-cli

  2. redis-cli: /usr/bin/redis-cli

  3. [root@localhost bin]# whereis redis-server

  4. redis-server: /usr/bin/redis-server

Linux系統下設置redis的密碼

Linux系統下設置redis的密碼:

1、進入redis操作的命令行

運行命令:redis-cli

2、查看現有的redis密碼(可選操作,可以沒有)

運行命令:config get requirepass如果沒有設置過密碼的話運行結果會如下圖所示

image

3、設置redis密碼

運行命令:config set requirepass ****(****為你要設置的密碼),設置成功的話會返回‘OK’字樣

4、重啟redis服務

ctrl+C退出當前的命令行模式后運行命令:

redis-cli -h 127.0.0.1 -p 6379 -a ****(****為你心設置的密碼)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。