注:此为苍穹外卖学习笔记
Redis作为高性能的键值数据库,其核心价值来自于丰富的数据结构支持。本文将深入解析字符串(String) 、哈希(Hash)、**列表(List)**三大基础结构的操作命令,通过大量实用案例展现其应用场景。
一、字符串(String)操作命令
字符串是 Redis 中最基础的数据类型,常用于存储文本、数字或二进制数据。
常用命令及示例
-
set key value
设置键值对,支持过期时间(EX
)、不存在时设置(NX
)等选项。 示例:bashset name "john" # 设置 name=john set counter 10 EX 60 # 设置 counter=10,60秒后过期
-
get key
获取键对应的值。 示例:bashget name # 返回 "john"
-
incr key
将键的值加 1(仅限整数)。 示例:bashincr counter # 若原值为 10,操作后变为 11
-
append key value
向字符串尾部追加内容。 示例:bashappend greeting "hello" # 若原值为空,操作后变为 "hello" append greeting " world" # 结果变为 "hello world"
-
mset
/mget
批量设置/获取多个键值对。 示例:bashmset key1 "a" key2 "b" mget key1 key2 # 返回 ["a", "b"]
二、哈希(Hash)操作命令
哈希用于存储对象,适合保存字段-值对(如用户信息)。
常用命令及示例
-
hset key field value
设置哈希中单个或多个字段的值。 示例:bashhset user:1000 name "john" age 30 # 设置 name=john 和 age=30
-
hget key field
获取哈希中指定字段的值。 示例:bashhget user:1000 name # 返回 "john"
-
hgetall key
获取哈希所有字段和值。 示例:bashhgetall user:1000 # 返回 ["name", "john", "age", "30"]
-
hincrby key field increment
对哈希中的数值字段进行增减。 示例:bashhincrby user:1000 age 1 # 将 age 从 30 增加到 31
-
hdel key field
删除哈希中的字段。 示例:bashhdel user:1000 age # 删除 age 字段
三、列表(List)操作命令
列表是双向链表结构,支持在头部或尾部操作元素,常用于队列、栈等场景。
常用命令及示例
-
lpush key element
将元素插入列表头部(左侧)。 示例:bashlpush mylist "a" # 列表变为 ["a"] lpush mylist "b" "c" # 列表变为 ["c", "b", "a"]
-
rpush key element
将元素插入列表尾部(右侧)。 示例:bashrpush mylist "d" # 列表变为 ["c", "b", "a", "d"]
-
lrange key start stop
获取列表中指定范围的元素(索引从 0 开始,-1 表示末尾)。 示例:bashlrange mylist 0 -1 # 返回 ["c", "b", "a", "d"]
-
lpop key
/rpop key
移除并返回列表头部(左侧)或尾部(右侧)的元素。 示例:bashlpop mylist # 返回 "c",列表变为 ["b", "a", "d"] rpop mylist # 返回 "d",列表变为 ["b", "a"]
-
blpop key timeout
阻塞式弹出列表头部元素,若列表为空则等待(超时单位为秒)。 示例:bashblpop tasks 10 # 等待 tasks 列表中的元素,最多等 10 秒
四、应用场景总结
- 字符串:缓存、计数器、分布式锁。
- 哈希:对象存储(用户信息、商品详情)。
- 列表:消息队列、最新消息排行、栈结构。
通过合理选择数据结构,可以高效解决各类实际问题。