Redis配置文件

Redis配置文件

自定义目录 /myreids/redis.conf

Units 单位

配置大小单位,开头定义了一些基本的度量单位,只支持bytes,不支持bit。大小写不敏感
在这里插入图片描述

INCLUDES 包含

多实例的情况可以把公用的配置文件提取出来

网络配置相关

bind

默认情况 bind=127.0.0.1 只能接受本机的请求访问

不写的情况下,无限制接受任何ip地址的访问

服务器是需要远程访问的,所以需要将其注释掉

如果开启了protected-mode,那么在没有设定 bind ip且没有设密码的情况下,Redis只允许接受本机的响应

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RzJ5c8Br-1672389784822)(../AppData/Roaming/Typora/typora-user-images/image-20221228211656384.png)]

保存配置,停止服务,重新启动查看进程,不再是本机的访问了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WuvGZXnk-1672389784823)(../AppData/Roaming/Typora/typora-user-images/image-20221228211742289.png)]

protected-mode

将本机访问模式设置为 no
在这里插入图片描述

Port在这里插入图片描述

端口好,默认为 6379

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LtENhovS-1672389784824)(../AppData/Roaming/Typora/typora-user-images/image-20221228211907129.png)]

tcp-backlog

设置tcp的backlog,backlog其实是一个连接队列,backlog队列总和=未完成三次握手队列+已完成三次握手队列

在高并发环境下你需要一个高backlog值来避免慢客户端连接问题

注意Linux内核会将这个值减小到/proc/sys/net/core/somaxconn的值(128),所以需要确认增大/proc/sys/net/core/somaxconn和/proc/sys/net/ipv4/tcp_max_syn_backlog(128)两个值来达到想要的效果

timeout

一个空闲的客户端维持多少秒会关闭,0表示关闭该功能。即永不关闭

tcp-keepalive

对访问客户端的一种心跳检测,每隔n秒检测一次

单位为秒,如果设置为0,则不会进行Keepalive检测,建议设置为60

unixsocket/tmp/redis.sock

unix指定监听socket,指定用来监听连接的unix套接字路径。没有默认值,不指定的话Redis不会通过unix套接字来监听

unixsocketperm 755

当只当监听为socket时,可以指定其权限为755

GENERAL 通用

daemonize

是否为后台进程,设置为yes

守护进程,后台启动

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-su2chYnB-1672389784825)(../AppData/Roaming/Typora/typora-user-images/image-20221228213051590.png)]

pidfile

存放pid文件的位置,每个实列会产生一个不同的pid文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0p0HaQqy-1672389784825)(../AppData/Roaming/Typora/typora-user-images/image-20221228213216586.png)]

loglevel

指定日志记录级别,Redis共支持四个级别:debug、verbose、notice、warning,默认notice

四个级别根据使用阶段来选择,生产环境一般选择notice或者warning

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VMh7qVzP-1672389784826)(../AppData/Roaming/Typora/typora-user-images/image-20221229100901866.png)]

logfile (stdout)

日志文件名称。也可使用”stdout“强制让Redis吧日志写到标准输出上;如果Redis是以守护进程方式运行时,设置日志显示到标准输出的话,日志会发送到/dev/null

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KT9aQTVG-1672389784826)(../AppData/Roaming/Typora/typora-user-images/image-20221229103531762.png)]

databases 16

设定库的数量, 默认是16, 默认使用数据库为0。可以使用 SELECT WHERE dbid(0~’databases’- 1) 命令在连接上指定数据库id

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OBhU6w9t-1672389784826)(../AppData/Roaming/Typora/typora-user-images/image-20221229103712062.png)]

syslog-enable no

使用系统日志记录器,只要设置”syslog-enable“ 为 ”yes”即可

syslog-ident redis

指明syslog身份

syslog-facility local0

指明syslog的设备,必须时一个用户或者是 LOCAL0 ~ LOCAL 7之一

SECURITY 安全

设置密码

requirepass foobared

访问密码的查看、设置和取消

在命令中设置新密码,只是临时的。重启redis服务器,密码就还原了

永久设置,需要在配置文件中进行设置

Aredis:0>config get requirepass
1) "requirepass"
2) "123456"
Aredis:0>config set requirepass "111111"
"OK"
Aredis:0>config get requirepass
1) "requirepass"
2) "111111"

