最近阅读了《Redis实战》,总结一下里面提到的一些优化的方法
如何降低Redis内存使用:
- 使用正确的数据结构
- key长度越小占用内存越小(积少成多)
- value的值是否可以进行处理
- 部分数据结构在长度较小、个数较少的情况下会采用节省空间的算法存储,可以与sharding结合减少总内存使用
- sharding:减少单机可使用内存量(虽然不会减少总内存量)
如何减少请求Redis的延迟
- 使用正确的数据结构
- 分层结构可减少只读命令的latency
- 总体思路是减少通信次数,因此一般情况下,尽量在redis server一端处理好后返回结果。常用方法有
(1) 有些数据结构有处理多条数据的命令,比如hmget代替多次hget
(2) 用pipeline代替多条命令多次与redis通信
(3) 用lua脚本代替pipeline、watch/multi/exec(悲观锁)等