Redis 五种数据类型
TIP
Redis 提供了丰富的数据结构,每种类型都有对应的应用场景。掌握它们可以事半功倍。
String(字符串)
适合存储简单值:缓存对象、计数器、分布式锁。
bash
SET key "value" # 设置值
SETNX key "value" # 不存在才设置
GET key # 获取值
MSET k1 v1 k2 v2 # 批量设置
MGET k1 k2 # 批量获取
INCR counter # 原子递增(适合点赞计数)
DECR counter # 原子递减
INCRBY counter 10 # 增加指定值
SETEX key 60 "value" # 设置值并指定过期时间Hash(哈希)
适合存储对象(类似 Java 的 Map)。
bash
HSET user:1001 name "张三" age 25
HGET user:1001 name
HGETALL user:1001
HMSET user:1002 name "李四" age 30 city "北京"
HINCRBY user:1001 age 1 # 年龄加1
HDEL user:1001 ageList(列表)
适合消息队列、时间线、最新消息等场景。
bash
LPUSH news "消息1" # 从左边插入
RPUSH news "消息2" # 从右边插入
LPOP news # 从左边弹出
RPOP news # 从右边弹出
LRANGE news 0 -1 # 查看所有元素
LLEN news # 获取长度
BRPOP news 5 # 阻塞式弹出(支持超时)Set(集合)
适合标签、去重、共同好友等场景。
bash
SADD tags "java" "python" "go" # 添加
SMEMBERS tags # 查看所有
SISMEMBER tags "java" # 判断是否存在
SINTER set1 set2 # 交集
SUNION set1 set2 # 并集
SDIFF set1 set2 # 差集
SCARD tags # 元素个数Sorted Set(有序集合)
适合排行榜、延时队列、范围查找。
bash
ZADD leaderboard 100 "玩家A" 200 "玩家B" 150 "玩家C"
ZRANGE leaderboard 0 -1 # 升序查看
ZREVRANGE leaderboard 0 -1 # 降序查看(排行榜)
ZRANK leaderboard "玩家A" # 查看排名
ZSCORE leaderboard "玩家A" # 查看分数
ZINCRBY leaderboard 50 "玩家A" # 加分
ZREVRANGE leaderboard 0 2 WITHSCORES # 前三名