redis知识点总结
2025-12-08 11:58:57 0 举报
AI智能生成
Redis是一个开源的使用ANSI C语言编写、支持网络、基于内存、可选持久性的键值对存储数据库。它以内存作为数据存储的主要介质,将数据以键值对的方式存储,支持多种类型的数据结构,如字符串(strings)、列表(lists)、集合(sets)、有序集合(sorted sets)、哈希表 hashes 等。此外,由于其提供了原子性操作,Redis在处理高并发场景下表现出色。 Redis支持数据持久化,提供了两种方式:RDB快照形式和AOF(append-only file)记录操作日志。RDB方式通过指定的时间间隔执行数据快照保存;而AOF则记录每次对数据库的写操作,支持数据的完整恢复。 同时,Redis具备发布/订阅模式,可进行消息传递;还可以设置键的过期时间,以实现数据的自动删除。Redis还提供了丰富的特性,例如事务处理、Lua脚本支持、主从复制以及分布式锁等,适用于构建高可用、高性能的应用程序。 Redis在文件类型方面,支持标准的rdb和aof持久化文件,其核心代码和配置文件通常为conf和c/.h等。本文是对Redis知识点的高度概括,特点鲜明,每个修饰语准确到位,深入浅出地展示了Redis的核心特性与优势。
作者其他创作
大纲/内容
数据类型
string(key=>value)
简单存储
list
用着队列处理
set(集合)
无重复元素,可用作去重,计算并集、交集等
zset(有序集合)
可以用来做排名,也可以加定时任务做延迟队列
hash
用于存储对象信息,比如用户
bitmap
只存储0和1,常用来处理签到
hyperloglog
用于基数统计,估算不同元素数量,常用于访问数量或者IP统计
geo
用作地理位置计算
stream
处理一些事件流,常用于日志收集、消息队列等
redis淘汰机制
从不淘汰
生成时间最短的淘汰
从所有数据中随机淘汰
从设置过期时间的数据随机淘汰
从所有数据中选择最近最少使用的淘汰
从设置过期时间的数据选择最近最少使用的淘汰
从所有数据中选择使用频率最低的淘汰
从设置过期时间的数据中选择使用频率最低的淘汰
zset的实现
通过跳表(多层有序链表)和hash及双向链表组合使用skipset
hash用来存储成员的分数,便用快速查找、修改、删除
跳表(多层有序链表)能够高速查找、修改、删除
双向链表用于排序
redis持久化及原理
RDB:通过bgsave生成数据文件,优点文件小,易恢复。缺点易丢失数据
同步方式
bgsave(不堵塞)
save(堵塞)
通过配置持久化,比如多少秒多少个key变化就同步
AOF:通过写入命令生成命令文件,文件过大时redis会执行重写,优点不易丢失数据。缺点文件大、恢复慢
同步方式
每秒同步
每次修改同步
从不同步
重写
bgrewriteaof 命令重写
AOF 日志大小超过预设的配置的阈值
redis为什么这么快
都是基于内存操作
使用多路复用机制,同时监控多个连接,提升cpu的利用效率
单线程减少上下文切换和锁竞争带来的开销
高效的数据结构,针对不同场景设计多个数据结构
redis分布式锁的实现方式
基于SET命令的原子操作
设置看门狗
redis的主从复制
从节点连接主节点,发送 SYNC/PSYNC 命令
主节点执行 BGSAVE 生成 RDB 快照
主节点发送 RDB 文件给从节点
从节点加载 RDB 文件
主节点发送缓冲区中的写命令
持续增量复制
缓存与数据库不一致的解决办法
延迟双删策略
对于强一致性要求,分布式锁 + 数据库事务
监听binglog同步缓存,比如canal
redis的并发场景及其解决方法
缓存击穿:单个缓存失效,请求打到数据库
分布式锁(仅单线程重建缓存)
逻辑过期(异步更新)
缓存穿透:查询不存在的数据,一直请求数据库
布隆过滤器拦截非法Key
空值缓存(短TTL)
缓存雪崩:多个缓存都失效了,导致请求直接打到数据库
分散过期时间(基础TTL+随机偏移)
多级缓存架构(本地缓存+Redis)
缓存预热与熔断降级
收藏
0 条评论
下一页