Redis数据类型与过期策略详解

需积分: 9 0 下载量 156 浏览量 更新于2024-08-05 收藏 51KB DOCX 举报
"Redis面试题精选包含了Redis的基本数据类型、过期策略和内存淘汰机制等内容" 在Redis中,数据类型是其强大功能的基础,主要包括以下五种: 1. String:这是Redis中最基本的数据类型,它是一个二进制安全的字符串,可以存储任何数据,包括数字、文本或序列化的对象。每个键的最大存储容量为512MB。 2. Hash:Hash类型用于存储键值对的集合,特别适合存储和操作JSON或其他对象。每个Hash可以包含多个字段(field)和值(value)。 3. List:这是一个按插入顺序保持顺序的字符串列表。可以添加、删除元素,并支持双向查找,例如LPOP和RPOP操作。 4. Set:Set是无序且不允许重复元素的集合。可以执行并集、交集和差集等操作。 5. SortedSet:与Set类似,但每个元素都有一个分数(score),用于按照分数进行排序。可以实现范围查询和排序操作。 6. GEO:GEO(Geospatial)用于存储地理位置信息,支持计算距离、获取周边位置等操作。 7. HyperLogLog:这是一种用于基数统计的高效算法,能够估算集合中不重复元素的数量,而不需要存储所有元素,因此节省内存。 8. Pub/Sub(发布/订阅):这是一种消息传递机制,允许客户端订阅特定的主题,当有新的消息发布到该主题时,所有订阅者都会收到通知。 Redis的过期策略采用了定时删除、惰性删除和定期删除的组合方式,以平衡内存使用和CPU效率: - 定时删除:在设置键的过期时间时,同时设置一个定时器,到期后立即删除键,对内存友好但可能消耗较多CPU时间。 - 惰性删除:只在访问键时检查是否过期,过期则删除,对CPU友好但可能导致内存浪费。 - 定期删除:定期检查并删除一批过期键,兼顾两者,通过控制频率和次数减少CPU影响。 然而,仅靠过期策略可能无法避免大量过期键占用内存的问题。为此,Redis引入了内存淘汰机制。当内存使用超过`maxmemory`配置值时,Redis将根据用户选择的策略(如LRU、LFU等)来淘汰部分键,以确保系统正常运行。这些策略帮助Redis在内存有限的情况下,优先保留最近或最常使用的数据。