一:
redis优化1
精简键名和键值
键名:尽量精简,但是也不能单纯为了节约空间而使用不易理解的键名。
键值:对于键值的数量固定的话可以使用0和1这样的数字来表示,(例如:male/female、right/wrong)
当业务场景不需要数据持久化时,关闭所有的持久化方式可以获得最佳的性能 内部编码优化(了解) redis为每种数据类型都提供了两种内部编码方式,在不同的情况下redis会自动调整合适的编码方式。
SLOWLOG [get/reset/len] slowlog-log-slower-than 它决定要对执行时间大于多少微秒(microsecond,1秒 = 1,000,000 微秒)的命令进行记录
slowlog-max-len 它决定 slowlog 最多能保存多少条日志 当发现redis性能下降的时候可以查看下是哪些命令导致的
二:redis优化2
修改linux内核内存分配策略(原因参考备注)
向/etc/sysctl.conf添加vm.overcommit_memory = 1,
然后重启服务器 或者执行sysctl vm.overcommit_memory=1(立即生效)
三:redis优化3
关闭Transparent Huge Pages(THP)
THP会造成内存锁影响redis性能,建议关闭 Transparent HugePages :
用来提高内存管理的性能
Transparent Huge Pages在32位的RHEL 6中是不支持的
使用root用户执行下面命令 echo never > /sys/kernel/mm/transparent_hugepage/enabled 把这条命令添加到这个文件中/etc/rc.local
四:redis优化4
修改linux中TCP 监听的最大容纳数量 在高并发环境下你需要一个高backlog值来避免慢客户端连接问题。
注意Linux内核默默地将这个值减小到/proc/sys/net/core/somaxconn的值,所以需要确认增大somaxconn和tcp_max_syn_backlog两个值来达到想要的效果。
echo 511 > /proc/sys/net/core/somaxconn 注意:这个参数并不是限制redis的最大链接数。
如果想限制redis的最大连接数需要修改maxclients,默认最大连接数为10000。
五:redis优化5
限制redis的内存大小 通过redis的info命令查看内存使用情况 如果不设置maxmemory或者设置为0,
64位系统不限制内存,32位系统最多使用3GB内存。
修改配置文件中的maxmemory和maxmemory-policy maxmemory:最大内存 maxmemory-policy:
如果可以确定数据总量不大,并且内存足够的情况下不需要限制redis使用的内存大小。如果数据量不可预估,并且内存也有限的话,尽量限制下redis使用的内存大小,这样可以避免redis使用swap分区或者出现OOM错误。
注意:如果不限制内存,当物理内存使用完之后,会使用swap分区,这样性能较低,如果限制了内存,当到达指定内存之后就不能添加数据了,否则会报OOM错误。可以设置maxmemory-policy,内存不足时删除数据。
六:redis优化6
Redis是个单线程模型,客户端过来的命令是按照顺序执行的,所以想要一次添加多条数据的时候可以使用管道,或者使用一次可以添加多条数据的命令