redis配置与不宕机升级建议

以下是翻译的,英语水平有限,保留原文:redis_admin

配置建议

1、建议部署在linux操作系统上,redis的压力测试在linux上测得比较多
2、在/etc/sysctl.conf中设置linux内核参数vm.overcommit_memory=1。该内核参数含义(参考Documentation/sysctl/vm.txt):When this flag is 1, the kernel pretends there is always enough memory until it actually runs out
3、禁用linux内核transparent huge pages功能,它会以消极方式严重影响内存使用和延迟,禁用方式:echo never > /sys/kernel/mm/transparent_hugepage/enabled
4、确定swap不为0,建议将swap设置为内存一样大。如果内存耗尽又没有swap空间,则redis进程很可能被kill或崩溃,如果有swap空间,内存耗尽只可能导致redis响应慢,这时会引起你的注意并及时处理
5、显示地在redis配置文件中设置maxmemory来限制redis使用的最大内存以免操作系统内存被耗尽。
6、如果redis运行在write密集型应用上,在磁盘上存储为rdb文件或重写aof日志时,redis使用的内存可能比正常情况下使用的内存多2倍,额外的内存使用量与被修改的内存页数成正比
7、当运行在daemontools工具下时使用daemonize no
8、使用replication时,必须设置复制backlog,且与redis使用的内存成正比。比如,在一个20GB的实例中只有1MB的backlog是没有意义的。backlog会使复制重新与master instance更容易地同步
9、如果使用replication,即使禁用了redis的持久化特性,redis也会执行rdb saves,除非使用新的diskless replication功能。如果要在master上不使用disk,必须启用diskless replication
10、如果使用了replication,必须保证你的master启用了持久化或master崩溃时不会自动重启,因为slave是master的一个拷贝,所以如果master重启(没有启用持久化,重启的master中没有数据),slave中的数据会被清除。
11、默认情况下,redis不需要任何认证,且监听所有网络接口。如果redis暴露在internet上这是一个大的安全问题,处理方法:参考https://redis.io/topics/quickstart中的Securing Redis
12、使用latency doctor和memory doctor监控性能

不停机升级或重启一个redis实例

redis进程一般在服务器上会长时间运行,如果配置文件的配置选项变化,需要重启才能生效,但可以使用config set命令来配置,无需重启redis,从redis2.2开始,甚至可以从aof切换到rdb快照持久化而不需要重启redis,通过config get *命令查看更多信息

但是,有时必须重启,比如要升级redis进程到一个更新的版本,或者必须修改一些不能被config支持的配置参数时。
为了避免停机,下面步骤提供了非常常用的升级方式:
1、为当前的redis实例配置一个新的slave redis实例。要做这样的配置需要一个不同的服务器,或者当前实例的服务器有足够大的内存可以同时运行两个redis实例
2、如果使用的一个服务器,slave的端口必须不同与master,否则slave不能启动
3、等待replication同步完成(检查slave log文件)
4、使用info命令查看master和slave上的keys的数量是否相同。用redis-cli工具在slave上检查redis是否可以正常工作
5、通过config set slave-read-only no命令允许写slave
6、配置客户端使用新的slave实例。注意:在切换期间,可以在master上使用client pause命令来确保没有客户端可以写数据至master
7、通过monitor命令来确定master上不再收到任何请求后,通过slaveof no one命令将slave切换成master,并关闭原来的master

如果服务器使用的 Redis Sentinel 或 Redis Cluster,最简单的升级方式是升级slave,然后手动执行failover,将slave切换成master。注意:redis cluster 4.0与redis cluster 3.2的cluster bus协议不兼容,所以用于redis cluster 3.2升级至4.0必须重启,redis5 cluster与redis 4是兼容的,不必重启

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值