卡飞资源网

专业编程技术资源共享平台

Redis 数据结构以及使用案例(redis基本数据结构及底层实现)

Redis 是一种高性能的键值存储系统,支持多种数据结构,每种数据结构都有特定的使用场景。以下是 Redis 的核心数据结构及其详细使用案例:

Redis 数据结构及使用案例

  • 字符串(String)

存储文本、数字或二进制数据(最大 512MB)。

常用命令

SET key value [EX seconds] # 设置值(带过期时间)

GET key # 获取值

INCR key # 自增数字

DECR key # 自减数字

使用场景

缓存:存储用户信息、页面片段。

计数器:统计访问量、库存数量。

分布式锁:通过 `SET key value NX EX` 实现。

案例:用户访问量统计

SET user:1001:visits 0

INCR user:1001:visits # 访问量+1

GET user:1001:visits # 返回当前访问量


  • 哈希(Hash)

键值对的集合,适合存储对象。

常用命令

HSET key field value # 设置字段值

HGET key field # 获取字段值

HGETALL key # 获取所有字段和值

HDEL key field # 删除字段

使用场景

存储对象:用户信息、商品属性。

部分更新:修改对象的部分字段。

案例:存储用户信息

HSET user:1001 name "Alice" age 30 email "alice@example.com"

HGET user:1001 name # 返回 "Alice"

HGETALL user:1001 # 返回所有字段和值


  • 列表(List)

有序、可重复的字符串集合,支持双向操作。

常用命令

LPUSH key value1 value2 # 左侧插入元素

RPUSH key value1 value2 # 右侧插入元素

LPOP key # 左侧弹出元素

LRANGE key start end # 获取范围元素

使用场景

消息队列:实现生产者-消费者模型。

最新消息:存储用户最近浏览记录。

案例:消息队列

LPUSH tasks "task1" # 生产者发布任务

RPOP tasks key member1 member2 获取任务


  • 集合(Set)

无序、唯一的字符串集合,支持集合运算。

常用命令

SADD key member1 member2 #添加

SMEMBERS key # 获取所有成员

SINTER key1 key2 # 求交集

SUNION key1 key2 # 求并集

使用场景

标签系统:存储用户标签。

共同好友:计算用户交集。

案例:用户标签管理

SADD user:1001:tags "tech" "redis" "database"

SADD user:1002:tags "tech" "python"

SINTER user:1001:tags user:1002:tags # 返回共同标签 ["tech"]


  • 有序集合(Sorted Set/ZSet)

成员关联一个分数(score),按分数排序。

常用命令

SET key value [EX seconds] # 设置值(带过期时间)

GET key # 获取值

INCR key # 自增数字

DECR key # 自减数字ZADD key score1 member1 # 添加成员及分数

ZRANGE key start end # 按分数升序获取成员

ZREVRANGE key start end # 按分数降序获取成员

ZRANK key member # 获取成员排名

使用场景

排行榜:游戏积分排名、热搜榜单。

时间线:按时间排序的消息流。

案例:游戏排行榜

ZADD leaderboard 1000 "PlayerA" 2000 "PlayerB"

ZREVRANGE leaderboard 0 2 WITHSCORES # 返回前三名


  • 其他高级数据结构

Bitmaps

位操作,适合统计用户在线状态。

SETBIT online:20231001 1001 1 # 用户1001在2023-10-01在线

BITCOUNT online:20231001 # 统计当天在线用户数


总结

  • String :缓存、计数器
  • Hash :对象存储
  • List :队列、时间线 , 顺序操作
  • Set :标签、去重 ,集合运算
  • Sorted Set :排行榜、优先级队列 ,有序且唯一
  • Bitmaps :布尔统计(如签到) ,极低内存消耗
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言