Redis - 快速指南



Redis - 概述

Redis 是一個開源的、高階的鍵值儲存,是構建高效能、可擴充套件 Web 應用程式的理想解決方案。

Redis 有三個主要特點使其與眾不同。

  • Redis 將其資料庫完全儲存在記憶體中,僅使用磁碟進行持久化。

  • 與許多鍵值資料儲存相比,Redis 具有相對豐富的 資料型別。

  • Redis 可以將資料複製到任意數量的從伺服器。

Redis 優勢

以下是 Redis 的一些優勢。

  • 異常快速 - Redis 非常快,每秒可以執行大約 110000 次 SET 操作,大約 81000 次 GET 操作。

  • 支援豐富的資料型別 - Redis 原生支援開發人員已經瞭解的大多數資料型別,例如列表、集合、有序集合和雜湊。這使得解決各種問題變得容易,因為我們知道哪個問題可以透過哪種資料型別更好地處理。

  • 操作是原子性的 - 所有 Redis 操作都是原子性的,這確保瞭如果兩個客戶端同時訪問,Redis 伺服器將接收更新後的值。

  • 多功能工具 - Redis 是一個多功能工具,可用於多種用例,例如快取、訊息佇列(Redis 原生支援釋出/訂閱)、應用程式中的任何短期資料,例如 Web 應用程式會話、網頁點選次數等。

Redis 與其他鍵值儲存的比較

  • Redis 是鍵值資料庫中不同的發展路徑,其中值可以包含更復雜的資料型別,並在這些資料型別上定義原子操作。

  • Redis 是一個記憶體資料庫,但也是一個持久化到磁碟的資料庫,因此它代表了一種不同的權衡,其中透過限制無法大於記憶體的資料集來實現非常高的寫入和讀取速度。

  • 記憶體資料庫的另一個優點是,與磁碟上的相同資料結構相比,複雜資料結構的記憶體表示更容易操作。因此,Redis 可以用很少的內部複雜性完成很多事情。

Redis - 環境

在本章中,您將學習 Redis 的環境設定。

在 Ubuntu 上安裝 Redis

要在 Ubuntu 上安裝 Redis,請轉到終端並鍵入以下命令:

$sudo apt-get update 
$sudo apt-get install redis-server

這將在您的機器上安裝 Redis。

啟動 Redis

$redis-server

檢查 Redis 是否正在工作

$redis-cli 

這將開啟一個 redis 提示符。

redis 127.0.0.1:6379>

在上面的提示符中,127.0.0.1 是您機器的 IP 地址,6379 是 Redis 伺服器正在執行的埠。現在鍵入以下 PING 命令。

redis 127.0.0.1:6379> ping 
PONG

這表明 Redis 已成功安裝在您的機器上。

在 Ubuntu 上安裝 Redis Desktop Manager

要在 Ubuntu 上安裝 Redis 桌面管理器,只需從 https://redisdesktop.com/download 下載軟體包即可

開啟下載的軟體包並安裝它。

Redis 桌面管理器將為您提供管理 Redis 鍵和資料的 UI。

Redis - 配置

在 Redis 中,在 Redis 的根目錄下有一個配置檔案(redis.conf)。雖然您可以透過 Redis CONFIG 命令獲取和設定所有 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"

要獲取所有配置設定,請在 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) "" 
 11) "pidfile" 
 12) "/var/run/redis.pid" 
 13) "maxmemory" 
 14) "0"
 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) "hll-sparse-max-bytes" 
 40) "3000" 
 41) "lua-time-limit" 
 42) "5000" 
 43) "slowlog-log-slower-than" 
 44) "10000" 
 45) "latency-monitor-threshold" 
 46) "0" 
 47) "slowlog-max-len" 
 48) "128" 
 49) "port" 
 50) "6379" 
 51) "tcp-backlog" 
 52) "511" 
 53) "databases" 
 54) "16" 
 55) "repl-ping-slave-period" 
 56) "10" 
 57) "repl-timeout" 
 58) "60" 
 59) "repl-backlog-size" 
 60) "1048576" 
 61) "repl-backlog-ttl" 
 62) "3600" 
 63) "maxclients" 
 64) "4064" 
 65) "watchdog-period" 
 66) "0" 
 67) "slave-priority" 
 68) "100" 
 69) "min-slaves-to-write" 
 70) "0" 
 71) "min-slaves-max-lag" 
 72) "10" 
 73) "hz" 
 74) "10" 
 75) "no-appendfsync-on-rewrite" 
 76) "no" 
 77) "slave-serve-stale-data" 
 78) "yes" 
 79) "slave-read-only" 
 80) "yes" 
 81) "stop-writes-on-bgsave-error" 
 82) "yes" 
 83) "daemonize" 
 84) "no" 
 85) "rdbcompression" 
 86) "yes"
 87) "rdbchecksum" 
 88) "yes" 
 89) "activerehashing" 
 90) "yes" 
 91) "repl-disable-tcp-nodelay" 
 92) "no" 
 93) "aof-rewrite-incremental-fsync" 
 94) "yes" 
 95) "appendonly" 
 96) "no" 
 97) "dir" 
 98) "/home/deepak/Downloads/redis-2.8.13/src" 
 99) "maxmemory-policy" 
100) "volatile-lru" 
101) "appendfsync" 
102) "everysec" 
103) "save" 
104) "3600 1 300 100 60 10000" 
105) "loglevel" 
106) "notice" 
107) "client-output-buffer-limit" 
108) "normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60" 
109) "unixsocketperm" 
110) "0" 
111) "slaveof" 
112) "" 
113) "notify-keyspace-events" 
114) "" 
115) "bind" 
116) "" 

編輯配置

要更新配置,您可以直接編輯 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 - 資料型別

Redis 支援 5 種資料型別。

字串

Redis 字串是一系列位元組。Redis 中的字串是二進位制安全的,這意味著它們具有已知的長度,而不是由任何特殊的終止字元確定的。因此,您可以在一個字串中儲存多達 512 兆位元組的內容。

示例

redis 127.0.0.1:6379> SET name "tutorialspoint" 
OK 
redis 127.0.0.1:6379> GET name 
"tutorialspoint"

在上面的示例中,SETGET 是 Redis 命令,name 是 Redis 中使用的鍵,tutorialspoint 是儲存在 Redis 中的字串值。

注意 - 字串值的最大長度為 512 兆位元組。