rename-command CONFIG

命令重命名
在共享环境下,可以为危险命令改变名字

LIMITS 限制

maxclients

设置redis同时可以与多个少个客户端进行连接

默认情况下为10000个

如果达到了此限制,redis则会拒绝新的请求连接,并且向这些连接请求方发出 “max number of clients reached” 以作回应

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9VG0BnKz-1672389784827)(../AppData/Roaming/Typora/typora-user-images/image-20221229105420302.png)]

maxmemory

必须设置,否则将内存占满,造成服务器宕机

设置 redis可以使用的内存量。一旦达到内存使用上限,redis将会视图移除内部数据,移除规则可以通过maxmemory-policy指定

如果redis无法根据移除规则来移除内存中的数据,或设置了 不允许移除,那么redis则会针对那些需要社情内存的指令返回错误信息, 如SET、LPUSH 等

但是对于无内存申请的指令,仍会正常响应,比如GET等。如redis是主机(说明有从机),那么在设置内存使用上限时,需要在系统中留出一些内存空间给同步队列缓存,只有设置的是 ”不移除“的情况下,才不用考虑这个因素

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bpTMJKqb-1672389784827)(../AppData/Roaming/Typora/typora-user-images/image-20221229111143110.png)]

maxmemory-policy
  • volatile-lru:使用LRU算法移除key,只对设置了过期时间的key

  • allkeys-lru:在所有集合key中,使用LRU算法移除key

  • volatile-random:在过期集合中移除随机的key,只对设置了过期时间的key

  • allkeys-random:在所有集合key中,移除随机的key在这里插入图片描述

  • volatile-ttl:移除TTL值最小的key,即临近过期的key

  • noeviction:不进行移除。针对写操作,只返回错误信息

maxmemory-samples

设置样本数量,LRU算法和最小TTL算法都并非精确算法,而是估算值,所以可以可以设置样本的大小,redis默认会检查这么多个key并选择其中LRU的那个

一般设置3到7的数字,数值越小越不准确,但性能消耗越小

LRU

LRU(Least recently used, 最近最少使用),其核心思想是:如果一个数据最近一段时间被访问过,那么以后被访问的几率越高,如果一个数据最近一段时间没有被访问过,那么将来被访问的几率越小;当内存超过限制时,应当把最久没有访问的数据淘汰。

TTL

IP头部有一个TTL域,TTL是time to live的缩写,中文可以译为“生存时间”,这个生存时间是由源主机设置初始值,但不是具体的时间,而是存储了一个IP数据报可以经过的最大路由数,每经过一个路由器此值就减1,当此值为0则数据报将被丢弃,同时发送ICMP报文通知源主机。

纯累加模式

appendonly no

默认情况下,Redis是异步的把数据导出到磁盘上。这种情况下,Redis挂掉的时候,最新的数据就丢了

如果不希望丢掉任何数据则使用纯累加模式:Redis每次写入的数据在接收后都写入appendonly.aof文件

appendonly.aof文件

每次启动后,Redis都会把这个文件的数据读入内存里

异步导出的数据库文件和纯累加文件可以并存(需要把save 设置都注释掉,关闭导出机制)

如果纯累加模式开启,那么Redis会在启动时载入日志文件而忽略导出的dump.rdb文件

appendfilename appendonly.aof

纯累加模式的文件名

appendfsync always

appendfsync everysec

appendfsync no

fsync 请求操作系统立即把数据写入到磁盘

  • no 不立即写入
  • always 每次写操作都立即写入aof文件 (慢, 安全)
  • everysec 每秒写一次 (默认)
auto-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

自动重写AOF文件

达到AOF日志文件指定大小的百分比,Redis能通过BGREWRITEAOF 自动重写AOF文件

指定被重写日志的最小尺寸,这样避免达到最大百分比但尺寸很小还要重写的情况

快照

save

save 900 1

save 300 10

save 60 10000

把数据保存的磁盘上 save ,会在指定秒数和数据变化次数后把数据写到磁盘上

rdbcompression yes

导出的.rdb文件时是否采用LZF压缩

dbfilename dump.rdb

数据库的文件名

dir ./

工作目录,数据库会写到这个目录下,文件名时上面的 dbfilename

同步

slaveof

