首页 > 数据库 >Redis配置文件详解

Redis配置文件详解

时间:2023-11-08 17:38:29浏览次数:34  
标签:aof slave 配置文件 buffer redis ziplist Redis 详解 yes


Redis的配置文件redis.conf过滤掉空行和注释行,总共有49个可控项。

1 daemonize no

默认情况下,redis不是后台运行,如果需要后台运行,把该项的值改为yes。

2 pidfile

当Redis 在后台运行的时候,Redis 默认会把pid 文件放在/var/run/redis.pid,你可以配置到其他地址。

当运行多个redis 服务时,需要指定不同的pid 文件和端口

3 port

监听的端口号

4 tcp-backlog

TCP监听的最大容量数。

在高并发的环境下,你需要把这个值调高,以避免客户端连接缓慢的问题。

Linux内核会自动把这个值缩小成/paoc/sys/net/core/somaxconn对应的值,所以你要修改这两个值才能达到预期效果。

 

5 timeout 0

设置客户端连接时的超时时间,单位为秒。当客户端在这段时间内没有发出任何指令,那么关闭该连接,0就是不管它。

6 tcp-keepalive 0

tcp心跳包。

如果设置为非0,则在与客户端缺乏通讯的时候使用SO_KEEPALIVE发送tcp acks给客户端。

推荐一个合理的值就是60秒

7 loglevel notice

定义日志的级别,一共有四种:debug、verbose、notice、warning

8 logfile ""

指定日志文件的位置

9 databases 16

设置数据库的个数,可以使用SELECT 命令来切换数据库。默认使用的数据库是0号库,默认16个库。 

10 save 900 1
11 save 300 10
12 save 60 10000

保存数据快照的频率,即将数据持久化到dump.rdb文件中的频度。

用来描述"在多少秒期间至少多少个变更操作"触发snapshot数据保存动作 

默认设置,意思是:

if(在60 秒之内有10000 个keys 发生变化时){

进行镜像备份

}else if(在300 秒之内有10 个keys 发生了变化){

进行镜像备份

}else if(在900 秒之内有1 个keys 发生了变化){

进行镜像备份

}

13 stop-writes-on-bgsave-error yes

当持久化出现错误时,是否依然继续进行工作,是否终止所有的客户端write请求。

默认设置"yes"表示终止,一旦snapshot数据保存故障,那么此server为只读服务。

如果为"no",那么此次snapshot将失败,但下一次snapshot不会受到影响,不过如果出现故障,数据只能恢复到"最近一个成功点"

 

14 rdbcompression yes

在进行数据镜像备份时,是否启用rdb文件压缩手段,默认为yes。

压缩可能需要额外的cpu开支,不过这能够有效的减小rdb文件的大,有利于存储/备份/传输/数据恢复

15 rdbchecksum yes

是否进行校验和,是否对rdb文件使用CRC64校验和,默认为"yes",那么每个rdb文件内容的末尾都会追加CRC校验和,利于第三方校验工具检测文件完整性

16 dbfilename dump.rdb

镜像备份的文件名

17 dir ./

数据库镜像备份的文件rdb/AOF文件放置的路径。

这里的路径跟文件名要分开配置是因为Redis 在进行备份时,先会将当前数据库的状态写入到一个临时文件中,

等备份完成时,再把该临时文件替换为上面所指定的文件,而这里的临时文件和上面所配置的备份文件都会放在这个指定的路径当中

18 slave-serve-stale-data yes

当主master服务器挂机或主从复制在进行时,是否依然可以允许客户访问可能过期的数据。

在"yes"情况下,slave继续向客户端提供只读服务,有可能此时的数据已经过期;

在"no"情况下,任何向此server发送的数据请求服务(包括客户端和此server的slave)都将被告知"error"

19 slave-read-only yes

slave是否为"只读",强烈建议为"yes"

20 repl-diskless-sync no

21 repl-diskless-sync-delay 5
22 repl-disable-tcp-nodelay no

slave与master的连接,是否禁用TCP nodelay选项。

"yes"表示禁用,那么socket通讯中数据将会以packet方式发送(packet大小受到socket buffer限制)。

可以提高socket通讯的效率(tcp交互次数),但是小数据将会被buffer,不会被立即发送,对于接受者可能存在延迟。

"no"表示开启tcp nodelay选项,任何数据都会被立即发送,及时性较好,但是效率较低,建议设为no

23 slave-priority 100

适用Sentinel模块(unstable,M-S集群管理和监控),需要额外的配置文件支持。

slave的权重值,默认100.当master失效后,Sentinel将会从slave列表中找到权重值最低(>0)的slave,并提升为master。

