Redis作為一個高性能的開源鍵值存儲系統,廣泛應用於緩存、排行榜、計數器、實時消息、任務隊列等場景。Redis也是一個非常靈活的數據存儲系統,支持多種數據結構,包括字元串、列表、哈希、集合、有序集合等,同時也支持諸如發布/訂閱、Lua擴展、事務等功能。
一、鍵值對命令
在Redis中,最基本的操作就是獲取或設置某個鍵的值。鍵值對命令由兩部分組成,鍵和值。
1. SET key value [EX seconds] [PX milliseconds] [NX|XX]
設置給定鍵的值,如果鍵不存在則創建新的鍵值對,如果鍵已經存在,則更新其值。此外,SET命令還可以設置過期時間、毫秒級過期時間以及只有在鍵不存在時才執行SET命令。
# 示例:創建新鍵 SET mykey "hello world" # 示例:更新已存在的鍵 SET mykey "goodbye" # 示例:設置過期時間 SET mykey "hello" EX 10 # 示例:設置毫秒級過期時間 SET mykey "hello" PX 10000 # 示例:只有當鍵不存在時才執行SET命令 SET mykey "hello" NX
2. GET key
返回給定鍵的值,如果鍵不存在,則返回nil。
# 示例:獲取鍵值 GET mykey
3. DEL key [key …]
刪除給定鍵及其對應的值。
# 示例:刪除鍵值 DEL mykey
4. EXISTS key
判斷給定鍵是否存在,如果鍵存在,則返回1,否則返回0。
# 示例:判斷鍵是否存在 EXISTS mykey
二、字元串命令
Redis中的字元串命令用於處理字元串類型的值,相比於其他數據存儲系統,Redis的字元串類型支持更多的特性,例如,Redis的字元串類型可以是二進位安全的,即可以包含任意類型的數據,而且支持對字元串類型的值進行原子性的操作。
1. SETEX key seconds value
設置給定鍵的值,並同時設置鍵的過期時間。如果鍵已經存在,則更新其值。此外,SETEX命令還可以設置只有當鍵不存在時才執行SET命令。
# 示例:添加新鍵 SETEX mykey 10 "hello" # 示例:更新已存在的鍵 SETEX mykey 10 "goodbye" # 示例:只有當鍵不存在時才執行SET命令 SETEX mykey 10 "hello" NX
2. MSET key value [key value …]
同時設置多個鍵值對,如果給定的鍵已經存在,則覆蓋原有的值。
# 示例:同時設置多個鍵值對 MSET key1 "hello" key2 "world"
3. MGET key [key …]
返回給定多個鍵的值。
# 示例:獲取多個鍵的值 MGET key1 key2
4. INCR key / INCRBY key increment / DECR key / DECRBY key decrement
對給定鍵的值進行原子性的自增/自減操作,其中DECR命令用於對鍵的值進行自減操作,而DECRBY命令用於對鍵的值進行減去指定數值的操作。
# 示例:自增/自減操作 INCR mykey INCRBY mykey 10 DECR mykey DECRBY mykey 5
三、列表命令
列表命令用於處理列表類型的值,Redis的列表類型非常靈活,支持向列表中添加元素、獲取列表中任意一個位置上的元素、獲取列表中的多個元素、刪除列表中指定元素等操作。
1. LPUSH key value [value …]
往列表的開頭插入一個或多個值。
# 示例:往列表開頭插入多個值 LPUSH mylist "world" "hello"
2. RPUSH key value [value …]
往列表的末尾插入一個或多個值。
# 示例:往列表末尾插入多個值 RPUSH mylist "hello" "world"
3. LINDEX key index / LLEN key
LINDEX用於返回列表中給定位置的元素,而LLEN命令返回列表的長度。
# 示例:獲取列表中任意位置上的元素 LINDEX mylist 0 # 示例:獲取列表長度 LLEN mylist
4. LPOP key / RPOP key
LPOP命令用於移除並返回列表的第一個元素,而RPOP命令用於移除並返回列表的最後一個元素。
# 示例:移除並返回列表的第一個元素 LPOP mylist # 示例:移除並返回列表的最後一個元素 RPOP mylist
5. LRANGE key start stop
返回列表中指定範圍內的元素,其中start和stop表示列表中元素的下標,其中0表示列表的開頭位置。當start和stop的值大於等於列表的長度時,Redis會自動將這兩個值加以截取。
# 示例:獲取列表中的多個元素 LRANGE mylist 0 2
四、哈希命令
哈希命令用於處理哈希類型的值,哈希類型類似於關係型資料庫中的表,通過鍵來對存儲多個鍵值對。
1. HSET key field value / HMSET key field value [field value …]
HSET命令用於為哈希類型的鍵設置欄位和對應的值,而HMSET命令則可以一次性為哈希類型的鍵設置多個欄位和對應的值。
# 示例:為哈希類型鍵創建欄位 HSET myhash field1 "hello" HMSET myhash field2 "world" field3 "redis"
2. HGET key field / HMGET key field [field …]
HGET命令用於獲取哈希類型的鍵指定欄位的值,而HMGET命令則可以獲取哈希類型鍵多個欄位的值。
# 示例:獲取指定欄位的值 HGET myhash field1 # 示例:獲取多個欄位的值 HMGET myhash field1 field2
3. HEXISTS key field
如果給定哈希類型的鍵中存在指定欄位,則返回1,否則返回0。
# 示例:判斷是否存在指定欄位 HEXISTS myhash field1
4. HDEL key field [field …]
刪除給定哈希類型鍵的一個或多個欄位。
# 示例:刪除一個欄位 HDEL myhash field1 # 示例:刪除多個欄位 HDEL myhash field2 field3
五、集合命令
集合命令用於處理集合類型的值,集合類型類似於一個無序的數組,且其中的元素都是唯一的。
1. SADD key member [member …]
SADD命令用於向集合中添加一個或多個元素。
# 示例:向集合中添加元素 SADD myset "hello" "world"
2. SMEMBERS key
SMEMBERS命令用於獲取集合中的所有元素。
# 示例:獲取集合中的所有元素 SMEMBERS myset
3. SISMEMBER key member
如果給定的元素是集合中的成員,則返回1,否則返回0。
# 示例:判斷給定元素是否是集合成員 SISMEMBER myset "hello"
4. SREM key member [member …]
SREM命令用於從集合中刪除一個或多個元素。
# 示例:從集合中刪除元素 SREM myset "hello"
六、有序集合命令
有序集合命令用於處理有序集合類型的值,有序集合類型類似於集合類型,但是其中的元素可以進行排序。Redis中的有序集合是通過將集合中的元素和對應的分數構建一個有序字典來實現的。
1. ZADD key score member [score member …]
ZADD命令用於向有序集合中添加一個或多個元素,其中score用於指定元素的分數。
# 示例:向有序集合中添加元素 ZADD myzset 1 "one" 2 "two"
2. ZRANGE key start stop [WITHSCORES]
ZRANGE命令用於獲取有序集合中下標在給定範圍內的元素,並按照元素分數從小到大排序。如果指定了WITHSCORES選項,則同時返回元素的分數。
# 示例:獲取有序集合中下標在給定範圍內的元素 ZRANGE myzset 0 -1 # 示例:同時返回元素的分數 ZRANGE myzset 0 -1 WITHSCORES
3. ZREVRANGE key start stop [WITHSCORES]
ZREVRANGE命令用於獲取有序集合中下標在給定範圍內的元素,並按照元素分數從大到小排序。如果指定了WITHSCORES選項,則同時返回元素的分數。
# 示例:獲取有序集合中下標在給定範圍內的元素,按照元素分數從大到小排序 ZREVRANGE myzset 0 -1 # 示例:同時返回元素的分數 ZREVRANGE myzset 0 -1 WITHSCORES
4. ZRANK key member / ZREVRANK key member
ZRANK命令用於獲取有序集合中給定元素的下標,其中下標按照元素分數從小到大排序,而ZREVRANK命令則返回下標按照元素分數從大到小排序的結果。
# 示例:獲取有序集合中指定元素的下標 ZRANK myzset "one" # 示例:返回下標按照元素分數從大到小排序的結果 ZREVRANK myzset "one"
5. ZREM key member [member …]
ZREM命令用於從有序集合中刪除一個或多個元素。
# 示例:從有序集合中刪除元素 ZREM myzset "one"
七、發布/訂閱命令
發布/訂閱命令被用於實現消息的一對多廣播。在Redis中,發布者將消息發送到指定的頻道,只有訂閱了該頻道的所有客戶端才能接收到該消息。
1. PUBLISH channel message
PUBLISH命令用於向指定頻道發布一條新消息
原創文章,作者:TNEI,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/131408.html