雜湊

Redis 雜湊是鍵值對的集合。Redis 雜湊是在字串欄位和字串值之間對映。因此,它們用於表示物件。

示例

redis 127.0.0.1:6379> HMSET user:1 username tutorialspoint password 
tutorialspoint points 200 
OK 
redis 127.0.0.1:6379> HGETALL user:1  
1) "username" 
2) "tutorialspoint" 
3) "password" 
4) "tutorialspoint" 
5) "points" 
6) "200"

在上面的示例中,雜湊資料型別用於儲存包含使用者基本資訊的使用者資訊物件。這裡 HMSET, HGETALL 是 Redis 的命令,而 user - 1 是鍵。

每個雜湊可以儲存多達 232 - 1 個欄位值對(超過 40 億個)。

列表

Redis 列表只是字串列表,按插入順序排序。您可以將元素新增到 Redis 列表的頭部或尾部。

示例

redis 127.0.0.1:6379> lpush tutoriallist redis 
(integer) 1 
redis 127.0.0.1:6379> lpush tutoriallist mongodb 
(integer) 2 
redis 127.0.0.1:6379> lpush tutoriallist rabitmq 
(integer) 3 
redis 127.0.0.1:6379> lrange tutoriallist 0 10  

1) "rabitmq" 
2) "mongodb" 
3) "redis"

列表的最大長度為 232 - 1 個元素(4294967295,每個列表超過 40 億個元素)。

集合

Redis 集合是字串的無序集合。在 Redis 中,您可以新增、刪除和測試成員的存在性,時間複雜度為 O(1)。

示例

redis 127.0.0.1:6379> sadd tutoriallist redis 
(integer) 1 
redis 127.0.0.1:6379> sadd tutoriallist mongodb 
(integer) 1 
redis 127.0.0.1:6379> sadd tutoriallist rabitmq 
(integer) 1 
redis 127.0.0.1:6379> sadd tutoriallist rabitmq 
(integer) 0 
redis 127.0.0.1:6379> smembers tutoriallist  

1) "rabitmq" 
2) "mongodb" 
3) "redis" 

注意 - 在上面的示例中,rabitmq 添加了兩次,但是由於集合的唯一屬性,它只添加了一次。

集合中成員的最大數量為 232 - 1(4294967295,每個集合超過 40 億個成員)。

有序集合

Redis 有序集合類似於 Redis 集合,是字串的非重複集合。不同之處在於,有序集合的每個成員都與一個分數相關聯,該分數用於按順序排列有序集合,從小到大的分數。雖然成員是唯一的,但分數可以重複。

示例

redis 127.0.0.1:6379> zadd tutoriallist 0 redis 
(integer) 1 
redis 127.0.0.1:6379> zadd tutoriallist 0 mongodb 
(integer) 1 
redis 127.0.0.1:6379> zadd tutoriallist 0 rabitmq 
(integer) 1 
redis 127.0.0.1:6379> zadd tutoriallist 0 rabitmq 
(integer) 0 
redis 127.0.0.1:6379> ZRANGEBYSCORE tutoriallist 0 1000  

1) "redis" 
2) "mongodb" 
3) "rabitmq" 

Redis - 命令

Redis 命令用於對 Redis 伺服器執行一些操作。

要在 Redis 伺服器上執行命令,您需要一個 Redis 客戶端。Redis 客戶端在 Redis 軟體包中可用,我們之前已經安裝了它。

語法

以下是 Redis 客戶端的基本語法。

$redis-cli 

示例

以下示例說明了如何啟動 Redis 客戶端。

要啟動 Redis 客戶端,請開啟終端並鍵入命令 redis-cli。這將連線到您的本地伺服器,現在您可以執行任何命令。

$redis-cli 
redis 127.0.0.1:6379> 
redis 127.0.0.1:6379> PING  
PONG

在上面的示例中,我們連線到在本地機器上執行的 Redis 伺服器並執行命令 PING,該命令檢查伺服器是否正在執行。

在遠端伺服器上執行命令

要在 Redis 遠端伺服器上執行命令,您需要使用相同的客戶端 redis-cli 連線到伺服器

語法

$ redis-cli -h host -p port -a password

示例

以下示例顯示瞭如何連線到 Redis 遠端伺服器,該伺服器在主機 127.0.0.1 上執行,埠為 6379,並且密碼為 mypass。

$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 鍵命令的語法。

語法

redis 127.0.0.1:6379> COMMAND KEY_NAME

示例

redis 127.0.0.1:6379> SET tutorialspoint redis 
OK 
redis 127.0.0.1:6379> DEL tutorialspoint 
(integer) 1

在上面的示例中,DEL 是命令,而 tutorialspoint 是鍵。如果鍵被刪除,則命令的輸出將為 (integer) 1,否則將為 (integer) 0。

Redis 鍵命令

下表列出了一些與鍵相關的基本命令。

序號 命令和描述
1 DEL key

此命令刪除鍵(如果存在)。

2 DUMP key

此命令返回儲存在指定鍵處的值的序列化版本。

3 EXISTS key

此命令檢查鍵是否存在。

4 EXPIRE key seconds

在指定時間後設置鍵的過期時間。

5 EXPIREAT key timestamp

在指定時間後設置鍵的過期時間。這裡時間採用 Unix 時間戳格式。

6 PEXPIRE key milliseconds

以毫秒為單位設定鍵的過期時間。

7 PEXPIREAT key milliseconds-timestamp

以毫秒為單位設定鍵的過期時間,以 Unix 時間戳指定。

8 KEYS pattern

查詢與指定模式匹配的所有鍵。

9 MOVE key db

將鍵移動到另一個數據庫。

10 PERSIST key

刪除鍵的過期時間。

11 PTTL key

以毫秒為單位獲取鍵過期時間的剩餘時間。

12 TTL key

獲取鍵過期時間的剩餘時間。

13 RANDOMKEY

從 Redis 返回一個隨機鍵。

14 RENAME key newkey

更改鍵名。

15 RENAMENX key newkey

重新命名鍵(如果新鍵不存在)。

16 TYPE key

返回儲存在鍵中的值的型別。

Redis - 字串

Redis 字串命令用於管理 Redis 中的字串值。以下是使用 Redis 字串命令的語法。

語法

redis 127.0.0.1:6379> COMMAND KEY_NAME 

示例

