特性
- 速度快:数据都是存放在内存,用C语言实现,单线程框架(避免了多线程竞争问题)
- 丰富的数据结构和功能
- 简单稳定
- 客户端语言多
- 支持持久化
- 主从结构
- 高可用和分布式
redis作用
- 缓存
- 分布式锁
- 原子问题和失效问题
- 异步队列
- 布隆过滤
- 简单限流(窗口限流),漏斗限流(Cell模块)
- 地理位置:GEO
- key,Scan
经典例子
- 排序:获取最新的列表数据。(zset,list)
- 排行榜:排行榜相关的例子。(zert的
ZREVRANGE
和ZRANK
指令) - 计数:记录帖子的点赞数、评论数和点击数 (hash)。
- 记录帖子的标题、摘要、作者和封面信息,用于列表页展示 (hash)。
- 记录帖子的点赞用户 ID 列表,评论 ID 列表,用于显示和去重计数 (zset)。
- 缓存近期热帖内容 (帖子内容空间占用比较大),减少数据库压力 (hash)。
- 记录帖子的相关文章 ID,根据内容推荐相关帖子 (list)。
- 如果帖子 ID 是整数自增的,可以使用 Redis 来分配帖子 ID(计数器)。
- 收藏集和帖子之间的关系 (zset)。 记录热榜帖子 ID 列表,总热榜和分类热榜 (zset)。
- 缓存用户行为历史,进行恶意行为过滤 (zset,hash)。
redis的数据结构
- 基本的数据接口:String,hash,list,set,Zset
- 这些数据结构都是对外的数据结构。实际上没一种数据都有底层的内部编码实现方式,而且有多种实践方式。Redis会在合适的场景选择合适的内部编码。
- 中级数据结构:pub/sub,Transactions,位图,HyperLogLog,布隆过滤,GeoHash,Scan
- redis底层的数据结构实现: