Redis是一個開源,高級的鍵值存儲和一個適用的解決方案,用于構(gòu)建高性能,可擴(kuò)展的Web應(yīng)用程序。
Redis有三個主要特點(diǎn),使它優(yōu)越于其它鍵值數(shù)據(jù)存儲系統(tǒng) -
Redis官方網(wǎng)網(wǎng)站是:http://www.redis.io/ ,如下:
以下是Redis的一些優(yōu)點(diǎn)。
110000
次的設(shè)置(SET
)操作,每秒大約可執(zhí)行81000
次的讀取/獲取(GET
)操作。Redis是鍵值數(shù)據(jù)庫系統(tǒng)的不同進(jìn)化路線,它的值可以包含更復(fù)雜的數(shù)據(jù)類型,可在這些數(shù)據(jù)類型上定義原子操作。
Redis是一個內(nèi)存數(shù)據(jù)庫,但在磁盤數(shù)據(jù)庫上是持久的,因此它代表了一個不同的權(quán)衡,在這種情況下,在不能大于存儲器(內(nèi)存)的數(shù)據(jù)集的限制下實(shí)現(xiàn)非常高的寫和讀速度。
內(nèi)存數(shù)據(jù)庫的另一個優(yōu)點(diǎn)是,它與磁盤上的相同數(shù)據(jù)結(jié)構(gòu)相比,復(fù)雜數(shù)據(jù)結(jié)構(gòu)在內(nèi)存中存儲表示更容易操作。 因此,Redis可以做很少的內(nèi)部復(fù)雜性。
在本章中,您將了解和學(xué)習(xí)Redis的環(huán)境安裝設(shè)置。
要在Ubuntu上安裝Redis,打開終端并鍵入以下命令 -
[yiibai@ubuntu:~]$ sudo apt-get update
[yiibai@ubuntu:~]$ sudo apt-get install redis-server
這將在Ubuntu機(jī)器上安裝Redis。
啟動Redis
[yiibai@ubuntu:~]$ redis-server
[2988] 07 Feb 17:09:42.485 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
[2988] 07 Feb 17:09:42.488 # Unable to set the max number of files limit to 10032 (Operation not permitted), setting the max clients configuration to 3984.
[2988] 07 Feb 17:09:42.490 # Warning: 32 bit instance detected but no memory lim
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 2.8.4 (00000000/0) 32 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in stand alone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 2988
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
[2988] 07 Feb 17:09:42.581 # Server started, Redis version 2.8.4
[2988] 07 Feb 17:09:42.582 # WARNING overcommit_memory is set to 0! Background s ' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_m
[2988] 07 Feb 17:09:42.582 * The server is now ready to accept connections on po
檢查Redis是否正在工作
[yiibai@ubuntu:~]$ redis-cli
這將打開一個redis提示,如下所示 -
redis 127.0.0.1:6379>
在上面的提示中,127.0.0.1
是計算機(jī)的IP地址,6379
是運(yùn)行Redis服務(wù)器的端口。 現(xiàn)在鍵入以下PING
命令。
redis 127.0.0.1:6379> ping
PONG
這表明Redis已成功在您的計算機(jī)上安裝了。
在Ubuntu上安裝Redis桌面管理
要在Ubuntu上安裝Redis桌面管理器,可從 http://redisdesktop.com/download 下載該軟件包,安裝即可。
打開下載的軟件包并安裝。
Redis桌面管理器將提供用于管理Redis的鍵和數(shù)據(jù)的UI。
在Redis中,在Redis的根目錄下有一個配置文件(redis.conf
)。當(dāng)然您可以通過Redis CONFIG
命令獲取和設(shè)置所有的Redis配置。
語法
以下是Redis中的CONFIG
命令的基本語法。
redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME
示例
redis 127.0.0.1:6379> CONFIG GET loglevel
1) "loglevel"
2) "notice"
要獲取所有配置設(shè)置,請使用
*
代替CONFIG_SETTING_NAME
示例
redis 127.0.0.1:6379> CONFIG GET *
1) "dbfilename"
2) "dump.rdb"
3) "requirepass"
4) ""
5) "masterauth"
6) ""
7) "unixsocket"
8) ""
9) "logfile"
10) "/var/log/redis/redis-server.log"
11) "pidfile"
12) "/var/run/redis/redis-server.pid"
13) "maxmemory"
14) "3221225472"
15) "maxmemory-samples"
16) "3"
17) "timeout"
18) "0"
19) "tcp-keepalive"
20) "0"
21) "auto-aof-rewrite-percentage"
22) "100"
23) "auto-aof-rewrite-min-size"
24) "67108864"
25) "hash-max-ziplist-entries"
26) "512"
27) "hash-max-ziplist-value"
28) "64"
29) "list-max-ziplist-entries"
30) "512"
31) "list-max-ziplist-value"
32) "64"
33) "set-max-intset-entries"
34) "512"
35) "zset-max-ziplist-entries"
36) "128"
37) "zset-max-ziplist-value"
38) "64"
39) "lua-time-limit"
40) "5000"
41) "slowlog-log-slower-than"
42) "10000"
43) "slowlog-max-len"
44) "128"
45) "port"
46) "6379"
47) "databases"
48) "16"
49) "repl-ping-slave-period"
50) "10"
51) "repl-timeout"
52) "60"
53) "repl-backlog-size"
54) "1048576"
55) "repl-backlog-ttl"
56) "3600"
57) "maxclients"
58) "3984"
59) "watchdog-period"
60) "0"
61) "slave-priority"
62) "100"
63) "min-slaves-to-write"
64) "0"
65) "min-slaves-max-lag"
66) "10"
67) "hz"
68) "10"
69) "no-appendfsync-on-rewrite"
70) "no"
71) "slave-serve-stale-data"
72) "yes"
73) "slave-read-only"
74) "yes"
75) "stop-writes-on-bgsave-error"
76) "yes"
77) "daemonize"
78) "yes"
79) "rdbcompression"
80) "yes"
81) "rdbchecksum"
82) "yes"
83) "activerehashing"
84) "yes"
85) "repl-disable-tcp-nodelay"
86) "no"
87) "aof-rewrite-incremental-fsync"
88) "yes"
89) "appendonly"
90) "no"
91) "dir"
92) "/var/lib/redis"
93) "maxmemory-policy"
94) "noeviction"
95) "appendfsync"
96) "everysec"
97) "save"
98) "900 1 300 10 60 10000"
99) "loglevel"
100) "notice"
101) "client-output-buffer-limit"
102) "normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60"
103) "unixsocketperm"
104) "0"
105) "slaveof"
106) ""
107) "notify-keyspace-events"
108) ""
109) "bind"
110) "127.0.0.1"
要更新配置,可以直接編輯redis.conf
文件,也可以通過CONFIG set
命令更新配置。
語法
以下是CONFIG SET
命令的基本語法。
redis 127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE
示例
redis 127.0.0.1:6379> CONFIG SET loglevel "notice"
OK
redis 127.0.0.1:6379> CONFIG GET loglevel
1) "loglevel"
2) "notice"
Redis支持5
種數(shù)據(jù)類型。
Redis中的字符串是一個字節(jié)序列。Redis中的字符串是二進(jìn)制安全的,這意味著它們的長度不由任何特殊的終止字符決定。因此,可以在一個字符串中存儲高達(dá)512
兆字節(jié)的任何內(nèi)容。
示例
redis 127.0.0.1:6379> set name "yiibai.com"
OK
redis 127.0.0.1:6379> get name
"yiibai.com"
在上面的示例中,set
和get
是Redis命令,name
是Redis中使用的鍵,yiibai.com
是存儲在Redis中的字符串的值。
注 - Redis命令不區(qū)分大小寫,如
SET
,Set
和set
都是同一個命令。字符串值的最大長度為 512MB。
Redis散列/哈希(Hashes)是鍵值對的集合。Redis散列/哈希是字符串字段和字符串值之間的映射。因此,它們用于表示對象。
示例
redis 127.0.0.1:6379> HMSET ukey username "yiibai" password "passswd123" points 200
在上述示例中,散列/哈希數(shù)據(jù)類型用于存儲包含用戶的基本信息的用戶對象。這里HMSET
,HGETALL
是Redis的命令,而ukey
是鍵的名稱。
每個散列/哈??梢源鎯Χ噙_(dá)2^32 - 1
個健-值對(超過40
億個)。
Redis列表只是字符串列表,按插入順序排序。您可以向Redis列表的頭部或尾部添加元素。
示例
redis 127.0.0.1:6379> lpush alist redis
(integer) 1
redis 127.0.0.1:6379> lpush alist mongodb
(integer) 2
redis 127.0.0.1:6379> lpush alist sqlite
(integer) 3
redis 127.0.0.1:6379> lrange alist 0 10
1) "sqlite"
2) "mongodb"
3) "redis"
列表的最大長度為2^32 - 1
個元素(4294967295
,每個列表可容納超過40
億個元素)。
Redis集合是字符串的無序集合。在Redis中,您可以添加,刪除和測試成員存在的時間O(1)復(fù)雜性。
示例
redis 127.0.0.1:6379> sadd yiibailist redis
(integer) 1
redis 127.0.0.1:6379> sadd yiibailist mongodb
(integer) 1
redis 127.0.0.1:6379> sadd yiibailist sqlite
(integer) 1
redis 127.0.0.1:6379> sadd yiibailist sqlite
(integer) 0
redis 127.0.0.1:6379> smembers yiibailist
1) "sqlite"
2) "mongodb"
3) "redis"
注意 - 在上面的示例中,
sqlite
被添加了兩次,但是由于集合的唯一屬性,所以它只算添加一次。
一個集合中的最大成員數(shù)量為2^32 - 1
(即4294967295
,每個集合中元素數(shù)量可達(dá)40
億個)個。
Redis可排序集合類似于Redis集合,是不重復(fù)的字符集合。 不同之處在于,排序集合的每個成員都與分?jǐn)?shù)相關(guān)聯(lián),這個分?jǐn)?shù)用于按最小分?jǐn)?shù)到最大分?jǐn)?shù)來排序的排序集合。雖然成員是唯一的,但分?jǐn)?shù)值可以重復(fù)。
示例
redis 127.0.0.1:6379> zadd yiibaiset 0 redis
(integer) 1
redis 127.0.0.1:6379> zadd yiibaiset 0 mongodb
(integer) 1
redis 127.0.0.1:6379> zadd yiibaiset 1 sqlite
(integer) 1
redis 127.0.0.1:6379> zadd yiibaiset 1 sqlite
(integer) 0
redis 127.0.0.1:6379> ZRANGEBYSCORE yiibaiset 0 1000
1) "mongodb"
2) "redis"
3) "sqlite"
因?yàn)?‘sqlite
‘ 的排序值是 1 ,其它兩個元素的排序值是 0 ,所以 ‘sqlite
‘ 排在最后一個位置上。
Redis命令是用于在Redis服務(wù)器上執(zhí)行一些操作。
要在Redis服務(wù)器上運(yùn)行命令,需要一個Redis客戶端。Redis客戶端在Redis包中有提供,這個包在我們前面的安裝教程中就有安裝過了。
語法
以下是Redis客戶端的基本語法。
[yiibai@ubuntu:~]$ redis-cli
示例
以下示例說明了如何啟動Redis客戶端。
要啟動Redis客戶端,請打開終端并鍵入命令redis-cli
。 這將連接到您的本地Redis服務(wù)器,現(xiàn)在可以運(yùn)行任何的Redis命令了。
[yiibai@ubuntu:~]$redis-cli
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> PING
PONG
在上面的示例中,連接到到在本地機(jī)器上運(yùn)行的Redis服務(wù)器并執(zhí)行PING
命令,該命令檢查服務(wù)器是否正在運(yùn)行。
要在Redis遠(yuǎn)程服務(wù)器上運(yùn)行命令,需要通過客戶端redis-cli
連接到服務(wù)器
語法
[yiibai@ubuntu:~]$ redis-cli -h host -p port -a password
示例
以下示例顯示如何連接到Redis遠(yuǎn)程服務(wù)器,在主機(jī)(host)127.0.0.1
,端口(port)6379
上運(yùn)行,并使用密碼為 mypass
。
[yiibai@ubuntu:~]$ redis-cli -h 127.0.0.1 -p 6379 -a "mypass"
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> PING
PONG
Redis鍵命令用于管理Redis中的鍵。以下是使用redis鍵命令的語法。
語法
redis 127.0.0.1:6379> COMMAND KEY_NAME
示例
redis 127.0.0.1:6379> SET akey redis
OK
redis 127.0.0.1:6379> DEL akey
(integer) 1
127.0.0.1:6379> GET akey
(nil)
在上面的例子中,DEL
是Redis的命令,而akey
是鍵的名稱。如果鍵被刪除,則命令的輸出將為(integer) 1
,否則為(integer) 0
。
下表列出了與鍵相關(guān)的一些基本命令。
編號 | 命令 | 描述 |
---|---|---|
1 | DEL key | 此命令刪除一個指定鍵(如果存在)。 |
2 | DUMP key | 此命令返回存儲在指定鍵的值的序列化版本。 |
3 | EXISTS key | 此命令檢查鍵是否存在。 |
4 | EXPIRE key seconds | 設(shè)置鍵在指定時間秒數(shù)之后到期/過期。 |
5 | EXPIREAT key timestamp | 設(shè)置在指定時間戳之后鍵到期/過期。這里的時間是Unix時間戳格式。 |
6 | PEXPIRE key milliseconds | 設(shè)置鍵的到期時間(以毫秒為單位)。 |
7 | PEXPIREAT key milliseconds-timestamp | 以Unix時間戳形式來設(shè)置鍵的到期時間(以毫秒為單位)。 |
8 | KEYS pattern | 查找與指定模式匹配的所有鍵。 |
9 | MOVE key db | 將鍵移動到另一個數(shù)據(jù)庫。 |
10 | PERSIST key | 刪除指定鍵的過期時間,得永生。 |
11 | PTTL key | 獲取鍵的剩余到期時間。 |
12 | RANDOMKEY | 從Redis返回一個隨機(jī)的鍵。 |
13 | RENAME key newkey | 更改鍵的名稱。 |
14 | PTTL key | 獲取鍵到期的剩余時間(以毫秒為單位)。 |
15 | RENAMENX key newkey | 如果新鍵不存在,重命名鍵。 |
16 | TYPE key | 返回存儲在鍵中的值的數(shù)據(jù)類型。 |
Redis字符串命令用于管理Redis中的字符串值。以下是使用Redis字符串命令的語法。
redis 127.0.0.1:6379> COMMAND KEY_NAME
示例
redis 127.0.0.1:6379> SET mykey "redis"
OK
redis 127.0.0.1:6379> GET mykey
"redis"
在上面的例子中,SET
和GET
是redis中的命令,而mykey
是鍵的名稱。
下表列出了一些用于在Redis中管理字符串的基本命令。
編號 | 命令 | 描述說明 |
---|---|---|
1 | SET key value | 此命令設(shè)置指定鍵的值。 |
2 | GET key | 獲取指定鍵的值。 |
3 | GETRANGE key start end | 獲取存儲在鍵上的字符串的子字符串。 |
4 | GETSET key value | 設(shè)置鍵的字符串值并返回其舊值。 |
5 | GETBIT key offset | 返回在鍵處存儲的字符串值中偏移處的位值。 |
6 | MGET key1 [key2..] | 獲取所有給定鍵的值 |
7 | SETBIT key offset value | 存儲在鍵上的字符串值中設(shè)置或清除偏移處的位 |
8 | SETEX key seconds value | 使用鍵和到期時間來設(shè)置值 |
9 | SETNX key value | 設(shè)置鍵的值,僅當(dāng)鍵不存在時 |
10 | SETRANGE key offset value | 在指定偏移處開始的鍵處覆蓋字符串的一部分 |
11 | STRLEN key | 獲取存儲在鍵中的值的長度 |
12 | MSET key value [key value …] | 為多個鍵分別設(shè)置它們的值 |
13 | MSETNX key value [key value …] | 為多個鍵分別設(shè)置它們的值,僅當(dāng)鍵不存在時 |
14 | PSETEX key milliseconds value | 設(shè)置鍵的值和到期時間(以毫秒為單位) |
15 | INCR key | 將鍵的整數(shù)值增加1 |
16 | INCRBY key increment | 將鍵的整數(shù)值按給定的數(shù)值增加 |
17 | INCRBYFLOAT key increment | 將鍵的浮點(diǎn)值按給定的數(shù)值增加 |
18 | DECR key | 將鍵的整數(shù)值減1 |
19 | DECRBY key decrement | 按給定數(shù)值減少鍵的整數(shù)值 |
20 | APPEND key value | 將指定值附加到鍵 |
Redis Hashes是字符串字段和字符串值之間的映射(類似于PHP中的數(shù)組類型)。 因此,它們是表示對象的完美數(shù)據(jù)類型。
在Redis中,每個哈希(散列)可以存儲多達(dá)4億個鍵-值對。
redis 127.0.0.1:6379> HMSET myhash name "redis tutorial"
description "redis basic commands for caching" likes 20 visitors 23000
OK
127.0.0.1:6379> HGETALL myhash
1) "field1"
2) "Hello"
3) "field2"
4) "World"
5) "name"
6) "redis tutorial"
在上面的例子中,在名稱為’myhash
‘的哈希中設(shè)置了Redis教程的詳細(xì)信息(名稱,描述,喜歡,訪問者)。
Redis列表只是字符串列表,按插入順序排序??梢栽诹斜淼念^部或尾部添加Redis列表中的元素。
列表的最大長度為2^32 - 1
個元素(即4294967295
,每個列表可存儲超過40億個元素)。
redis 127.0.0.1:6379> LPUSH mylist "redis"
(integer) 1
redis 127.0.0.1:6379> LPUSH mylist "mongodb"
(integer) 2
redis 127.0.0.1:6379> LPUSH mylist "mysql"
(integer) 3
redis 127.0.0.1:6379> LRANGE mylist 0 10
1) "mysql"
2) "mongodb"
3) "redis"
在上面的示例中,通過命令LPUSH
將三個值插入到名稱為“mylist
”的Redis列表中。
Redis集合是唯一字符串的無序集合。 唯一值表示集合中不允許鍵中有重復(fù)的數(shù)據(jù)。
在Redis中設(shè)置添加,刪除和測試成員的存在(恒定時間O(1),而不考慮集合中包含的元素數(shù)量)。列表的最大長度為2^32 - 1
個元素(即4294967295,每組集合超過40億個元素)。
redis 127.0.0.1:6379> SADD myset "redis"
(integer) 1
redis 127.0.0.1:6379> SADD myset "mongodb"
(integer) 1
redis 127.0.0.1:6379> SADD myset "mysql"
(integer) 1
redis 127.0.0.1:6379> SADD myset "mysql"
(integer) 0
redis 127.0.0.1:6379> SMEMBERS "myset"
1) "mysql"
2) "mongodb"
3) "redis"
在上面的示例中,通過命令SADD
將三個值插入到名稱為“myset
”的Redis集合中。
Redis發(fā)布訂閱(pub/sub)是一種消息通信模式:發(fā)送者(pub)發(fā)送消息,訂閱者(sub)接收消息。
Redis 發(fā)布訂閱(pub/sub)實(shí)現(xiàn)了消息系統(tǒng),發(fā)送者(在redis術(shù)語中稱為發(fā)布者)在接收者(訂閱者)接收消息時發(fā)送消息。傳送消息的鏈路稱為信道。
在Redis中,客戶端可以訂閱任意數(shù)量的信道。
以下示例說明了發(fā)布用戶概念的工作原理。 在以下示例中,一個客戶端訂閱名為“redisChat
”的信道。
redis 127.0.0.1:6379> SUBSCRIBE redisChat
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "redisChat"
3) (integer) 1
現(xiàn)在,兩個客戶端在名稱為“redisChat
”的相同信道上發(fā)布消息,并且上述訂閱的客戶端接收消息。
redis 127.0.0.1:6379> PUBLISH redisChat "Redis is a great caching technique"
(integer) 1
redis 127.0.0.1:6379> PUBLISH redisChat "Learn redis by yiibai"
(integer) 1
1) "message"
2) "redisChat"
3) "Redis is a great caching technique"
1) "message"
2) "redisChat"
3) "Learn redis by yiibai"
Redis事務(wù)允許在單個步驟中執(zhí)行一組命令。以下是事務(wù)的兩個屬性:
Redis事務(wù)由命令MULTI
命令啟動,然后需要傳遞一個應(yīng)該在事務(wù)中執(zhí)行的命令列表,然后整個事務(wù)由EXEC
命令執(zhí)行。
redis 127.0.0.1:6379> MULTI
OK
List of commands here
redis 127.0.0.1:6379> EXEC
以下示例說明了如何啟動和執(zhí)行Redis事務(wù)。
redis 127.0.0.1:6379> MULTI
OK
redis 127.0.0.1:6379> SET mykey "redis"
QUEUED
redis 127.0.0.1:6379> GET mykey
QUEUED
redis 127.0.0.1:6379> INCR visitors
QUEUED
redis 127.0.0.1:6379> EXEC
1) OK
2) "redis"
3) (integer) 1
Redis腳本用于使用Lua解釋器來執(zhí)行腳本。從Redis 2.6.0
版開始內(nèi)置到Redis中。使用腳本的命令是EVAL命令。
以下是EVAL
命令的基本語法。
redis 127.0.0.1:6379> EVAL script numkeys key [key ...] arg [arg ...]
以下示例說明了Redis腳本的工作原理。
redis 127.0.0.1:6379> EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1
key2 first second
1) "key1"
2) "key2"
3) "first"
4) "second"
Redis中的連接命令基本上是用于管理與Redis服務(wù)器的客戶端連接。
以下示例說明客戶端如何向Redis服務(wù)器驗(yàn)證自身,并檢查服務(wù)器是否正在運(yùn)行。
redis 127.0.0.1:6379> AUTH "password"
OK
redis 127.0.0.1:6379> PING
PONG
下表列出了與Redis連接相關(guān)的一些基本命令。
序號 | 命令 | 說明 |
---|---|---|
1 | AUTH password | 使用給定的密碼驗(yàn)證服務(wù)器 |
2 | ECHO message | 打印給定的字符串信息 |
3 | PING | 檢查服務(wù)器是否正在運(yùn)行 |
4 | QUIT | 關(guān)閉當(dāng)前連接 |
5 | SELECT index | 更改當(dāng)前連接的所選數(shù)據(jù)庫 |
Redis服務(wù)器命令基本上是用于管理Redis服務(wù)器。
以下示例說明了如何獲取有關(guān)服務(wù)器的所有統(tǒng)計信息和信息。
127.0.0.1:6379> info
# Server
redis_version:2.8.4
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:8f6097d7914679ca
redis_mode:standalone
os:Linux 3.19.0-25-generic i686
arch_bits:32
multiplexing_api:epoll
gcc_version:4.8.2
process_id:1004
run_id:1e53acea2aa628199c4e438a3ed815d96eebc036
tcp_port:6379
uptime_in_seconds:888450
uptime_in_days:10
hz:10
lru_clock:1861984
config_file:/etc/redis/redis.conf
# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
# Memory
used_memory:424872
used_memory_human:414.91K
used_memory_rss:6709248
used_memory_peak:424464
used_memory_peak_human:414.52K
used_memory_lua:22528
mem_fragmentation_ratio:15.79
mem_allocator:jemalloc-3.4.1
# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1486607123
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:0
rdb_current_bgsave_time_sec:-1
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
# Stats
total_connections_received:1
total_commands_processed:263
instantaneous_ops_per_sec:0
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
evicted_keys:0
keyspace_hits:257
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:4793
# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
# CPU
used_cpu_sys:24.65
used_cpu_user:15.84
used_cpu_sys_children:0.08
used_cpu_user_children:0.00
# Keyspace
db0:keys=14,expires=0,avg_ttl=0
db1:keys=1,expires=0,avg_ttl=0
127.0.0.1:6379>
Redis數(shù)據(jù)庫可以使用安全的方案,使得進(jìn)行連接的任何客戶端在執(zhí)行命令之前都需要進(jìn)行身份驗(yàn)證。要保護(hù)Redis安全,需要在配置文件中設(shè)置密碼。
下面的示例顯示了保護(hù)Redis實(shí)例的步驟。
127.0.0.1:6379> CONFIG get requirepass
1) "requirepass"
2) ""
默認(rèn)情況下,此屬性為空,這表示還沒有為此實(shí)例設(shè)置密碼。您可以通過執(zhí)行以下命令更改此屬性。
127.0.0.1:6379> CONFIG set requirepass "yiibai"
OK
127.0.0.1:6379> CONFIG get requirepass
1) "requirepass"
2) "yiibai"
設(shè)置密碼后,如果任何客戶端運(yùn)行命令而不進(jìn)行身份驗(yàn)證,則會返回一個(error) NOAUTH Authentication required.的