redis 127.0.0.1:6379> SET tutorialspoint redis 
OK 
redis 127.0.0.1:6379> GET tutorialspoint 
"redis" 

在上面的示例中,SETGET 是命令,而 tutorialspoint 是鍵。

Redis 字串命令

下表列出了一些管理 Redis 中字串的基本命令。

序號 命令和描述
1 SET key value

此命令設定指定鍵的值。

2 GET key

獲取鍵的值。

3 GETRANGE key start end

獲取儲存在鍵中的字串的子字串。

4 GETSET key value

設定鍵的字串值並返回其舊值。

5 GETBIT key offset

返回儲存在鍵中的字串值中偏移量處的位元值。

6 MGET key1 [key2..]

獲取所有給定鍵的值

7 SETBIT key offset value

設定或清除儲存在鍵中的字串值中偏移量處的位元位

8 SETEX key seconds value

設定鍵的值及其過期時間

9 SETNX key value

僅當鍵不存在時設定鍵的值

10 SETRANGE key offset value

覆蓋儲存在鍵中的字串從指定偏移量開始的部分

11 STRLEN key

獲取儲存在鍵中的值的長度

12 MSET key value [key value ...]

將多個鍵設定為多個值

13 MSETNX key value [key value ...]

僅當所有鍵都不存在時,將多個鍵設定為多個值

14 PSETEX key milliseconds value

設定鍵的值和以毫秒為單位的過期時間

15 INCR key

將鍵的整數值加1

16 INCRBY key increment

將鍵的整數值增加指定數量

17 INCRBYFLOAT key increment

將鍵的浮點值增加指定數量

18 DECR key

將鍵的整數值減1

19 DECRBY key decrement

將鍵的整數值減少指定數量

20 APPEND key value

將值追加到鍵

Redis - 雜湊

Redis 雜湊是字串欄位和字串值之間的對映。因此,它們是表示物件的完美資料型別。

在 Redis 中,每個雜湊可以儲存超過 40 億個欄位-值對。

示例

redis 127.0.0.1:6379> HMSET tutorialspoint name "redis tutorial" 
description "redis basic commands for caching" likes 20 visitors 23000 
OK 
redis 127.0.0.1:6379> HGETALL tutorialspoint  
1) "name" 
2) "redis tutorial" 
3) "description" 
4) "redis basic commands for caching" 
5) "likes" 
6) "20" 
7) "visitors" 
8) "23000"

在上面的示例中,我們已將 Redis 教程詳細資訊(名稱、描述、喜歡、訪問者)設定為名為“tutorialspoint”的雜湊中。

Redis 雜湊命令

下表列出了一些與雜湊相關的基本命令。

序號 命令和描述
1 HDEL key field2 [field2]

刪除一個或多個雜湊欄位。

2 HEXISTS key field

確定雜湊欄位是否存在。

3 HGET key field

獲取儲存在指定鍵處的雜湊欄位的值。

4 HGETALL key

獲取儲存在指定鍵處的雜湊中的所有欄位和值

5 HINCRBY key field increment

將雜湊欄位的整數值增加指定數量

6 HINCRBYFLOAT key field increment

將雜湊欄位的浮點值增加指定數量

7 HKEYS key

獲取雜湊中的所有欄位

8 HLEN key

獲取雜湊中欄位的數量

9 HMGET key field1 [field2]

獲取所有給定雜湊欄位的值

10 HMSET key field1 value1 [field2 value2 ]

將多個雜湊欄位設定為多個值

11 HSET key field value

設定雜湊欄位的字串值

12 HSETNX key field value

僅當欄位不存在時設定雜湊欄位的值

13 HVALS key

獲取雜湊中的所有值

14 HSCAN key cursor [MATCH pattern] [COUNT count]

增量迭代雜湊欄位和關聯的值

Redis - 列表

Redis 列表只是字串列表,按插入順序排序。您可以在 Redis 列表的頭部或尾部新增元素。

列表的最大長度為 232 - 1 個元素(4294967295,每個列表超過 40 億個元素)。

示例

redis 127.0.0.1:6379> LPUSH tutorials redis 
(integer) 1 
redis 127.0.0.1:6379> LPUSH tutorials mongodb 
(integer) 2 
redis 127.0.0.1:6379> LPUSH tutorials mysql 
(integer) 3 
redis 127.0.0.1:6379> LRANGE tutorials 0 10  
1) "mysql" 
2) "mongodb" 
3) "redis"

在上面的示例中,三個值由命令LPUSH插入到名為“tutorials”的 Redis 列表中。

Redis 列表命令

下表列出了一些與列表相關的基本命令。

序號 命令和描述
1 BLPOP key1 [key2 ] timeout

移除並獲取列表中的第一個元素,或者阻塞直到有元素可用

2 BRPOP key1 [key2 ] timeout

移除並獲取列表中的最後一個元素,或者阻塞直到有元素可用

3 BRPOPLPUSH source destination timeout

從列表中彈出值,將其推送到另一個列表並返回它;或者阻塞直到有元素可用

4 LINDEX key index

根據索引獲取列表中的元素

5 LINSERT key BEFORE|AFTER pivot value

在列表中的另一個元素之前或之後插入元素

6 LLEN key

獲取列表的長度

7 LPOP key

移除並獲取列表中的第一個元素

8 LPUSH key value1 [value2]

在列表的開頭新增一個或多個值

9 LPUSHX key value

僅當列表存在時,在列表的開頭新增值

10 LRANGE key start stop

獲取列表中的一段元素

11 LREM key count value

從列表中移除元素

12 LSET key index value

根據索引設定列表中元素的值

13 LTRIM key start stop

將列表修剪到指定範圍

14 RPOP key

移除並獲取列表中的最後一個元素

15 RPOPLPUSH source destination

移除列表中的最後一個元素,將其追加到另一個列表並返回它

16 RPUSH key value1 [value2]

在列表的末尾新增一個或多個值

17 RPUSHX key value

僅當列表存在時,在列表的末尾新增值

Redis - 集合

Redis 集合是唯一字串的無序集合。唯一意味著集合不允許在鍵中重複資料。

在 Redis 集合中,新增、刪除和測試成員是否存在的時間複雜度為 O(1)(無論集合中包含多少元素,時間都是恆定的)。列表的最大長度為 232 - 1 個元素(4294967295,每個集合超過 40 億個元素)。

示例

