面试题答案
一键面试数据存储
- 结构:Redis字典是基于哈希表实现,每个哈希表由数组和链表组成。在分布式缓存场景中,数据以键值对的形式存储在哈希表中。
- 分布:通常借助一致性哈希算法,将数据均匀分布到集群的各个节点。每个节点维护自己的哈希表,存储分配到该节点的键值对。
数据读取
- 定位:客户端发送读取请求,根据一致性哈希算法计算出键所在的节点。
- 查询:该节点在本地哈希表中通过键查找对应的值,由于哈希表的查找时间复杂度接近O(1),能快速返回结果。
缓存更新策略
- LRU(最近最少使用):当缓存达到容量上限时,淘汰最长时间未被使用的键值对。Redis会为每个键维护一个访问时间戳,根据这个戳来判断是否淘汰。
- LFU(最不经常使用):淘汰使用频率最低的键值对。Redis通过记录每个键的访问频率来实现,频率低的优先淘汰。
- 定时过期:为每个键设置过期时间,当键过期时,自动从缓存中删除。在分布式场景下,各个节点独立管理各自键的过期。
- 主动更新:当数据在源数据库更新后,主动调用Redis的API更新相应的缓存数据,确保缓存与数据库数据的一致性。