redis的conf文件内容丰富,值得一读。
1,为了使配置文件生效,配置文件必须是redis-server的第一个参数
2,指定内存大小时,带b和不带b的区别
3,不区分大小写
我们可以执行基础配置文件,然后include进来。再配置几个特殊的参数。
这在我们运维大量redis实例时,非常有用。
但是我们实际上使用运维工具来运维redis实例,一般不用这个,不如全部配置来简单直观。
模块是redis4.0以上版本新增的特性,可以编写自己的扩展模块,加载进redis。
高阶使用,还是很需要学习一把的。
官方模块地址:https://redis.io/modules
【改动点】
默认是bind 127.0.0.1,这只能监听自己机器上的连接。我们需要改成机器的ip
不要注释掉,这样不安全
保护模式。模式是on的。当你把bind注掉,并且redis没设置密码,就会触发保护模式,只允许本机登录redis。
我们保持默认就好。我们的redis都应该设置密码的。
【改动点】
端口,默认6379
要理解这个参数,要从TCP连接的三次握手讲起
如上图,在server端处理TCP连接三次握手过程中,linux内核为server端维护两条backlog队列,一条是TCP层的未连接队列,也就是只发过来,但是还没确认,对应内核的net.ipv4.tcp_max_syn_backlog参数。下面那个是应用层的等待最终建立连接的队列(等系统确认建立TCP连接后,会从这个queue删掉),对应net.core.somaxconn这个内核参数。
我们这里的tcp-backlog很明显,对应的是下面那个队列。
联系到redis,因为Redis的单线程模型(对命令的处理和连接的处理都是在一个线程中),如果存在慢查询的话,会出现等待accept队列满,造成新的accept的连接进不了队列。导致客户端看到connect time out类似的报错
总结:tcp-backlog并不是redis的最大连接数。而是和redis优化有关的参数。
看看linux内核这个值是多少
cat /proc/sys/net/core/somaxconn 128
我这里显示是128
也就是默认的配置511是用不到的,被内核先限制住了。
echo 512 > /proc/sys/net/core/somaxconn sysctl -p
这样修改,并生效
除了TCP连接以外,redis也支持 Unix Socket 的方式运行,可以避免 TCP/IP 的性能瓶颈,在高访问场景实现 25% 的性能提升。
默认是不使用的。
这种通信方式仅用于本机的进程间通信,不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,所以性能上和效率上比TCP/UDP Socket高得多。
使用起来就像给本机的某个程序外挂了一块内存。
(没用过这种方式~)
当一个redis客户端多久没向server端发送请求了,server端可以主动断掉连接。
默认是0,表示永不主动断掉
保活检测。默认是每300s向客户端发送ack确认包,以检测客户端是否还活着。
改成0是不检测。保持默认的300就好