redis 127.0.0.1:6379> SADD tutorials redis 
(integer) 1 
redis 127.0.0.1:6379> SADD tutorials mongodb 
(integer) 1 
redis 127.0.0.1:6379> SADD tutorials mysql 
(integer) 1 
redis 127.0.0.1:6379> SADD tutorials mysql 
(integer) 0 
redis 127.0.0.1:6379> SMEMBERS tutorials  
1) "mysql" 
2) "mongodb" 
3) "redis"

在上面的示例中,三個值由命令SADD插入到名為“tutorials”的 Redis 集合中。

Redis 集合命令

下表列出了一些與集合相關的基本命令。

序號 命令和描述
1 SADD key member1 [member2]

向集合中新增一個或多個成員

2 SCARD key

獲取集合中成員的數量

3 SDIFF key1 [key2]

多個集合的差集

4 SDIFFSTORE destination key1 [key2]

多個集合的差集,並將結果集合儲存到一個鍵中

5 SINTER key1 [key2]

多個集合的交集

6 SINTERSTORE destination key1 [key2]

多個集合的交集,並將結果集合儲存到一個鍵中

7 SISMEMBER key member

確定給定值是否是集合的成員

8 SMEMBERS key

獲取集合中的所有成員

9 SMOVE source destination member

將成員從一個集合移動到另一個集合

10 SPOP key

移除並返回集合中的一個隨機成員

11 SRANDMEMBER key [count]

獲取集合中的一個或多個隨機成員

12 SREM key member1 [member2]

從集合中移除一個或多個成員

13 SUNION key1 [key2]

多個集合的並集

14 SUNIONSTORE destination key1 [key2]

多個集合的並集,並將結果集合儲存到一個鍵中

15 SSCAN key cursor [MATCH pattern] [COUNT count]

增量迭代集合元素

Redis - 有序集合

Redis 有序集合類似於 Redis 集合,具有儲存在集合中的值的唯一特性。不同之處在於,有序集合的每個成員都與一個分數相關聯,該分數用於按順序對有序集合進行排序,從小到大的分數。

在 Redis 有序集合中,新增、刪除和測試成員是否存在的時間複雜度為 O(1)(無論集合中包含多少元素,時間都是恆定的)。列表的最大長度為 232 - 1 個元素(4294967295,每個集合超過 40 億個元素)。

示例

redis 127.0.0.1:6379> ZADD tutorials 1 redis 
(integer) 1 
redis 127.0.0.1:6379> ZADD tutorials 2 mongodb 
(integer) 1 
redis 127.0.0.1:6379> ZADD tutorials 3 mysql 
(integer) 1 
redis 127.0.0.1:6379> ZADD tutorials 3 mysql 
(integer) 0 
redis 127.0.0.1:6379> ZADD tutorials 4 mysql 
(integer) 0 
redis 127.0.0.1:6379> ZRANGE tutorials 0 10 WITHSCORES  
1) "redis" 
2) "1" 
3) "mongodb" 
4) "2" 
5) "mysql" 
6) "4" 

在上面的示例中,三個值及其分數由命令ZADD插入到名為“tutorials”的 Redis 有序集合中。

Redis 有序集合命令

下表列出了一些與有序集合相關的基本命令。

序號 命令和描述
1 ZADD key score1 member1 [score2 member2]

向有序集合中新增一個或多個成員,或者如果成員已存在則更新其分數

2 ZCARD key

獲取有序集合中成員的數量

3 ZCOUNT key min max

計算有序集合中分數在給定值範圍內的成員數量

4 ZINCRBY key increment member

將有序集合中成員的分數增加指定數量

5 ZINTERSTORE destination numkeys key [key ...]

多個有序集合的交集,並將結果有序集合儲存到一個新的鍵中

6 ZLEXCOUNT key min max

計算有序集合中在給定字典順序範圍內的成員數量

7 ZRANGE key start stop [WITHSCORES]

根據索引返回有序集合中的一段成員

8 ZRANGEBYLEX key min max [LIMIT offset count]

根據字典順序範圍返回有序集合中的一段成員

9 ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]

根據分數範圍返回有序集合中的一段成員

10 ZRANK key member

確定成員在有序集合中的索引

11 ZREM key member [member ...]

從有序集合中移除一個或多個成員

12 ZREMRANGEBYLEX key min max

移除有序集合中在給定字典順序範圍內的所有成員

13 ZREMRANGEBYRANK key start stop

移除有序集合中在給定索引範圍內的所有成員

14 ZREMRANGEBYSCORE key min max

移除有序集合中在給定分數範圍內的所有成員

15 ZREVRANGE key start stop [WITHSCORES]

根據索引返回有序集合中的一段成員,分數從高到低排序

16 ZREVRANGEBYSCORE key max min [WITHSCORES]

根據分數範圍返回有序集合中的一段成員,分數從高到低排序

17 ZREVRANK key member

確定成員在有序集合中的索引,分數從高到低排序

18 ZSCORE key member

獲取與有序集合中給定成員關聯的分數

19 ZUNIONSTORE destination numkeys key [key ...]

多個有序集合的並集,並將結果有序集合儲存到一個新的鍵中

20 ZSCAN key cursor [MATCH pattern] [COUNT count]

增量迭代有序集合元素和關聯的分數

Redis - HyperLogLog

Redis HyperLogLog 是一種演算法,它使用隨機化來提供集合中唯一元素數量的近似值,僅使用恆定且少量記憶體。

即使使用非常少的記憶體(每個鍵約 12 千位元組,標準誤差為 0.81%),HyperLogLog 也可以提供集合基數的非常好的近似值。您可以計數的專案數量沒有限制,除非您接近 264 個專案。

示例

以下示例說明了 Redis HyperLogLog 的工作原理。

redis 127.0.0.1:6379> PFADD tutorials "redis"  
1) (integer) 1  
redis 127.0.0.1:6379> PFADD tutorials "mongodb"  
1) (integer) 1  
redis 127.0.0.1:6379> PFADD tutorials "mysql"  
1) (integer) 1  
redis 127.0.0.1:6379> PFCOUNT tutorials  
(integer) 3 

Redis HyperLogLog 命令

下表列出了一些與 Redis HyperLogLog 相關的基本命令。

序號 命令和描述
1 PFADD key element [element ...]

將指定的元素新增到指定的 HyperLogLog 中。

2 PFCOUNT key [key ...]

返回 HyperLogLog 在鍵處觀察到的集合的近似基數。