如果权重值为0,表示此slave为"观察者",不参与master选举

24 appendonly no

redis 默认每次更新操作后会在后台异步的把数据库镜像备份到磁盘,但该备份非常耗时,且备份不宜太频繁

redis 同步数据文件是按上面save条件来同步的

如果发生诸如拉闸限电、拔插头等状况,那么将造成比较大范围的数据丢失

所以redis提供了另外一种更加高效的数据库备份及灾难恢复方式

开启append only 模式后,redis 将每一次写操作请求都追加到appendonly.aof 文件中

redis重新启动时,会从该文件恢复出之前的状态。

但可能会造成 appendonly.aof 文件过大,所以redis支持BGREWRITEAOF 指令,对appendonly.aof重新整理@

25 appendfilename "appendonly.aof"

更新日志文件名,默认值为appendonly.aof

 

26 appendfsync everysec

27 no-appendfsync-on-rewrite no

在aof rewrite期间,是否对aof新记录的append暂缓使用文件同步策略,主要考虑磁盘IO开支和请求阻塞时间。

默认为no,表示"不暂缓",新的aof记录仍然会被立即同步

28 auto-aof-rewrite-percentage 100

当Aof log增长超过指定比例时,重写log file, 设置为0表示不自动重写Aof 日志,重写是为了使aof体积保持最小,而确保保存最完整的数据。

29 auto-aof-rewrite-min-size 64mb

触发aof rewrite的最小文件尺寸

30 aof-load-truncated yes

 

31 lua-time-limit 5000

lua脚本运行的最大时间

32 slowlog-log-slower-than 10000

"慢操作日志"记录,单位:微秒(百万分之一秒,1000 * 1000),如果操作时间超过此值,将会把command信息"记录"起来.(内存,非文件)。

其中"操作时间"不包括网络IO开支,只包括请求达到server后进行"内存实施"的时间."0"表示记录全部操作

33 slowlog-max-len 128

"慢操作日志"保留的最大条数,"记录"将会被队列化,如果超过了此长度,旧记录将会被移除。

可以通过"SLOWLOG <subcommand> args"查看慢记录的信息(SLOWLOG get 10,SLOWLOG reset)

34 latency-monitor-threshold 0
35 notify-keyspace-events ""

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

hash 中包含超过指定元素个数并且最大的元素当没有超过临界时,hash 将以zipmap来存储

zipmap又称为 small hash,可大大减少内存的使用

hash类型的数据结构在编码上可以使用ziplist和hashtable。ziplist的特点就是文件存储(以及内存存储)所需的空间较小,在内容较小时,性能和hashtable几乎一样.

因此redis对hash类型默认采取ziplist。如果hash中条目的条目个数或者value长度达到阀值,将会被重构为hashtable。

这个参数指的是ziplist中允许存储的最大条目个数,,默认为512,建议为128

ziplist中允许条目value值最大字节数,默认为64,建议为1024

 

38 list-max-ziplist-entries 512
39 list-max-ziplist-value 64

对于list类型,将会采取ziplist,linkedlist两种编码类型

40 set-max-intset-entries 512

intset中允许保存的最大条目个数,如果达到阀值,intset将会被重构为hashtable

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

zset为有序集合,有2中编码类型:ziplist,skiplist。因为"排序"将会消耗额外的性能,当zset中数据较多时,将会被重构为skiplist。

43 hll-sparse-max-bytes 3000
44 activerehashing yes

是否重置Hash表

设置成yes后redis将每100毫秒使用1毫秒CPU时间来对redis的hash表重新hash,可降低内存的使用

当使用场景有较为严格的实时性需求,不能接受Redis时不时的对请求有2毫秒的延迟的话,把这项配置为no。

如果没有这么严格的实时性要求,可以设置为 yes,以便能够尽可能快的释放内存

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

客户端buffer控制。在客户端与server进行的交互中,每个连接都会与一个buffer关联,此buffer用来队列化等待被client接受的响应信息。

如果client不能及时的消费响应信息,那么buffer将会被不断积压而给server带来内存压力.如果buffer中积压的数据达到阀值,将会导致连接被关闭,buffer被移除。

buffer控制类型包括:normal -> 普通连接;slave ->与slave之间的连接;pubsub

此类型的连接,往往会产生此种问题;因为pub端会密集的发布消息,但是sub端可能消费不足.
指令格式:client-output-buffer-limit <class> <hard> <soft> <seconds>",其中hard表示buffer最大值,一旦达到阀值将立即关闭连接;
soft表示"容忍值",它和seconds配合,如果buffer值超过soft且持续时间达到了seconds,也将立即关闭连接,

