Redis 是一個非??焖俚膬?nèi)存數(shù)據(jù)存儲系統(tǒng),它可以用作數(shù)據(jù)庫、緩存和消息代理。它支持多種數(shù)據(jù)類型,如字符串、列表、集合、散列和有序集合。
以下是一些 Redis 的基礎(chǔ)命令及其代碼示例的完整詳解。
1. Strings(字符串)
SET key value
:將字符串值 value 關(guān)聯(lián)到 key。如果 key 已經(jīng)持有其他值, SET 就覆寫舊值,無視其類型。
Bashredis> SET mykey "Hello World"
OK
13373832873
GET key
:獲取 key 關(guān)聯(lián)的值。如果 key 不存在,返回 nil。
Bashredis> GET mykey
"Hello World"
2. Lists(列表)
LPUSH key value1 [value2 ...]
:將一個或多個值插入到列表頭部。如果 key 不存在,一個空列表會被創(chuàng)建并執(zhí)行 LPUSH 操作。當(dāng) key 存在但不是列表類型時,返回一個錯誤。
Bashredis> LPUSH mylist "Hello"
(integer) 1
redis> LPUSH mylist "World"
(integer) 2
RPUSH key value1 [value2 ...]
:將一個或多個值插入到列表尾部。如果 key 不存在,一個空列表會被創(chuàng)建并執(zhí)行 RPUSH 操作。當(dāng) key 存在但不是列表類型時,返回一個錯誤。
Bashredis> RPUSH mylist "!"
(integer) 3
LRANGE key start stop
:返回列表中指定區(qū)間內(nèi)的元素,區(qū)間以偏移量 start 和 stop 指定。
Bashredis> LRANGE mylist 0 -1
1) "World"
2) "Hello"
3) "!"
3. Sets(集合)
SADD key member1 [member2 ...]
:向集合添加一個或多個成員。如果成員已經(jīng)是集合的成員,那么添加操作無效。如果 key 不存在,則創(chuàng)建一個只包含指定成員的集合。
Bashredis> SADD myset "Hello"
(integer) 1
redis> SADD myset "World"
(integer) 1
SMEMBERS key
:返回集合中的所有成員。如果集合不存在,返回一個空列表。
Bashredis> SMEMBERS myset
1) "Hello"
2) "World"
4. Hashes(散列)
HSET key field value
:將哈希表 key 中的字段 field 的值設(shè)為 value。如果 key 不存在,一個新的哈希表被創(chuàng)建并進(jìn)行 HSET 操作。如果字段 field 已經(jīng)存在于哈希表中,舊值將被覆蓋。
Bashredis> HSET myhash field1 "Hello"
(integer) 1
redis> HSET myhash field2 "World"
(integer) 1
HGET key field
:獲取存儲在哈希表中指定字段的值。如果指定的字段或鍵不存在,返回一個 nil 值。
Bashredis> HGET myhash field1
"Hello"
這只是 Redis 命令的冰山一角,還有更多的命令和特性等待你去探索和發(fā)現(xiàn)。你可以在 Redis 的官方文檔中找到更詳細(xì)和全面的信息:https://redis.io/commands
5. Sorted Sets(有序集合)
ZADD key score1 member1 [score2 member2 ...]
:將一個或多個成員及其分?jǐn)?shù)添加到有序集合中。如果成員已經(jīng)存在,則更新其分?jǐn)?shù)。如果 key 不存在,則創(chuàng)建一個新的有序集合。
Bashredis> ZADD mysortedset 1 "one"
(integer) 1
redis> ZADD mysortedset 2 "two" 3 "three"
(integer) 2
ZRANGE key start stop [WITHSCORES]
:返回有序集合中指定區(qū)間內(nèi)的成員。默認(rèn)情況下,成員按分?jǐn)?shù)從低到高排序。使用WITHSCORES
選項可以同時返回分?jǐn)?shù)。
Bashredis> ZRANGE mysortedset 0 -1 WITHSCORES
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
6. HyperLogLogs(基數(shù)統(tǒng)計)
PFADD key element [element ...]
:向 HyperLogLog 添加一個或多個元素。如果 key 不存在,則創(chuàng)建一個新的 HyperLogLog。
Bashredis> PFADD myhyperloglog "foo"
(integer) 1
redis> PFADD myhyperloglog "bar" "baz"
(integer) 1
PFCOUNT key [key ...]
:返回給定 HyperLogLog 的基數(shù)估計值。如果有多個 key,則返回它們的并集的基數(shù)估計值。
Bashredis> PFCOUNT myhyperloglog
(integer) 3
7. Pub/Sub(發(fā)布/訂閱)
SUBSCRIBE channel [channel ...]
:訂閱一個或多個頻道,成為這些頻道的訂閱者。
Bashredis> SUBSCRIBE mychannel
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "mychannel"
3) (integer) 1
PUBLISH channel message
:將消息發(fā)布到指定的頻道。
Bashredis> PUBLISH mychannel "Hello, World!"
(integer) 1
8. Scripts(腳本)
EVAL script numkeys key [key ...] arg [arg ...]
:執(zhí)行 Lua 腳本。numkeys
表示傳遞給腳本的鍵的數(shù)量,key
是鍵列表,arg
是參數(shù)列表。
Bashredis> EVAL "return redis.call('set',KEYS[1],ARGV[1])" 1 mykey "Hello Redis"
OK
9. Keys(鍵操作)
DEL key [key ...]
:刪除一個或多個鍵。
Bashredis> SET key1 "value1"
OK
redis> DEL key1
(integer) 1
EXISTS key [key ...]
:檢查一個或多個鍵是否存在。
Bashredis> SET key1 "value1"
OK
redis> EXISTS key1
(integer) 1
TYPE key
:返回鍵所存儲值的類型。
Bashredis> TYPE key1
string
KEYS pattern
:查找所有符合給定模式的鍵。
Bashredis> SET foo1 "bar"
OK
redis> SET foo2 "baz"
OK
redis> KEYS foo*
1) "foo1"
2) "foo2"
10. Connections(連接)
PING
:檢查服務(wù)是否運行正常。
Bashredis> PING
PONG
QUIT
:關(guān)閉當(dāng)前連接。
Bashredis> QUIT
這些命令只是 Redis 提供的功能的一小部分。Redis 提供了極其豐富的功能集,包括事務(wù)、Lua 腳本執(zhí)行、持久化、復(fù)制等,適合各種使用場景。要深入了解 Redis,請閱讀官方文檔或參考相關(guān)的學(xué)習(xí)資源。
10. Transactions(事務(wù))
MULTI
:標(biāo)記事務(wù)塊的開始。EXEC
:執(zhí)行所有事務(wù)塊內(nèi)的命令。DISCARD
:取消事務(wù),放棄執(zhí)行事務(wù)塊內(nèi)的所有命令。
Bashredis> MULTI
OK
redis> SET key1 "value1"
QUEUED
redis> SET key2 "value2"
QUEUED
redis> EXEC
1) OK
2) OK
11. Server(服務(wù)器)
PING
:測試服務(wù)器是否運行正常。
Bashredis> PING
PONG
INFO
:獲取服務(wù)器的信息和統(tǒng)計。
Bashredis> INFO
# 這里會返回大量的服務(wù)器信息
12. Persistence(持久化)
SAVE
:同步保存當(dāng)前數(shù)據(jù)庫到磁盤。BGSAVE
:在后臺異步保存當(dāng)前數(shù)據(jù)庫到磁盤。
Bashredis> BGSAVE
Background saving started
13. Remote Host Connection(遠(yuǎn)程主機(jī)連接)
FLUSHDB
:清空當(dāng)前選中數(shù)據(jù)庫的所有數(shù)據(jù)。FLUSHALL
:清空所有數(shù)據(jù)庫的所有數(shù)據(jù)。
Bashredis> FLUSHDB
OK
14. Configuration(配置)
CONFIG GET parameter
:獲取指定配置參數(shù)的值。CONFIG SET parameter value
:設(shè)置指定配置參數(shù)的值。
Bashredis> CONFIG GET timeout
1) "timeout"
2) "0"
redis> CONFIG SET timeout 30
OK
15. Security(安全)
AUTH password
:使用密碼驗證當(dāng)前連接的用戶。
Bashredis> AUTH mypassword
OK
16. Debugging(調(diào)試)
DEBUG OBJECT key
:獲取關(guān)于給定鍵的調(diào)試信息。
Bashredis> DEBUG OBJECT mykey
# 這里會返回關(guān)于鍵 'mykey' 的調(diào)試信息
17. Connections(連接)
CLIENT LIST
:獲取當(dāng)前連接到服務(wù)器的客戶端列表。
Bashredis> CLIENT LIST
# 這里會返回當(dāng)前所有連接的列表
以上只是 Redis 命令的一個簡短概覽。實際上,Redis 提供了更多高級功能,如 Lua 腳本執(zhí)行、事務(wù)控制、發(fā)布/訂閱、腳本執(zhí)行、內(nèi)存優(yōu)化等。為了全面掌握 Redis,建議參考官方文檔:https://redis.io/commands,并嘗試在實際環(huán)境中使用這些命令。此外,參加在線課程、閱讀相關(guān)書籍和社區(qū)討論也是深化理解和提高技能的好方法。