3 PFMERGE destkey sourcekey [sourcekey ...]

將 N 個不同的 HyperLogLog 合併到一箇中。

Redis - 釋出訂閱

Redis 釋出/訂閱實現了訊息系統,其中傳送者(在 redis 術語中稱為釋出者)傳送訊息,而接收者(訂閱者)接收訊息。訊息傳遞的連結稱為通道

在 Redis 中,客戶端可以訂閱任意數量的通道。

示例

以下示例解釋了釋出訂閱的概念是如何工作的。在以下示例中,一個客戶端訂閱了一個名為“redisChat”的頻道。

redis 127.0.0.1:6379> SUBSCRIBE redisChat  
Reading messages... (press Ctrl-C to quit) 
1) "subscribe" 
2) "redisChat" 
3) (integer) 1 

現在,兩個客戶端正在同一個名為“redisChat”的頻道上釋出訊息,而上面訂閱的客戶端正在接收訊息。

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 tutorials point"  
(integer) 1   
1) "message" 
2) "redisChat" 
3) "Redis is a great caching technique" 
1) "message" 
2) "redisChat" 
3) "Learn redis by tutorials point" 

Redis PubSub 命令

下表列出了一些與 Redis Pub/Sub 相關的基本命令。

序號 命令和描述
1 PSUBSCRIBE pattern [pattern ...]

訂閱與給定模式匹配的頻道。

2 PUBSUB subcommand [argument [argument ...]]

告知 Pub/Sub 系統的狀態。例如,哪些客戶端在伺服器上處於活動狀態。

3 PUBLISH channel message

向頻道釋出訊息。

4 PUNSUBSCRIBE [pattern [pattern ...]]

停止監聽釋出到與給定模式匹配的頻道的訊息。

5 SUBSCRIBE channel [channel ...]

監聽釋出到給定頻道的訊息。

6 UNSUBSCRIBE [channel [channel ...]]

停止監聽釋出到給定頻道的訊息。

Redis - 事務

Redis 事務允許在一個步驟中執行一組命令。以下是事務的兩個屬性。

  • 事務中的所有命令都按順序作為一個獨立的操作執行。另一個客戶端發出的請求不可能在 Redis 事務執行的中間被處理。

  • Redis 事務也是原子的。原子性意味著要麼所有命令都被處理,要麼都不被處理。

示例

Redis 事務由命令 **MULTI** 啟動,然後您需要傳遞一個應該在事務中執行的命令列表,之後整個事務由 **EXEC** 命令執行。

redis 127.0.0.1:6379> MULTI 
OK 
List of commands here 
redis 127.0.0.1:6379> EXEC

示例

以下示例說明了如何啟動和執行 Redis 事務。

redis 127.0.0.1:6379> MULTI 
OK 
redis 127.0.0.1:6379> SET tutorial redis 
QUEUED 
redis 127.0.0.1:6379> GET tutorial 
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 事務命令

下表顯示了一些與 Redis 事務相關的基本命令。

序號 命令和描述
1 DISCARD

丟棄在 MULTI 之後發出的所有命令

2 EXEC

執行在 MULTI 之後發出的所有命令

3 MULTI

標記事務塊的開始

4 UNWATCH

忘記所有被監視的鍵

5 WATCH key [key ...]

監視給定的鍵以確定 MULTI/EXEC 塊的執行

Redis - 指令碼

Redis 指令碼用於使用 Lua 直譯器評估指令碼。它從 2.6.0 版開始內置於 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 指令碼相關的基本命令。

序號 命令和描述
1 EVAL script numkeys key [key ...] arg [arg ...]

執行 Lua 指令碼。

2 EVALSHA sha1 numkeys key [key ...] arg [arg ...]

執行 Lua 指令碼。

3 SCRIPT EXISTS script [script ...]

檢查指令碼在指令碼快取中是否存在。

4 SCRIPT FLUSH

從指令碼快取中刪除所有指令碼。

5 SCRIPT KILL

殺死當前正在執行的指令碼。

6 SCRIPT LOAD script

將指定的 Lua 指令碼載入到指令碼快取中。

Redis - 連線

Redis 連線命令基本上用於管理客戶端與 Redis 伺服器的連線。

示例

以下示例說明了客戶端如何向 Redis 伺服器進行身份驗證以及如何檢查伺服器是否正在執行。

redis 127.0.0.1:6379> AUTH "password" 
OK 
redis 127.0.0.1:6379> PING 
PONG 

Redis 連線命令

下表列出了一些與 Redis 連線相關的基本命令。

序號 命令和描述
1 AUTH password

使用給定的密碼對伺服器進行身份驗證

2 ECHO message

列印給定的字串

3 PING

檢查伺服器是否正在執行

4 QUIT

關閉當前連線

5 SELECT index

更改當前連線所選的資料庫

Redis - 伺服器

Redis 伺服器命令基本上用於管理 Redis 伺服器。

示例

以下示例說明了我們如何獲取有關伺服器的所有統計資訊和資訊。

redis 127.0.0.1:6379> INFO  

# Server 
redis_version:2.8.13 
redis_git_sha1:00000000 
redis_git_dirty:0 
redis_build_id:c2238b38b1edb0e2 
redis_mode:standalone 
os:Linux 3.5.0-48-generic x86_64 
arch_bits:64 
multiplexing_api:epoll 
gcc_version:4.7.2 
process_id:3856 
run_id:0e61abd297771de3fe812a3c21027732ac9f41fe 
tcp_port:6379 
uptime_in_seconds:11554 
uptime_in_days:0 hz:10 
lru_clock:16651447 
config_file:  

# Clients 
connected_clients:1
client_longest_output_list:0 
client_biggest_input_buf:0 
blocked_clients:0  

# Memory 
used_memory:589016 
used_memory_human:575.21K 
used_memory_rss:2461696 
used_memory_peak:667312 
used_memory_peak_human:651.67K 
used_memory_lua:33792 
mem_fragmentation_ratio:4.18 
mem_allocator:jemalloc-3.6.0  

# Persistence 
loading:0 
rdb_changes_since_last_save:3 
rdb_bgsave_in_progress:0 
rdb_last_save_time:1409158561 
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 
aof_last_write_status:ok  

# Stats 
total_connections_received:24 
total_commands_processed:294 
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:41
keyspace_misses:82 
pubsub_channels:0 
pubsub_patterns:0 
latest_fork_usec:264  

