1. Redis哨兵机制
- 主观下线:指单个Sentinel实例根据自己的检测和判断,认为某个Redis节点(可能是主节点或从节点)已不可用。
- 客观下线:指多个Sentinel实例对某个Redis主节点状态检测后形成的共识,即该主节点确实已不可用。
2. Redis淘汰策略
- noeviction:不删除任何数据,拒绝写入。
- volatile-lru/lfu:以过期时间为淘汰目标,使用LRU或LFU算法。
- allkeys-lru/lfu:以所有keys为淘汰目标,使用LRU或LFU算法。
- allkeys|volatile-random:随机淘汰数据。
3. Redis数据迁移方案
- Redis-Shark
- 阿里云DTS
4. Redis架构
- 主从架构
- 集群架构
5. 集群概念
Redis集群由多组主-从Redis服务构成,每组含一个主节点和一个或多个从节点。默认分配16384个哈希槽,这些槽在集群成员中分配。数据写入时,使用CRC16算法计算键的哈希值,并根据该值将数据写入对应的哈希槽。查询时,也通过CRC16算法确定数据所在槽,然后重定向到负责该槽的成员节点查询。
6. IO多路复用技术
Redis的I/O多路复用允许单个线程同时监听多个Socket连接。当Socket可读或可写时,系统会通知,优化CPU资源使用。在Linux上,这通常通过epoll实现,能在Socket就绪时及时通知用户进程,提高I/O性能。
7. 快速原因
Redis之所以快,得益于其内存存储、I/O多路复用、单线程模型及高效数据结构和类型。
8. 应用场景
- 缓存
- 永久存储
- 队列
- 分布式锁
9. 热keys分析方法
- 业务经验预估
- 客户端收集
- Proxy层收集
-
Redis自带命令:如
MONITOR
分析、hot-keys捕捉(注意高并发下的内存消耗) -
第三方分析工具:如
redis-faina
10. Redis重要参数
- timeout:客户端连接超时时间(秒)。默认为0,表示不超时。
- client-output-buffer-limit:设置客户端输出缓冲区大小限制。包括normal、slave、pubsub等不同类型的客户端。
- maxclients:同时可连接的客户端数量。默认为10000。
-
maxmemory:Redis可使用的最大内存量。达到此值后,根据
maxmemory-policy
进行淘汰。 -
maxmemory-policy:内存不足时的淘汰策略。包括
noeviction
、allkeys-lru
、volatile-lru
等选项。
这些参数对于调整Redis性能至关重要,需根据实际场景合理配置。
10 数据类型
基本数据类型 字符串 hash 列表
集合 有序集合
特殊数据类型和高级功能 位图 超日志 地理空间 流 发布订阅
11读写延迟
1网络延时或者丢包
2 有big keys阻塞
3 redis本身压力过高
网友评论