Redis运维总结

【持久化设置】 对于redis,有两种持久化方式:rdb和aof rdb:后台定期生成一个dump文件,保存当前redis内存中所有的数据 aof:类似日志,记录所有的操作命令

save 900 1 save参数是设置rdb的生成频率,900表示每900秒,1表示变更的key大于1,即触发rdb生成。 关闭方式:删除所有save行

appendonly yes appendonly参数设置为yes,即开启aof 关闭方式:appendonly yes -> appendonly no

当rdb和aof同时开启时,redis恢复数据仅采用aof,不会读取rdb的数据。

aof的弊端:aof中会有大量的无效数据,可以通过后台定时任务的方式在业务不繁忙时期定时重建aof文件,以提升redis重新加载数据的效率。

【主从设置】 master不需要做任何设置 slaver需要在配置文件中设置 slaveof <masterip> <masterport>

如果master设置了访问密码requirepass参数 slaver需要配置 masterauth <master-password> 参数 同时slaver也需要设置访问密码requirepass参数

注:requirepass需要设置为一个很长的字符串,建议64位以上

建议主从设置为同样的端口号,以便故障时快速切换

【开机自启动策略】 只有一种情况【不能】设置开机自启动: 角色为master 且 未开启持久化

其他情况均【应该】设置开机自启动 vim /etc/rc.d/rc.local 添加一行 /redis绝对路径/start.sh

【常用运维命令】 查看redis运行日志 cat ./logs/redis.log 查看redis当前pid cat ./pidfile/redis.pid 关闭redis kill -9 redis的pid 启动redis ./start.sh 连接redis ./redis-cli -h IP地址 -p 端口号 连接密码 auth 密码字符串 查看redis基础信息 info 提升slaver为master 【谨慎操作】连接slaver并执行 slaveof no one

【环境问题】 WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128. 定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数,默认值为128,在某些应用下可能会限制接收新TCP连接侦听队列的大小。

设置方式:

添加 'net.core.somaxconn = 511' 到 /etc/sysctl.conf 执行 sysctl net.core.somaxconn=511

WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect. 设置内存分配策略 /proc/sys/vm/overcommit_memory 可选值:0、1、2。 0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。 1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。 2, 表示内核允许分配超过所有物理内存和交换空间总和的内存 注意:redis在dump数据的时候,会fork出一个子进程,理论上child进程所占用的内存和parent是一样的,比如parent占用的内存为8G,这个时候也要同样分配8G的内存给child,如果内存无法负担,往往会造成redis服务器的down机或者IO负载过高,效率下降。所以这里比较优化的内存分配策略应该设置为 1(表示内核允许分配所有的物理内存,而不管当前的内存状态如何)。 设置方法 添加 'vm.overcommit_memory = 1' 到 /etc/sysctl.conf 执行 sysctl vm.overcommit_memory=1

WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled. 注意 此项需要检查服务器上是否有这项设置 ***部分服务器不需要设置此项目*** 执行 cat /sys/kernel/mm/transparent_hugepage/enabled 设置方式:将以下两行命令加入启动项 vim /etc/rc.d/rc.local echo never > /sys/kernel/mm/transparent_hugepage/enabled echo never > /sys/kernel/mm/transparent_hugepage/defrag

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏运维一切

ETCD的基本使用 转

原文地址: http://www.csdn.net/article/2015-01-22/2823659

1493
来自专栏smy

前后端分离之vue2.0+webpack2 实战项目 -- html模板拼接

对于前后端分离,如何把一个页面的公共部分比如head, header, footer, content等组合成一个完整的html 是一个值得考虑的地方。 对于p...

3906
来自专栏鸿的学习笔记

计算机网络整理

应用层(Application Layer) 传输层(Transport Layer) 网络层(Network Layer) 链接层(Link Layer) 实...

1151
来自专栏nummy

cookie模块学习

输出是一个合法的Set-Cookie首部, 可以作为HTTP响应的一部分传递给客户端。

801
来自专栏HansBug's Lab

【前端】Ubuntu16下nodejs+npm+vue环境配置

笔者最近在学习vue.js,不过一直都是在runoob上面各种尝试。今天笔者在本机(Ubuntu16.04)尝试部署了nodejs+npm+vue开发环境,接下...

3755
来自专栏Netkiller

数据与应用程序间通信·UDP Socket

你是否想过当数据库中发生变化时,将变化内容通知到外面的应用程序。这样做的目的是 方便二次开发,例如你的软件第三方产品,你没有软件的源码,无法二次开发,这是你可以...

3596
来自专栏蘑菇先生的技术笔记

浅谈C#网络编程(一)

在现今软件开发中,网络编程是非常重要的一部分,本文简要介绍下网络编程的概念和实践。 Socket是一种网络编程接口,它是对传输层TCP、UDP通信协议的一层封...

1243
来自专栏zhisheng

看透 Spring MVC 源代码分析与实践 —— 网站基础知识

网站架构及其演变过程 基础结构 网络传输分解方式: 标准的 OSI 参考模型 TCP/IP 参考模型 ? 海量数据的解决方案 缓存和页面静态化 缓存 通过...

3348
来自专栏xingoo, 一个梦想做发明家的程序员

【AngularJS】—— 7 模块化

AngularJS有几大特性,比如:   1 MVC 2 模块化   3 指令系统   4 双向数据绑定 那么本篇就来看看AngularJS的模块...

2075
来自专栏用户2442861的专栏

高性能网络编程4--TCP连接的关闭

TCP连接的关闭有两个方法close和shutdown,这篇文章将尽量精简的说明它们分别做了些什么。

1132

扫码关注云+社区

领取腾讯云代金券