# 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:10.49 
used_cpu_user:4.96 
used_cpu_sys_children:0.00 
used_cpu_user_children:0.01  

# Keyspace 
db0:keys = 94,expires = 1,avg_ttl = 41638810 
db1:keys = 1,expires = 0,avg_ttl = 0 
db3:keys = 1,expires = 0,avg_ttl = 0 

Redis 伺服器命令

下表列出了一些與 Redis 伺服器相關的基本命令。

序號 命令和描述
1 BGREWRITEAOF

非同步重寫追加僅檔案

2 BGSAVE

非同步將資料集儲存到磁碟

3 CLIENT KILL [ip:port] [ID client-id]

殺死客戶端的連線

4 CLIENT LIST

獲取客戶端連線到伺服器的列表

5 CLIENT GETNAME

獲取當前連線的名稱

6 CLIENT PAUSE timeout

停止處理來自客戶端的命令,持續指定時間

7 CLIENT SETNAME connection-name

設定當前連線名稱

8 CLUSTER SLOTS

獲取叢集槽到節點對映的陣列

9 COMMAND

獲取 Redis 命令詳細資訊的陣列

10 COMMAND COUNT

獲取 Redis 命令的總數

11 COMMAND GETKEYS

根據完整的 Redis 命令提取鍵

12 BGSAVE

非同步將資料集儲存到磁碟

13 COMMAND INFO command-name [command-name ...]

獲取特定 Redis 命令詳細資訊的陣列

14 CONFIG GET parameter

獲取配置引數的值

15 CONFIG REWRITE

使用記憶體中的配置重寫配置檔案

16 CONFIG SET parameter value

將配置引數設定為給定值

17 CONFIG RESETSTAT

重置 INFO 返回的統計資訊

18 DBSIZE

返回所選資料庫中的鍵的數量

19 DEBUG OBJECT key

獲取有關鍵的除錯資訊

20 DEBUG SEGFAULT

使伺服器崩潰

21 FLUSHALL

從所有資料庫中刪除所有鍵

22 FLUSHDB

從當前資料庫中刪除所有鍵

23 INFO [section]

獲取有關伺服器的資訊和統計資訊

24 LASTSAVE

獲取上次成功儲存到磁碟的 UNIX 時間戳

25 MONITOR

即時監聽伺服器接收到的所有請求

26 ROLE

返回例項在複製上下文中的角色

27 SAVE

同步將資料集儲存到磁碟

28 SHUTDOWN [NOSAVE] [SAVE]

同步將資料集儲存到磁碟,然後關閉伺服器

29 SLAVEOF host port

使伺服器成為另一個例項的從屬伺服器,或將其提升為主伺服器

30 SLOWLOG subcommand [argument]

管理 Redis 慢查詢日誌

31 SYNC

用於複製的命令

32 TIME

返回當前伺服器時間

Redis - 備份

Redis **SAVE** 命令用於建立當前 Redis 資料庫的備份。

語法

以下是 redis **SAVE** 命令的基本語法。

127.0.0.1:6379> SAVE 

示例

以下示例建立當前資料庫的備份。

127.0.0.1:6379> SAVE  
OK 

此命令將在您的 Redis 目錄中建立一個 **dump.rdb** 檔案。

恢復 Redis 資料

要恢復 Redis 資料,請將 Redis 備份檔案 (dump.rdb) 移動到您的 Redis 目錄並啟動伺服器。要獲取您的 Redis 目錄,請使用 Redis 的 **CONFIG** 命令,如下所示。

127.0.0.1:6379> CONFIG get dir  
1) "dir" 
2) "/user/tutorialspoint/redis-2.8.13/src" 

在上述命令的輸出中,** /user/tutorialspoint/redis-2.8.13/src ** 是 Redis 伺服器安裝的目錄。

Bgsave

要建立 Redis 備份,還可以使用備用命令 **BGSAVE**。此命令將啟動備份過程並在後臺執行。

示例

127.0.0.1:6379> BGSAVE  
Background saving started

Redis - 安全

Redis 資料庫可以被保護,以便任何建立連線的客戶端都需要在執行命令之前進行身份驗證。要保護 Redis,您需要在配置檔案中設定密碼。

示例

以下示例顯示了保護 Redis 例項的步驟。

127.0.0.1:6379> CONFIG get requirepass 
1) "requirepass" 
2) "" 

預設情況下,此屬性為空,這意味著未為此例項設定密碼。您可以透過執行以下命令來更改此屬性。

127.0.0.1:6379> CONFIG set requirepass "tutorialspoint" 
OK 
127.0.0.1:6379> CONFIG get requirepass 
1) "requirepass" 
2) "tutorialspoint" 

設定密碼後,如果任何客戶端在未進行身份驗證的情況下執行命令,則會返回 **(error) NOAUTH Authentication required.** 錯誤。因此,客戶端需要使用 **AUTH** 命令進行身份驗證。

語法

以下是 **AUTH** 命令的基本語法。

127.0.0.1:6379> AUTH password 

示例

127.0.0.1:6379> AUTH "tutorialspoint" 
OK 
127.0.0.1:6379> SET mykey "Test value" 
OK 
127.0.0.1:6379> GET mykey 
"Test value"

Redis - 基準測試

Redis 基準測試是用於透過同時執行 n 個命令來檢查 Redis 效能的實用程式。

語法

以下是 Redis 基準測試的基本語法。

redis-benchmark [option] [option value] 

示例

以下示例透過呼叫 100000 個命令來檢查 Redis。

redis-benchmark -n 100000  

PING_INLINE: 141043.72 requests per second 
PING_BULK: 142857.14 requests per second 
SET: 141442.72 requests per second 
GET: 145348.83 requests per second 
INCR: 137362.64 requests per second 
LPUSH: 145348.83 requests per second 
LPOP: 146198.83 requests per second 
SADD: 146198.83 requests per second 
SPOP: 149253.73 requests per second 
LPUSH (needed to benchmark LRANGE): 148588.42 requests per second 
LRANGE_100 (first 100 elements): 58411.21 requests per second 
LRANGE_300 (first 300 elements): 21195.42 requests per second 
LRANGE_500 (first 450 elements): 14539.11 requests per second 
LRANGE_600 (first 600 elements): 10504.20 requests per second 
MSET (10 keys): 93283.58 requests per second 

