博客推荐:
https://blog.csdn.net/crisis_hiding/article/details/81490158
https://blog.csdn.net/achuo/article/details/80600170
https://www.cnblogs.com/duanxz/p/5447402.html
-
根据业务需要选择合适的数据类型,并为不同的应用场景设置相应的紧凑存储参数。
-
当业务场景不需要数据持久化时,关闭所有的持久化方式可以获得最佳的性能以及最大的内存使用量。
-
如果需要使用持久化,根据是否可以容忍重启丢失部分数据在快照方式与语句追加方式之间选择其一,不要使用虚拟内存以及diskstore方式。
-
不要让你的Redis所在机器物理内存使用超过实际内存总量的3/5。
-
设置 timeout 和 tcp-keepalive
-
代码中不要使用 keys *,可以考虑使用 scan
-
尽量使用短的 key, 可以节约内存和提供性能
-
持久化缓存压缩下
-
设置 key 的有效期
-
选择合适的回收策略
-
尽可能的使用 Hash 存储
-
限制 redis 的内存大小,64位系统不限制内存,32位系统默认最多使用3GB内存 ,数据量不可预估,并且内存也有限的话,尽量限制下redis使用的内存大小,这样可以避免redis使用swap分区或者出现OOM错误。(使用swap分区,性能较低,如果限制了内存,当到达指定内存之后就不能添加数据了,否则会报OOM错误。可以设置maxmemory-policy,内存不足时删除数据。
-
slowlog-log-slower-than : 它决定要对执行时间大于多少微秒(microsecond,1秒 = 1,000,000 微秒)的命令进行记录。
slowlog-max-len : 它决定 slowlog 最多能保存多少条日志,当发现redis性能下降的时候可以查看下是哪些命令导致的。
-
redis的管道功能在命令行中没有,但是redis是支持管道的,在java的客户端(jedis)中是可以使用的: