爆肝三天整理的Redis配置大全

Posted Coding小暮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爆肝三天整理的Redis配置大全相关的知识,希望对你有一定的参考价值。

 点击关注Coding小暮,获取更多优质内容哦

吐血整理Redis配置大全(一)

肝了好久,终于把Redis.conf 整理完了。这篇文章我准备分三部分写。

  1. Redis的单机配置
  2. 高可用主从同步相关配置
  3. 优化内存安全等

今天先写第一部分:Redis的单机配置,本篇内容包括以下几点。

  1. 加载外部配置
  2. 加载外部模块
  3. 网络配置
  4. 常规配置
  5. 日志配置
  6. 事件通知
  7. 高级设置
  8. Docker集群配置
加载外部配置
include /path/to/local.conf

没啥好说的,如果你的redis需要有额外的配置,或者公共配置的话,可以再此include配置。

加载外部模块
loadmodule /path/to/my_module.so

Redis可选的模块其实还挺多的,比如说布隆过滤器(RedisBloom),就需要loadmodule来加载它。

网络篇

如果bind的是127.0.0.1,那么也就意味着只有本机才能访问
bind 127.0.0.1

bind命令是指可以连接本服务的ip+port,默认情况下是127.0.0.1,生产环境一般用于指定固定的一批服务器。千万不能注释此行配置,不然会将Redis暴露到公网上,任何客户端都可以连接。

保护模式
protected-mode yes
port 6379 

没啥好说的,指定Redis的启动端口号,默认也就是6379.

tcp-backlog 511

此参数确定了TCP连接中已完成队列(完成三次握手之后)的长度, 当然此值必须不大于Linux系统定义的/proc/sys/net/core/somaxconn值,默认是511,而Linux的默认参数值是128。当系统并发量大并且客户端速度缓慢的时候,可以将这二个参数一起参考设定。

timeout 0

在客户端空闲N秒后关闭连接(0表示禁用)

tcp-keepalive 300

TCP keepalive. TCP会话保持,心跳检测。如果不为0的话,在没有通信的情况下使用SO_KEEPALIVE向客户端发送TCP ACK。

常规配置篇

daemonize no

是否需要在/var/run/redis.pid 写入一个pid文件,没啥乱用的配置

loglevel notice

指定日志级别,以下是可选项 debug (会打印很多信息,对于开发/测试很有用) verbose (许多很少有用的信息,但不会像调试级别那样混乱) notice (中等冗长,适合在生产环境使用) warning (仅记录非常重要/重要的消息)

logfile ""

指定日志文件名。 请注意,如果您使用标准输出进行日志记录,但是服务以守护进程运行,日志将被发送到/dev/null

syslog-enabled no

要启用对系统记录器的日志记录,只需将“syslog enabled”设置为yes,并根据需要更新其他syslog参数。

下面几个参数都是几乎不用改动的
syslog-ident redis
#指定系统日志标识。
syslog-facility local0
#指定系统日志工具。必须是USER或介于LOCAL0-LOCAL7之间。
databases 16
#设置数据库的数量。默认数据库是db0,您可以使用select<dbid>在每个连接的基础上选择一个不同的数据库
always-show-logo yes
#是否显示redis的logo,没啥卵用

日志配置

Redis慢查询日志系统用于记录超过指定执行时间的查询。执行时间不包括I/O操作,比如与客户端,发送、应答等等,指记录实际执行命令所需的时间

slowlog-log-slower-than 10000

单位微秒,所以1000000等于一秒。注意,负数表示禁用慢日志,而0则表示强制记录每个命令。

slowlog-max-len 128

限制日志长度,它会占用少许内存。

事件通知

Redis可以通知Pub/Sub客户端在kyes space 中发生的事件。这个特性在 http://redis.io/topics/notifications 中有记录

notify-keyspace-events ""

可以选择Redis将在一组类中通知的事件。每个类都由一个字符来标识: K     Keyspace 事件, 以 keyspace@ 前缀发布. E     Keyevent 事件, 以 keyevent@ 前缀发布. g     通用命令( 非特定类型) like DEL, EXPIRE, RENAME, ...

lshzxe的别名,例如“AKE”字符串表示所有的事件。"notify-keyspace-events"接受一个由零或多个字符组成的字符串作为参数。空字符串意味着禁用通知。例如:notify-keyspace-events Elg


高级设置

hash-max-ziplist-entries 512
hash-max-ziplist-value 64

Hash压缩,hash-max-ziplist-entries表示集合超过一定的条目数量,hash-max-ziplist-value表示单个value的大小超过一定阈值,则会采用一种特殊的哈希算法

list-max-ziplist-size -2

List列表也以一种特殊的方式进行编码,以节省大量空间。每个内部列表节点允许的条目数可以指定为固定的最大大小或元素的最大数量。可选范围:-5: max size: 64 Kb  <-- 看看就行了,不会用到生环境 -4: max size: 32 Kb  <-- 不推荐使用 -3: max size: 16 Kb  <-- 可能不推荐 -2: max size: 8 Kb   <-- good,默认值 -1: max size: 4 Kb   <-- good

list-compress-depth 0

指定头尾排除压缩的数量。List本身是双向链表,从头尾部分取出的数据概览较高,所以可以指定头尾前几位不压缩,以保障快速取出

set-max-intset-entries 512

当set集合的大小等于 set-max-intset-entries 设置的值,开始使用特殊编码来节省内存

zset-max-ziplist-entries 128
zset-max-ziplist-value 64

与Hash和List类似,为了节省大量空间,Zset也被特殊编码。上面两个参数 zset-max-ziplist-entries 指定了最大条目数,在次条目数以内,不进行特殊编码,zset-max-ziplist-value 配置同理。

hll-sparse-max-bytes 3000

表示HyperLogLog稀疏字节限制,大于这个字节将改为稠密存储

activerehashing yes

哈希刷新,每100个CPU时间会拿出1个毫秒来刷新Redis的主哈希表,默认是每秒钟进行10次哈希表刷新,用来刷新字典,然后尽快释放内存。 如果你对延迟比较在意的话就用 "activerehashing no",此配置意为Redis将降低客户端请求的延迟,但是不会很及时的清理内存。

client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60

客户端输出缓冲区限制,可用于强制断开由于某些原因而不能足够快地从服务器读取数据的客户端。三种不同类别的客户端可分别设定上限:  normal -> 正常客户端,包括监视客户端 slave  -> slave clients pubsub -> 客户端至少订阅了一个pubsub频道或模式 每个client-output-buffer-limit指令的语法如下: client-output-buffer-limit hard limit 和 soft limit 设置为0 ,则是关闭改限制 Redis 缓冲区保护机制:1. 大小限制,当某一客户端缓冲区超过设定值后直接关闭连接 2. 持续时间限制,某一客户端缓冲区持续一段时间占用过大空间时关闭连接

  1. 对于普通客户端来说,限制为0,也就是不限制。因为普通客户端通常采用阻塞式的消息应答模式,何谓阻塞式呢?如:发送请求,等待返回,再发送请求,再等待返回。这种模式下,通常不会导致Redis服务器输出缓冲区的堆积膨胀;

  2. 对于slave客户端来说,大小限制是256M,持续性限制是当客户端缓冲区大小持续60秒超过64M,则关闭客户端连接。

  3. 对于Pub/Sub客户端(也就是发布/订阅模式),大小限制是8M,当输出缓冲区超过8M时,会关闭连接。持续性限制是,当客户端缓冲区大小持续60秒超过2M,则关闭客户端连接;

client-query-buffer-limit 1gb

查询缓冲区,客户端查询缓冲区会积累新的命令。默认情况下,它们被限制为1gb,以避免协议去同步将导致查询缓冲区中未绑定的内存使用。然而,如果你有非常特殊的需求,你可以在这里配置它。

proto-max-bulk-len 512mb

在Redis协议中,批量请求,即代表单个字符串的大小,通常限制为 512mb,但是你可以在这里改变这个限制。

hz 10

Redis调用一个内部函数来执行许多后台任务,比如超时关闭客户端连接,清除从未请求的过期密钥,等等。并不是所有的任务都以相同的频率执行,但是Redis会根据指定的“hz”值检查要执行的任务。默认情况下“hz”被设置为10。当Redis处于空闲状态时,提高值会占用更多的CPU,但同时当有多个键同时失效时,会使Redis响应更快,超时处理可能会更精确。可选范围0到100,默认10

aof-rewrite-incremental-fsync yes

当子进程重写AOF文件时,如果启用了以下选项,该文件将每生成32 MB的数据进行fsync。这有助于将文件以增量方式提交到磁盘,并避免出现较大的延迟峰值。





爆肝三天整理的Redis配置大全(一)

      老夫准备了一下java学习资料,就在我的公众号里 爆肝三天整理的Redis配置大全(一)。少侠可以关注我的公众号在底部点击学习资料便可以免费获取了。祝少侠早日练就一身本领,行侠仗义、前程似锦。




以上是关于爆肝三天整理的Redis配置大全的主要内容,如果未能解决你的问题,请参考以下文章

Redis系列Redis常用数据类型命令大全,6K字爆肝整理,路过不容错过

Redis系列Redis常用数据类型命令大全,6K字爆肝整理,路过不容错过

GitHub标星115K超全Java进阶教程,怒肝三天吐血整理成PDF版

曝肝三天,两千行Python代码,制作B站视频下载工具(附源码)

大牛耗时三天整理的BAT一线互联网大厂2021年春招最新面试题大全

熬夜爆肝整理!史上最硬核的Mysql函数大全,还不收藏?