
- Redis 基礎
- Redis - 首頁
- Redis - 概述
- Redis - 環境
- Redis - 配置
- Redis - 資料型別
- Redis 命令
- Redis - 命令
- Redis - 鍵
- Redis - 字串
- Redis - 雜湊
- Redis - 列表
- Redis - 集合
- Redis - 有序集合
- Redis - HyperLogLog
- Redis - 釋出訂閱
- Redis - 事務
- Redis - 指令碼
- Redis - 連線
- Redis - 伺服器
- Redis 高階
- Redis - 備份
- Redis - 安全
- Redis - 基準測試
- Redis - 客戶端連線
- Redis - 管道
- Redis - 分割槽
- Redis - Java
- Redis - Php
- Redis 有用資源
- Redis - 快速指南
- Redis - 有用資源
- Redis - 討論
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"
在上面的示例中,SET 和 GET 是 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"
在上面的示例中,SET 和 GET 是命令,而 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 有序集合命令
下表列出了一些與有序集合相關的基本命令。
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