ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

常用的 Redis 数据结构

常用的 Redis 数据结构 Redis 之所以快不只因为内存存储还因为它提供了丰富的数据结构。日常开发中掌握下面 5 种常用结构基本就能覆盖大多数场景。String最基础String 是二进制安全的可以存文本、数字、JSON、图片等。常用命令SET key value GET key INCR key DECR key SETNX key value EXPIRE key60典型场景· 缓存对象· 计数器如文章阅读量· 分布式锁· 限流List有序列表List 底层是双向链表结构支持从两端插入和弹出。常用命令LPUSH list a RPUSH list b LPOP list RPOP list LRANGE list0-1典型场景· 简单消息队列· 最新动态列表· 时间线注意List 适合简单队列复杂消息队列建议用 Stream。Hash键值对集合Hash 适合存储对象的多个字段。常用命令HSET user nameTomHSET user age18HGET user name HGETALL user HDEL user age典型场景· 用户信息· 商品属性· 购物车相比用多个 String 存对象字段Hash 更省内存也更方便管理。Set无序唯一集合Set 中的元素不重复支持交集、并集、差集。常用命令SADD tags redis SADD tags cache SMEMBERS tags SISMEMBER tags redis SINTER set1 set2 SUNION set1 set2典型场景· 标签系统· 点赞去重· 共同好友· 抽奖ZSet有序唯一集合ZSet 每个元素都有一个 score按 score 排序元素唯一。常用命令ZADD rank100tom ZADD rank90jerry ZRANGE rank0-1WITHSCORES ZREVRANGE rank0-1WITHSCORES ZINCRBY rank10tom典型场景· 排行榜· 热度排序· 延时队列· 范围查询其他常用结构· Bitmap位图适合签到、活跃统计。· HyperLogLog基数统计适合 UV 去重内存占用极低。· GEO地理位置计算附近的人、门店距离。· Stream专业消息队列支持消费组。底层小知识Redis 会根据数据量自动选择底层编码· StringSDS· Listquicklist· Hash / Set小数据用 listpack大数据用 hashtable· ZSet小数据用 listpack大数据用 skiplist dict这样设计的目标是小对象省内存大对象保证性能。总结日常使用优先掌握结构 一句话 典型场景String 缓存和计数 缓存、锁、计数器List 有序可重复 队列、时间线Hash 对象字段 用户、商品、购物车Set 无序不重复 标签、去重、交并集ZSet 带分数排序 排行榜、延时队列选对数据结构往往比优化代码更有效。
返回列表