主从同步。通过slaveof配置来实现Redis实例的备份

masterauth

如果设置了密码,那么slave在开始同步之前必须进行身份验证,否则它的同步请求会被拒绝

slave-server-stale-data yes

当一个slave和master失去连接,或者同步正在进行,slave的行为有两种可能:

  1. 如果 slave-server-stale-data 设置为 yes,slave会继续响应客户端的请求,可能是正常数据,也可能是还没获得值的空数据
  2. 如果 slave-server-stale-data 设置为no, slave会回复“ 正在从Master同步 (SYNC with master in progress)来处理各种请求,除了INFO 和 SLAVEOF 命令
repl-ping-slave-period 10

slave根据只当的时间间隔向服务器发送ping请求

时间间隔通过 repl-ping-slave-period设置, 默认为 10

repl-timeout60

设置大块数据I/O、向Master请求数据和额ping响应的过期时间, 默认60秒

确保这个值比repl-ping-slave-period大, 否则 master和slave之间的传输过期时间比预想的要短

慢查询日志

可以为慢查询日志配置两个参数:

一是超标时间,单位为微妙

另一个是慢查询日志长度。当一个新的命令被写进日志的时候,最老的那个记录会被删除

slowlog-log-slower-than 10000

Redis慢查询日志可以记录超过指定时间的查询。运行时间不包括各种 I/O时间

slow-max-len 128

这个长度没有限制,只要有足够的内存。可以通过SLOWLOG RESET 来释放内存

高级配置

hash-max-zipmap-entries 512

hash-max-zipmap-value 64

当有大量数据时,适合用哈希编码(需要更多的内存),元素数量上限不能超过给定的限制

可以通过下面选项来设定这些限制

list-max-ziplist-entries 512

list-max-ziplist-value 64

与哈希类似,数据元素较少的情况下,可以用另一种方式来编码从而节省大量空间

这种方式只有符合下面限制才可以使用

set-max-intset-entries 512

还有一种特殊编码情况:数据全是64为无符号整型数字构成的字符串

下面这个配置项就是用来限制这种情况下使用这种编码的最大上限的。

zset-max-ziplist-entries 128

zset-max-ziplist-value 64

与第一、第二种情况相似,有序序列也可以使用一种特别的编码方式来处理, 可以节省大量空间

这种编码知识和长度和元素都符合下面限制的有序序列:

activerehashing yes

哈希刷新,每100个cpu毫秒会拿出1个毫秒来刷新Redis的主哈希表(顶级键值映射表)

redis所用的哈希表实现采用延迟哈希刷新机制:对一个哈希表操作越多,哈希刷新操作就越频繁;反之,如果服务器非常不活跃那么就是使用内存保存哈希表

默认是每秒进行10此哈希表刷新,用来刷新字典,然后尽快释放内存

如果对延迟比较在意的话 使用 “activerehashing no”, 每个请求延迟2毫秒

如果希望尽快释放内存 使用 “activerehashing yes”

客户端输出缓存限制

客户端输出缓存限制轻质断开读取速度比较慢的客户端

三种限制类型

normal -> 正常的客户端包括监控客户端

slave -> 从客户端

pubsub -> 客户端至少订阅了一个频道或者模式

客户端输出缓存限制语法 client-output-buffer-limit <类别><强制限制><软性限制><软性时间>

client-output-buffer-limit normal 0 0 0

client-output-buffer-limit slave 256mb 64mb 60

client-output-buffer-limit pubsub 32mb 8mb 60

  • 达到强制限制缓存大小,立即断开链接
  • 达到软性限制,仍然会有软性时间大小的链接时间
  • 默认正常客户端无限制,只是请求后,异步客户端数据请求速度快于它能读取数据的速度
  • 订阅模式和主从客户端有默认限制,因为他们都接受推送
  • 强制限制和软性限制都可以设置为0来禁用

hz 10

设置Redis后台任务执行频率,比如清除过期键任务

设置范围 1到 500,默认10,越大越消耗CPU,延迟越小

建议不超过100

aof-rewrite-incremental-fsync yes

当子进程重写AOF文件,以下选项开启时,AOF文件会每产生32M数据同步一次(有助于更快写入文件到磁盘避免延迟)

包含

include /path/to/local.conf

include /path/to/other.conf

包含一个或多个其它配置文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值