Redis是一个开源的内存数据库,用于存储键值对。它支持多种数据结构,如字符串、哈希、列表、集合等。
Redis优势
- 高性能:基于内存操作,读写速度快。
- 数据结构丰富:支持多种数据结构,适用于不同场景。
- 持久化:支持RDB快照和AOF日志两种持久化方式。
- 支持事务:通过MULTI和EXEC命令实现事务操作。
- 分布式:支持主从复制和Sentinel高可用。
Redis数据结构
- 字符串(String)
- 哈希(Hash)
- 列表(List)
- 集合(Set)
- 有序集合(Sorted Set)
Redis持久化
Redis的持久化指的是将内存中的数据写入磁盘,以防止数据在服务器重启时丢失。主要有两种方式:RDB快照和AOF日志。
RDB是定期将内存中的数据生成快照并写入磁盘,适用于备份和恢复。AOF则是将每次写操作都追加到日志文件中,适用于实时的持久化。
Redis的数据过期策略
Redis使用两种过期策略:定时删除和惰性删除。定时删除是指在设置键的过期时间时同时创建一个定时器,过期时删除键。惰性删除是在访问键时检查过期时间,过期时删除键。
Redis实现分布式
Redis实现分布式主要通过主从复制和Sentinel高可用机制。主从复制是指一个主节点可以有多个从节点,数据同步从主节点到从节点。Sentinel是用于监控和自动故障恢复的系统。
Redis的哨兵
哨兵是用于监控Redis系统的组件,可以发现并通知系统中的其他组件有关Redis节点故障的信息。哨兵还可以执行自动故障转移,将故障节点的工作转移到备用节点上
Redis事务
Redis事务是一组命令的集合,可以一次性、顺序地执行,保证原子性。通过MULTI和EXEC命令来开启和执行事务。
Redis的缓存淘汰策略
- LRU(Least Recently Used):
描述: 选择最近最少使用的数据进行淘汰。
配置参数: maxmemory-policy 设置为 “volatile-lru” 或 “allkeys-lru”。 - LFU(Least Frequently Used):
描述: 选择最不经常使用的数据进行淘汰。
配置参数: maxmemory-policy 设置为 “volatile-lfu” 或 “allkeys-lfu”。 - TTL(Time To Live):
描述: 选择具有最早过期时间的数据进行淘汰。
配置参数: maxmemory-policy 设置为 “volatile-ttl”。 - Random(随机选择):
描述: 随机选择要淘汰的数据。
配置参数: maxmemory-policy 设置为 “volatile-random”。 - NoEviction(不淘汰):
描述: 不执行淘汰操作,而是返回错误,告知写操作无法完成。
配置参数: maxmemory-policy 设置为 “noeviction”。