redis 深度历险学习笔记
0. 开卷有益
redis 实际应用场景,以社区贴子为例:
- 记录帖子的点赞数、评论数和点击数 hash
- 记录用户帖子 ID 列表排序,快速显示用户的帖子列表 zset
- 帖子摘要信息,用于列表页展示 hash
- 帖子点赞用户列表,评论 ID 列表,用于去重计数 zset
- 近期热帖缓存,减少数据库压力 hash
- 记录相关忒自 ID,简单关联推荐 list
- 帖子 ID 自增,分配帖子 ID list
- 收藏集和帖子的关系 zset
- 热帖、榜单、分类榜单 zset
- 缓存用户行为,恶意行为过滤 zset, hash
redis 有五种基础结构:
- 字符串 string
- 类似 ArrayList,长度小于 1M 每次扩容翻倍,超过 1M 以后每次扩容只增加 1M,最大长度 512M
- 列表 list
- 类似 LinkedList,当列表元素较少时使用连续内存是 ziplist,当数据量较多改为 quicklist
- 集合 set
- 类似 HashSet,相当于特殊的 hash,其所有的 value 都是 NULL
- 哈希 hash
- 类似 HashMap,数据+链表组成,碰撞元素用链表串接,采用渐进式 rehash
- 有序集合 zset
- 类似 SortedSet 和 HashMap 的结合体,通过跳跃列表实现
redis 两条通用规则:
- create if not exists
- drop if no elements