如果超过了soft但是在seconds之后,buffer数据小于了soft,连接将会被保留.

其中hard和soft都设置为0,则表示禁用buffer控制.通常hard值大于soft.

48 hz 10

Redis server执行后台任务的频率,默认为10,此值越大表示redis对"间歇性task"的执行次数越频繁(次数/秒)。

"间歇性task"包括"过期集合"检测、关闭"空闲超时"的连接等,此值必须大于0且小于500。

此值过小就意味着更多的cpu周期消耗,后台task被轮询的次数更频繁。此值过大意味着"内存敏感"性较差。建议采用默认值。

49 aof-rewrite-incremental-fsync yes




标签:aof,slave,配置文件,buffer,redis,ziplist,Redis,详解,yes
From: https://blog.51cto.com/u_809530/8256738

相关文章

  • Redis shell
                                                                        Redisshell命令参数功能redis-cli-r将一个命令执行多次-i每隔几秒执行一次-x和|一起接收前面地输出,并执行命令-c -a --scan/--patt......
  • Redis切片集群
    切片集群多个Redis实例组成一个集群,然后按照一定的规则,把收到的数据划分成多份,每一份用一个实例来保存。RedisCluster定义Redis官方提供的实现切片集群的方案,采用了16384个哈希槽用于处理数据和实例的映射关系。首先根据key计算哈希槽hash_slot=CRC16(key)%16384,其次......
  • Redis迁移工具redis-migrate-tool的使用
    背景:公司由于以前没有同意规划,导致出现好几个redis实例,现在需要整合到一起,查到还有redis-migrate-tool工具,所以把使用情况写一下,以备后用参考 一、下载编译#从git库直接拉取gitclonehttps://github.com/vipshop/redis-migrate-tool.git#CentOS安装必......
  • 详解MySQL中EXPLAIN解释
    explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。使用方法,在select语句前加上explain就可以了:EXPLAIN列的解释:table:显示这一行的数据是关于哪张表的type:这是重要的列,显示连接使用了何种类......
  • 实例详解构建数仓中的行列转换
    本文分享自华为云社区《GaussDB数据库SQL系列-行列转换》,作者:Gauss松鼠会小助手2。一、前言在构建数据仓库或做数据分析时,需要对原始数据的结构进行一定的处理,有时涉及到“行转列”,有时涉及到“列转行”,那么这两个转换的方式具体是什么,有什么差异,怎么实现,今天我们将以GaussDB数......
  • redis主从+哨兵搭建配置参考
    主节点配置:#绑定的主机地址(ip换成自己机器的地址)bind0.0.0.0#redis进程的端口号port6379#是否开启保护模式,默认开启。要是配置里没有指定bind和密码,开启该参数后,redis只会本地进行访问,拒绝外部访问。要是开启了密码和bind,可以开启;否则最好关闭设置为no。protected-mod......
  • 最全面的移动端UI组件设计详解:下篇
    上一期给大家讲解了《最全面的移动端UI组件设计详解:中篇》,主要分享了:基础组件、表单组件和反馈组件3个部分;这次给大家带来:数据展示组件和其他组件详解,希望你在设计APP、小程序、H5页面中,能熟练使用和理解各种的UI组件,今天给大家总结了关于移动端UI组件,希望可以在工作中帮到你。......
  • Spring 3.0 注解注入详解
    一、各种注解方式 1.@Autowired注解(不推荐使用,建议使用@Resource)     @Autowired可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作。@Autowired的标注位置不同,它们都会在Spring在初始化这个bean时,自动装配这个属性。要使@Autowired能够工作,还需要在配置文件中......
  • 最全面的移动端 UI组件设计详解:上篇
    作为一名UI设计师,我们经常要进行PC端和移动端的设计任务,上一次给大家分享了:《最全Web端UI组件设计详解》,这次给大家带来移动端UI组件设计详情,尤其在我们APP、小程序、H5页面设计中,我们要使用和熟知各种的UI组件,今天给大家总结了关于移动端UI组件,希望可以在工作中帮到你。什么......
  • OpenGL 摄像机视角详解
    1.摄像机摄像机就好像是我们的眼睛,我们从摄像机的方向观察世界空间中的模型。摄像机远离模型,模型自然就变小了(透视投影下),然而,在GL中事实上并没有摄像机的概念。但是我们可以通过移动世界空间远离我们的摄像机来模拟摄像机远离世界的感觉。这也正是在上一章中,我们的观察矩阵是(0,......