以下是 Redis 基準測試中可用選項的列表。

序號 選項 描述 預設值
1 -h 指定伺服器主機名 127.0.0.1
2 -p 指定伺服器埠 6379
3 -s 指定伺服器套接字
4 -c 指定並行連線數 50
5 -n 指定請求總數 10000
6 -d 指定 SET/GET 值的資料大小(以位元組為單位) 2
7 -k 1=保持活動,0=重新連線 1
8 -r 對 SET/GET/INCR 使用隨機鍵,對 SADD 使用隨機值
9 -p 管道 <numreq> 個請求 1
10 -h 指定伺服器主機名
11 -q 強制 Redis 靜默。僅顯示查詢/秒值
12 --csv 以 CSV 格式輸出
13 -l 生成迴圈,永遠執行測試
14 -t 僅執行以逗號分隔的測試列表
15 -I 空閒模式。只打開 N 個空閒連線並等待

示例

以下示例顯示了 Redis 基準測試實用程式中的多個用法選項。

redis-benchmark -h 127.0.0.1 -p 6379 -t set,lpush -n 100000 -q  

SET: 146198.83 requests per second 
LPUSH: 145560.41 requests per second 

Redis - 客戶端連線

Redis 在配置的監聽 TCP 埠和啟用的 Unix 套接字上接受客戶端的連線。當接受新的客戶端連線時,將執行以下操作:

  • 客戶端套接字被置於非阻塞狀態,因為 Redis 使用多路複用和非阻塞 I/O。

  • TCP_NODELAY 選項被設定以確保我們的連線沒有延遲。

  • 建立可讀檔案事件,以便 Redis 能夠在套接字上可讀新資料時立即收集客戶端查詢。

最大客戶端數

在 Redis 配置 (redis.conf) 中,有一個名為 **maxclients** 的屬性,它描述了可以連線到 Redis 的最大客戶端數。

以下是命令的基本語法。

config get maxclients  

1) "maxclients" 
2) "10000" 

預設情況下,此屬性設定為 10000(取決於作業系統的最大檔案描述符限制),但您可以更改此屬性。

示例

在以下示例中,我們在啟動伺服器時將最大客戶端數設定為 100000。

redis-server --maxclients 100000 

客戶端命令

序號 命令 描述
1 CLIENT LIST 返回連線到 Redis 伺服器的客戶端列表
2 CLIENT SETNAME 為當前連線分配一個名稱

3 CLIENT GETNAME 返回當前連線的名稱,該名稱由 CLIENT SETNAME 設定。
4 CLIENT PAUSE 這是一個連線控制命令,可以暫停所有 Redis 客戶端指定的時間(以毫秒為單位)。
5 CLIENT KILL 此命令關閉給定的客戶端連線。

Redis - 管道

Redis 是一個 TCP 伺服器,支援請求/響應協議。在 Redis 中,請求透過以下步驟完成:

  • 客戶端向伺服器傳送查詢,並通常以阻塞方式從套接字讀取伺服器響應。

  • 伺服器處理命令並將響應傳送回客戶端。

流水線的含義

流水線的基本含義是,客戶端可以向伺服器傳送多個請求,而無需等待回覆,最後一步讀取所有回覆。

示例

要檢查 Redis 流水線,只需啟動 Redis 例項並在終端中鍵入以下命令。

