Redis大key有哪些解决方案?

1.针对Redis存在大key的数据,如果key过于大了,导致查询较慢,容易形成阻塞,部分请求超时,这种情况该如何解决?如何设计一个有效的缓存结构更合理?

2.Redis服务中存在大量key,占用过多的内存,这种情况也会导致Redis查询较慢,该如何设置一个有效的缓存方式?

阅读 5.2k
2 个回答

可以考虑在应用层先对 Key 进行压缩,比如LZ4/Snappy/ZLIB 之类的,再配合 Redis 客户端的序列化配置,可以“无侵入”的完成这个 key 的压缩操作

我司之前就是有大 Value ,几百K起步,后面做了压缩 redis 内存省了80%,反正压缩的压力在应用层,不会影响 Redis

可能是这样滴:

  • 在应用层对key进行压缩,楼上都有总结; 重点是大数据下服务的cpu利用率和memory达到一个平衡利用,要检测;
  • 对key重新设计使key越小越好,
  • 使用更贴切自己业务的缓存策略比如:LRU,LFU,FIFO,超时等;或者使用这几种策略的组合方式;为了达到最好效果也可以在应用层自己编写处理逻辑
  • 把key放在不同的redis实例中存储;redis 分片

若以上努力效果都不明显,可考虑扩容,或者集群

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题