报警:Redis 内存接近上限。上去一看,maxmemory-policy 是 allkeys-lru。

问题:这个策略会淘汰任何键,包括我存的任务状态。结果任务状态被淘汰,业务逻辑走错分支。

改:

  1. 分实例。缓存和状态数据分两个 Redis,各自设策略。
  2. 缓存实例用 allkeys-lru,状态实例用 noeviction(宁可写失败也不丢)。
  3. 状态数据设置合理 TTL,别永久占着。

general 经验:Redis 存业务状态是常见的坏味道。它本质是缓存,持久化不可靠。真需要状态就用数据库,Redis 只做加速。

主楼