$(echo -en "PING\r\n SET tutorial redis\r\nGET tutorial\r\nINCR 
visitor\r\nINCR visitor\r\nINCR visitor\r\n"; sleep 10) | nc localhost 6379  
+PONG 
+OK 
redis 
:1 
:2 
:3 

在上面的示例中,我們將使用 **PING** 命令檢查 Redis 連線。我們設定了一個名為 **tutorial** 的字串,其值為 **redis**。稍後,我們獲取該鍵的值並三次遞增訪問者數量。在結果中,我們可以看到所有命令都一次提交給 Redis,Redis 一步輸出所有命令的結果。

流水線的優勢

此技術的優勢在於協議效能得到了極大的提升。流水線帶來的加速效果從本地連線的五倍到慢速網際網路連線的至少一百倍不等。

Redis - 分割槽

分割槽是指將資料拆分為多個 Redis 例項的過程,以便每個例項僅包含鍵的子集。

分割槽的優勢

  • 它允許使用許多計算機記憶體總和來建立更大的資料庫。如果沒有分割槽,則受限於單個計算機可以支援的記憶體量。

  • 它允許將計算能力擴充套件到多個核心和多臺計算機,並將網路頻寬擴充套件到多臺計算機和網路介面卡。

分割槽的缺點

  • 通常不支援涉及多個鍵的操作。例如,如果兩個集合儲存在對映到不同 Redis 例項的鍵中,則無法執行這兩個集合的交集。

  • 無法使用涉及多個鍵的 Redis 事務。

  • 分割槽粒度是鍵,因此無法對具有單個巨大鍵(例如非常大的有序集合)的資料集進行分片。

  • 使用分割槽時,資料處理會變得更加複雜。例如,您必須處理多個 RDB/AOF 檔案,並且要獲取資料的備份,您需要聚合來自多個例項和主機的永續性檔案。

  • 新增和刪除容量可能很複雜。例如,Redis 叢集主要支援資料透明重新平衡,並能夠在執行時新增和刪除節點。但是,其他系統(如客戶端分割槽和代理)不支援此功能。一種稱為 **預分片** 的技術在這方面有所幫助。

分割槽的型別

Redis 中提供了兩種分割槽型別。假設我們有四個 Redis 例項 R0、R1、R2、R3 以及許多表示使用者的鍵,如 user:1、user:2 等。

範圍分割槽

範圍分割槽是透過將物件的範圍對映到特定的 Redis 例項來實現的。假設在我們的示例中,ID 為 0 到 10000 的使用者將進入例項 R0,而 ID 為 10001 到 20000 的使用者將進入例項 R1,依此類推。

雜湊分割槽

在這種型別的分割槽中,使用雜湊函式(例如模數函式)將鍵轉換為數字,然後將資料儲存在不同的 Redis 例項中。

Redis - Java

在 Java 程式中開始使用 Redis 之前,您需要確保機器上已安裝 Redis Java 驅動程式和 Java。您可以檢視我們的 Java 教程,瞭解如何在機器上安裝 Java。

安裝

現在,讓我們看看如何設定 Redis Java 驅動程式。

  • 您需要從路徑 下載 jedis.jar 下載 jar 包。請確保下載最新版本。

  • 您需要將 **jedis.jar** 包含到您的類路徑中。

連線到 Redis 伺服器

import redis.clients.jedis.Jedis; 

public class RedisJava { 
   public static void main(String[] args) { 
      //Connecting to Redis server on localhost 
      Jedis jedis = new Jedis("localhost"); 
      System.out.println("Connection to server sucessfully"); 
      //check whether server is running or not 
      System.out.println("Server is running: "+jedis.ping()); 
   } 
} 

現在,讓我們編譯並執行上述程式以測試與 Redis 伺服器的連線。您可以根據需要更改路徑。我們假設當前版本的 **jedis.jar** 位於當前路徑中。

$javac RedisJava.java 
$java RedisJava 
Connection to server sucessfully 
Server is running: PONG

Redis Java 字串示例

import redis.clients.jedis.Jedis; 

public class RedisStringJava { 
   public static void main(String[] args) { 
      //Connecting to Redis server on localhost 
      Jedis jedis = new Jedis("localhost"); 
      System.out.println("Connection to server sucessfully"); 
      //set the data in redis string 
      jedis.set("tutorial-name", "Redis tutorial"); 
      // Get the stored data and print it 
      System.out.println("Stored string in redis:: "+ jedis.get("tutorialname")); 
   } 
}

現在,讓我們編譯並執行上述程式。

$javac RedisStringJava.java 
$java RedisStringJava 
Connection to server sucessfully 
Stored string in redis:: Redis tutorial 

Redis Java 列表示例

import redis.clients.jedis.Jedis; 

public class RedisListJava { 
   public static void main(String[] args) { 
   
      //Connecting to Redis server on localhost 
      Jedis jedis = new Jedis("localhost"); 
      System.out.println("Connection to server sucessfully"); 
      
      //store data in redis list 
      jedis.lpush("tutorial-list", "Redis"); 
      jedis.lpush("tutorial-list", "Mongodb"); 
      jedis.lpush("tutorial-list", "Mysql"); 
      // Get the stored data and print it 
      List<String> list = jedis.lrange("tutorial-list", 0 ,5); 
      
      for(int i = 0; i<list.size(); i++) { 
         System.out.println("Stored string in redis:: "+list.get(i)); 
      } 
   } 
} 

現在,讓我們編譯並執行上述程式。

$javac RedisListJava.java 
$java RedisListJava 
Connection to server sucessfully 
Stored string in redis:: Redis 
Stored string in redis:: Mongodb 
Stored string in redis:: Mysql

Redis Java 鍵示例

import redis.clients.jedis.Jedis; 

public class RedisKeyJava { 
   public static void main(String[] args) { 
   
      //Connecting to Redis server on localhost 
      Jedis jedis = new Jedis("localhost"); 
      System.out.println("Connection to server sucessfully"); 
      //store data in redis list 
      // Get the stored data and print it 
      List<String> list = jedis.keys("*"); 
      
      for(int i = 0; i<list.size(); i++) { 
         System.out.println("List of stored keys:: "+list.get(i)); 
      } 
   } 
}

現在,讓我們編譯並執行上述程式。

$javac RedisKeyJava.java 
$java RedisKeyJava 
Connection to server sucessfully 
List of stored keys:: tutorial-name 
List of stored keys:: tutorial-list 

Redis - PHP

在 PHP 程式中開始使用 Redis 之前,您需要確保機器上已安裝 Redis PHP 驅動程式和 PHP。您可以檢視 PHP 教程,瞭解如何在機器上安裝 PHP。

安裝

現在,讓我們檢查如何設定 Redis PHP 驅動程式。

您需要從 github 倉庫 https://github.com/nicolasff/phpredis 下載 phpredis。下載完成後,將檔案解壓到 phpredis 目錄。在 Ubuntu 上,安裝以下擴充套件。

cd phpredis 
sudo phpize 
sudo ./configure 
sudo make 
sudo make install 

現在,將“modules”資料夾的內容複製並貼上到 PHP 擴充套件目錄中,並在 **php.ini** 中新增以下行。

extension = redis.so

現在,您的 Redis PHP 安裝已完成。

連線到 Redis 伺服器

<?php 
   //Connecting to Redis server on localhost 
   $redis = new Redis(); 
   $redis->connect('127.0.0.1', 6379); 
   echo "Connection to server sucessfully"; 
   //check whether server is running or not 
   echo "Server is running: ".$redis->ping(); 
?>

程式執行後,將產生以下結果。

Connection to server sucessfully 
Server is running: PONG 

Redis PHP 字串示例

<?php 
   //Connecting to Redis server on localhost 
   $redis = new Redis(); 
   $redis->connect('127.0.0.1', 6379); 
   echo "Connection to server sucessfully"; 
   //set the data in redis string 
   $redis->set("tutorial-name", "Redis tutorial"); 
   // Get the stored data and print it 
   echo "Stored string in redis:: " .$redis→get("tutorial-name"); 
?>

執行上述程式後,將產生以下結果。

Connection to server sucessfully 
Stored string in redis:: Redis tutorial 

Redis php 列表示例

<?php 
   //Connecting to Redis server on localhost 
   $redis = new Redis(); 
   $redis->connect('127.0.0.1', 6379); 
   echo "Connection to server sucessfully"; 
   //store data in redis list 
   $redis->lpush("tutorial-list", "Redis"); 
   $redis->lpush("tutorial-list", "Mongodb"); 
   $redis->lpush("tutorial-list", "Mysql");  
   
   // Get the stored data and print it 
   $arList = $redis->lrange("tutorial-list", 0 ,5); 
   echo "Stored string in redis:: "; 
   print_r($arList); 
?>

執行上述程式後,將產生以下結果。

Connection to server sucessfully 
Stored string in redis:: 
Redis 
Mongodb 
Mysql 

Redis PHP 鍵示例

<?php 
   //Connecting to Redis server on localhost 
   $redis = new Redis(); 
   $redis->connect('127.0.0.1', 6379); 
   echo "Connection to server sucessfully"; 
   // Get the stored keys and print it 
   $arList = $redis->keys("*"); 
   echo "Stored keys in redis:: " 
   print_r($arList); 
?>

程式執行後,將產生以下結果。

Connection to server sucessfully 
Stored string in redis:: 
tutorial-name 
tutorial-list 
廣告