面试题答案
一键面试1. 调整 maxmemory
参数
- 调整策略:根据服务器实际可用内存,合理设置
maxmemory
。例如,如果服务器有8GB内存,且其他应用可能占用2GB,那么可以将maxmemory
设置为5GB左右,为系统预留一定内存以避免内存交换。 - 对性能影响:若设置过小,可能导致频繁触发内存回收,影响读写性能;设置过大,可能会导致系统内存不足进行交换,严重影响整体性能。
2. 调整 maxmemory - policy
参数
- volatile - lru:
- 调整策略:选择该策略,它会在设置了过期时间的键值对中,使用LRU(最近最少使用)算法淘汰数据。适用于应用中有较多临时数据,且希望优先淘汰过期数据的场景。
- 对性能影响:LRU算法相对高效,能较好地保留热点数据,减少因淘汰热点数据导致的性能下降。但每次淘汰数据时需要遍历部分数据集,存在一定开销。
- allkeys - lru:
- 调整策略:此策略对所有键值对使用LRU算法淘汰数据,不区分是否设置了过期时间。适用于所有数据都有价值,且希望通过淘汰最不常用数据来释放内存的场景。
- 对性能影响:同样利用LRU算法保留热点数据,整体性能影响与
volatile - lru
类似,但由于需要考虑所有键值对,遍历开销可能略大。
- volatile - ttl:
- 调整策略:优先淘汰剩余时间(TTL)较短的键值对。适用于希望优先淘汰即将过期数据的场景,例如缓存一些短时效的信息。
- 对性能影响:相对简单直接,淘汰数据开销较小。但如果大量数据TTL相近,可能无法有效释放足够内存,影响性能。
- noeviction:
- 调整策略:选择此策略,当内存达到
maxmemory
时,Redis 不会淘汰任何数据,而是返回错误,此时写入操作会失败。适用于对数据完整性要求极高,不允许数据丢失的场景。 - 对性能影响:写入操作失败会导致应用层处理复杂,但不会因淘汰数据产生额外开销,读操作性能不受影响。
- 调整策略:选择此策略,当内存达到