注:此為蒼穹外賣學習筆記
Redis作為高性能的鍵值數據庫,其核心價值來自于豐富的數據結構支持。本文將深入解析字符串(String)、哈希(Hash)、**列表(List)**三大基礎結構的操作命令,通過大量實用案例展現其應用場景。
一、字符串(String)操作命令
字符串是 Redis 中最基礎的數據類型,常用于存儲文本、數字或二進制數據。
常用命令及示例
-
set key value
設置鍵值對,支持過期時間(EX
)、不存在時設置(NX
)等選項。 示例:set name "john" # 設置 name=john set counter 10 EX 60 # 設置 counter=10,60秒后過期
-
get key
獲取鍵對應的值。 示例:get name # 返回 "john"
-
incr key
將鍵的值加 1(僅限整數)。 示例:incr counter # 若原值為 10,操作后變為 11
-
append key value
向字符串尾部追加內容。 示例:append greeting "hello" # 若原值為空,操作后變為 "hello" append greeting " world" # 結果變為 "hello world"
-
mset
/mget
批量設置/獲取多個鍵值對。 示例:mset key1 "a" key2 "b" mget key1 key2 # 返回 ["a", "b"]
二、哈希(Hash)操作命令
哈希用于存儲對象,適合保存字段-值對(如用戶信息)。
常用命令及示例
-
hset key field value
設置哈希中單個或多個字段的值。 示例:hset user:1000 name "john" age 30 # 設置 name=john 和 age=30
-
hget key field
獲取哈希中指定字段的值。 示例:hget user:1000 name # 返回 "john"
-
hgetall key
獲取哈希所有字段和值。 示例:hgetall user:1000 # 返回 ["name", "john", "age", "30"]
-
hincrby key field increment
對哈希中的數值字段進行增減。 示例:hincrby user:1000 age 1 # 將 age 從 30 增加到 31
-
hdel key field
刪除哈希中的字段。 示例:hdel user:1000 age # 刪除 age 字段
三、列表(List)操作命令
列表是雙向鏈表結構,支持在頭部或尾部操作元素,常用于隊列、棧等場景。
常用命令及示例
-
lpush key element
將元素插入列表頭部(左側)。 示例:lpush mylist "a" # 列表變為 ["a"] lpush mylist "b" "c" # 列表變為 ["c", "b", "a"]
-
rpush key element
將元素插入列表尾部(右側)。 示例:rpush mylist "d" # 列表變為 ["c", "b", "a", "d"]
-
lrange key start stop
獲取列表中指定范圍的元素(索引從 0 開始,-1 表示末尾)。 示例:lrange mylist 0 -1 # 返回 ["c", "b", "a", "d"]
-
lpop key
/rpop key
移除并返回列表頭部(左側)或尾部(右側)的元素。 示例:lpop mylist # 返回 "c",列表變為 ["b", "a", "d"] rpop mylist # 返回 "d",列表變為 ["b", "a"]
-
blpop key timeout
阻塞式彈出列表頭部元素,若列表為空則等待(超時單位為秒)。 示例:blpop tasks 10 # 等待 tasks 列表中的元素,最多等 10 秒
四、應用場景總結
- 字符串:緩存、計數器、分布式鎖。
- 哈希:對象存儲(用戶信息、商品詳情)。
- 列表:消息隊列、最新消息排行、棧結構。
通過合理選擇數據結構,可以高效解決各類實際問題。