Redis4配置文件详解
转载链接https://www.cnblogs.com/jeffen/p/6077661.html
守护进程模式
默认情况下 redis 不是作为守护进程运行的,如果你想让它在后台运行,你就把它改成 yes
当redis作为守护进程运行的时候,它会写一个 pid 到 /var/run/redis.pid 文件里面
daemonize yes
当redis作为守护进程运行的时候,它会把 pid 默认写到 /var/run/redis.pid 文件里面,但是你可以在这里自己制定它的文件位置
pidfile /var/run/redis.pid
监听端口号,默认为 6379,如果你设为 0 ,redis 将不在 socket 上监听任何客户端连接。
port 6379
TCP接收队列长度,受/proc/sys/net/core/somaxconn和tcp_max_syn_backlog这两个内核参数的影响
在高并发的环境下,你需要把这个值调高以避免客户端连接缓慢的问题。
tcp-backlog 511
一个客户端空闲多少秒后关闭连接(0代表禁用,永不关闭)
timeout 0
如果非零,则设置SO_KEEPALIVE选项来向空闲连接的客户端发送ACK
推荐一个合理的值就是60秒
tcp-keepalive 60
指定服务器调试等级
可能值:
debug (大量信息,对开发/测试有用)
verbose (很多精简的有用信息,但是不像debug等级那么多)
notice (适量的信息,基本上是你生产环境中需要的)
warning (只有很重要/严重的信息会记录下来)
loglevel notice
指定日志文件名和保存位置
logfile "./redis.log"
设置数据库个数
默认数据库是 DB 0,你可以在每个连接上使用 select 命令选择一个不同的数据库,但是 dbid 必须是一个介于 0 到 databasees - 1 之间的值
databases 16
根据给定的时间间隔和写入次数将数据保存到磁盘
900秒(15分钟)之后,且至少1次变更
300秒(5分钟)之后,且至少10次变更
60秒之后,且至少10000次变更
save 900 1
save 300 10
save 60 10000
默认如果开启RDB快照(至少一条save指令)并且最新的后台保存失败,Redis将会停止接受写操作
这将使用户知道数据没有正确的持久化到硬盘,否则可能没人注意到并且造成一些灾难
如果后台保存进程重新启动工作了,redis 也将自动的允许写操作
stop-writes-on-bgsave-error yes
当导出到 .rdb 数据库时是否用LZF压缩字符串对象,默认都设为 yes
rdbcompression yes
是否校验rdb文件,版本5的RDB有一个CRC64算法的校验和放在了文件的最后。这将使文件格式更加可靠。
rdbchecksum yes
持久化数据库的文件名
dbfilename dump.rdb
工作目录
例如上面的 dbfilename 只指定了文件名,但是它会写入到这个目录下。这个配置项一定是个目录,而不能是文件名
dir ./
当master服务设置了密码保护时,slav服务连接master的密码
masterauth !@#$%^&*
当一个slave失去和master的连接,或者同步正在进行中,slave的行为可以有两种表现:
1) 如果 slave-serve-stale-data 设置为 "yes" (默认值),slave会继续响应客户端请求,
可能是正常数据,或者是过时了的数据,也可能是还没获得值的空数据。
2) 如果 slave-serve-stale-data 设置为 "no",slave会回复"正在从master同步
(SYNC with master in progress)"来处理各种请求,除了 INFO 和 SLAVEOF 命令。
slave-serve-stale-data yes
你可以配置salve实例是否接受写操作。可写的slave实例可能对存储临时数据比较有用(因为写入salve的数据在同master同步之后将很容易被删除)
slave-read-only yes
是否在slave套接字发送SYNC之后禁用 TCP_NODELAY?
如果你选择“yes”Redis将使用更少的TCP包和带宽来向slaves发送数据。但是这将使数据传输到slave上有延迟,Linux内核的默认配置会达到40毫秒
如果你选择了 "no" 数据传输到salve的延迟将会减少但要使用更多的带宽
repl-disable-tcp-nodelay no
slave的优先级是一个整数展示在Redis的Info输出中。如果master不再正常工作了,哨兵将用它来选择一个slave提升为master
优先级数字小的salve会优先考虑提升为master,所以例如有三个slave优先级分别为10,100,25,哨兵将挑选优先级最小数字为10的slave。
0作为一个特殊的优先级,标识这个slave不能作为master,所以一个优先级为0的slave永远不会被哨兵挑选提升为master
slave-priority 100
密码验证
警告:因为Redis太快了,所以外面的人可以尝试每秒150k的密码来试图破解密码。这意味着你需要一个高强度的密码,否则破解太容易了
requirepass !@#$%^&*
redis实例最大占用内存,不要用比设置的上限更多的内存。一旦内存使用达到上限,Redis会根据选定的回收策略(参见:maxmemmory-policy)删除key
maxmemory 3gb
最大内存策略:如果达到内存限制了,Redis如何选择删除key。你可以在下面五个行为里选:
volatile-lru -> 根据LRU算法删除带有过期时间的key。
allkeys-lru -> 根据LRU算法删除任何key。
volatile-random -> 根据过期设置来随机删除key, 具备过期时间的key。
allkeys->random -> 无差别随机删, 任何一个key。
volatile-ttl -> 根据最近过期时间来删除(辅以TTL), 这是对于有过期时间的key
noeviction -> 谁也不删,直接在写操作时返回错误。
maxmemory-policy volatile-lru
默认情况下,Redis是异步的把数据导出到磁盘上。这种模式在很多应用里已经足够好,但Redis进程
出问题或断电时可能造成一段时间的写操作丢失(这取决于配置的save指令)。
AOF是一种提供了更可靠的替代持久化模式,例如使用默认的数据写入文件策略(参见后面的配置)
在遇到像服务器断电或单写情况下Redis自身进程出问题但操作系统仍正常运行等突发事件时,Redis
能只丢失1秒的写操作。
AOF和RDB持久化能同时启动并且不会有问题。
如果AOF开启,那么在启动时Redis将加载AOF文件,它更能保证数据的可靠性。
appendonly no
aof文件名
appendfilename "appendonly.aof"
fsync() 系统调用告诉操作系统把数据写到磁盘上,而不是等更多的数据进入输出缓冲区。
有些操作系统会真的把数据马上刷到磁盘上;有些则会尽快去尝试这么做。
Redis支持三种不同的模式:
no:不要立刻刷,只有在操作系统需要刷的时候再刷。比较快。
always:每次写操作都立刻写入到aof文件。慢,但是最安全。
everysec:每秒写一次。折中方案。
appendfsync everysec
如果AOF的同步策略设置成 "always" 或者 "everysec",并且后台的存储进程(后台存储或写入AOF
日志)会产生很多磁盘I/O开销。某些Linux的配置下会使Redis因为 fsync()系统调用而阻塞很久。
注意,目前对这个情况还没有完美修正,甚至不同线程的 fsync() 会阻塞我们同步的write(2)调用。
为了缓解这个问题,可以用下面这个选项。它可以在 BGSAVE 或 BGREWRITEAOF 处理时阻止主进程进行fsync()。
这就意味着如果有子进程在进行保存操作,那么Redis就处于"不可同步"的状态。
这实际上是说,在最差的情况下可能会丢掉30秒钟的日志数据。(默认Linux设定)
如果你有延时问题把这个设置成"yes",否则就保持"no",这是保存持久数据的最安全的方式。
no-appendfsync-on-rewrite yes
自动重写AOF文件
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
AOF文件可能在尾部是不完整的(这跟system关闭有问题,尤其是mount ext4文件系统时
没有加上data=ordered选项。只会发生在os死时,redis自己死不会不完整)。
那redis重启时load进内存的时候就有问题了。
发生的时候,可以选择redis启动报错,并且通知用户和写日志,或者load尽量多正常的数据。
如果aof-load-truncated是yes,会自动发布一个log给客户端然后load(默认)。
如果是no,用户必须手动redis-check-aof修复AOF文件才可以。
注意,如果在读取的过程中,发现这个aof是损坏的,服务器也是会退出的,
这个选项仅仅用于当服务器尝试读取更多的数据但又找不到相应的数据时。
aof-load-truncated yes
Lua 脚本的最大执行时间,毫秒为单位
lua-time-limit 5000
Redis慢查询日志可以记录超过指定时间的查询
slowlog-log-slower-than 10000
这个长度没有限制。只是要主要会消耗内存。你可以通过 SLOWLOG RESET 来回收内存。
slowlog-max-len 128
redis延时监控系统在运行时会采样一些操作,以便收集可能导致延时的数据根源。
通过 LATENCY命令 可以打印一些图样和获取一些报告,方便监控
这个系统仅仅记录那个执行时间大于或等于预定时间(毫秒)的操作,
这个预定时间是通过latency-monitor-threshold配置来指定的,
当设置为0时,这个监控系统处于停止状态
latency-monitor-threshold 0
Redis能通知 Pub/Sub 客户端关于键空间发生的事件,默认关闭
notify-keyspace-events ""
当hash只有少量的entry时,并且最大的entry所占空间没有超过指定的限制时,会用一种节省内存的
数据结构来编码。可以通过下面的指令来设定限制
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
与hash似,数据元素较少的list,可以用另一种方式来编码从而节省大量空间。
这种特殊的方式只有在符合下面限制时才可以用
list-max-ziplist-entries 512
list-max-ziplist-value 64
set有一种特殊编码的情况:当set数据全是十进制64位有符号整型数字构成的字符串时。
下面这个配置项就是用来设置set使用这种编码来节省内存的最大长度。
set-max-intset-entries 512
与hash和list相似,有序集合也可以用一种特别的编码方式来节省大量空间。
这种编码只适合长度和元素都小于下面限制的有序集合
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
HyperLogLog稀疏结构表示字节的限制。该限制包括
16个字节的头。当HyperLogLog使用稀疏结构表示
这些限制,它会被转换成密度表示。
值大于16000是完全没用的,因为在该点
密集的表示是更多的内存效率。
建议值是3000左右,以便具有的内存好处, 减少内存的消耗
hll-sparse-max-bytes 3000
启用哈希刷新,每100个CPU毫秒会拿出1个毫秒来刷新Redis的主哈希表(顶级键值映射表)
activerehashing yes
客户端的输出缓冲区的限制,可用于强制断开那些因为某种原因从服务器读取数据的速度不够快的客户端
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
默认情况下,“hz”的被设定为10。提高该值将在Redis空闲时使用更多的CPU时,但同时当有多个key
同时到期会使Redis的反应更灵敏,以及超时可以更精确地处理
hz 10
当一个子进程重写AOF文件时,如果启用下面的选项,则文件每生成32M数据会被同步
aof-rewrite-incremental-fsync yes
Redis4配置文件详解的更多相关文章
- quartz配置文件详解
quartz配置文件详解(转载) quartz学习总结: 一.关于job: 用Quartz的行话讲,作业是一个执行任务的简单Java类.任务可以是任何Java代码.只需你实现org.qu ...
- WebConfig配置文件详解
今天看到博客园一位朋友整理的一个WebConfig配置文件详解,觉得不错,转载一下: <?xml version="1.0"?> <!--注意: 除了手动编辑此文 ...
- tomcat配置文件详解
Tomcat系列之服务器的安装与配置以及各组件详解 tomcat 配置文件详解
- ubuntu nginx 安装以及配置文件详解
1.到nginx官网下载源码包.最好下载稳定版本,nginx官网http://www.nginx.org/ 2.安装nginx依赖包运行命令: sudo apt-get install libssl- ...
- Spring配置文件详解 – applicationContext.xml文件路径
Spring配置文件详解 – applicationContext.xml文件路径 Java编程 spring的配置文件applicationContext.xml的默 ...
- spring配置文件详解--真的蛮详细
spring配置文件详解--真的蛮详细 转自: http://book.51cto.com/art/201004/193743.htm 此处详细的为我们讲解了spring2.5的实现原理,感觉非常 ...
- net-snmp配置文件详解
net-snmp配置文件详解 net-snmp的配置文件是有一定的层次结构的,配置起来也很方便.网上找了很多资料,大概把这个配置文件的各个信息搞懂了一点.其实在net-snmp的EXAMPLE.con ...
- Rsyslog配置文件详解
Rsyslog配置文件详解https://my.oschina.net/0757/blog/198329 # Save boot messages also to boot.log 启动的相关信息lo ...
- (原创)LAMP搭建之二:apache配置文件详解(中英文对照版)
LAMP搭建之二:apache配置文件详解(中英文对照版) # This is the main Apache server configuration file. It contains the # ...
随机推荐
- UML-SSD-为什么要画SSD?
需求文本看着过于抽象,采用SSD一目了然. 在设计软件之前,分析人员会关注系统会发生那些事件? 1.基本上,软件系统要对以下3种事件进行响应: 1).来自于参与者(人或计算机)的外部事件 2).时间事 ...
- SVN解除与服务器的关联
1.随便找个地方新建个文本文档 2.粘贴如下内容到文档里,建议使用notepad++ Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\ ...
- linux服务器开放防火墙和端口,以及查询状态
自己搞一个自己网站时候,购买的阿里云服务器,发现部署项目访问不到,首先需要确认入站规则是否配置. 一.安全组列表添加 1.打开安全组列表 2.添加入站规则 3.添加安全组规则 二.通过防火墙,开启端口 ...
- KeyError: 'xxx does not support field: _id'
Scrapy存储爬取的数据时,提示不支持某些字段 在Item文件中,添加对应的字段即可
- java常用工具类(三)
一.连接数据库的综合类 package com.itjh.javaUtil; import java.sql.Connection; import java.sql.DriverManager; im ...
- 通过Dockerfile 文件为linux images 添加新用户
要求: (1)增加一个新用户,名为mynewuser (2)让这个用户有root权限 (3)设置其密码为mynewpassword (4)Container启动后以mynewuser登录,并且直接到m ...
- Opencv笔记(四)——绘图函数
常用的绘图函数有: cv2.line() cv2.circle() cv2.rectangle() cv2.ellipse() cv2.putText( ...
- python学习笔记(29)-操作excel
操作excel #存到excel里面,python去操作excel文件 #只支持这种后缀,xlsx ,openpyxl只支持这种格式 # from openpyxl import load_workb ...
- Spring Boot使用Liquibase最佳实践
Liquibase问题 随着项目的发展,一个项目中的代码量会非常庞大,同时数据库表也会错综复杂.如果一个项目使用了Liquibase对数据库结构进行管理,越来越多的问题会浮现出来. ChangeSet ...
- 十八、linux系统分区
一.磁盘存储结构图:这里注意下,分区标有64字节,则每个分区有16字节,MBR引导分区有446字节,共有510字节,一个扇区有512字节,还有俩个字节是分区结束标识.比如隐藏文件等标识,都是这2个字节 ...