配置文件

Units 单位

1、配置大小单位

2、定义一些基本度量单位,只支持 bytes,不支持 bit

3、大小写不敏感

 

INCLUDES

1、可以包含其他配置文件

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

 

NETWORK

1、bind

bind 127.0.0.1 -::1

(1)默认在回环的 IPv4 和 IPv6 上监听,表示只能接受本机的访问请求

(2)不写的情况下,表示无限制,接受任何 IP 地址的访问

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

2、protected-mode

protected-mode yes

(1)本机访问保护模式

(2)默认 yes,表示只能本机访问

3、Port

port 6379

(1)接受指定端口的连接

(2)默认 6379

(3)如果指定端口为 0,Redis 将不在 TCP 套接字上监听

4、tcp-backlog

tcp-backlog 511

(1)设置 tcp 的 backlog

(2)backlog 是一个连接队列

(3)backlog 队列总和 = 未完成三次握手队列 + 已经完成三次握手队列

(4)在高并发环境下,需要一个高 backlog 值,避免缓慢的客户端连接问题

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

5、timeout

timeout 0

(1)一个空闲的客户端维持多少秒会关闭

(2)0 表示关闭该功能,即永不关闭

6、tcp-keepalive

tcp-keepalive 300

(1)对访问客户端的一种心跳检测,单位为秒

(2)默认每 300 秒检测一次

(3)如果设置为 0,则不会进行 Keepalive 检测,建议设置为 60

 

GENERAL

1、daemonize

daemonize no

(1)是否为后台进程

(2)默认情况下,Redis 不作为一个守护程序运行

(3)Redis 在守护进程中会在 /var/run/redis.pid 中写入一个 pid 文件

(4)当 Redis 由 upstart 或 systemd 监管时,这个参数没有影响

2、pidfile

pidfile /var/run/redis_6379.pid

(1)如果指定一个 pid 文件,Redis 会在启动时,将其写入指定位置,并在退出时将其删除

(2)当服务器在非守护状态下运行时,如果配置中没有指定 pid 文件,则不会创建 pid 文件

(3)在配置中指定 pid 文件,当服务器处于守护状态时,即使没有指定,也会使用 pid 文件,默认为 /var/run/redis.pid

(4)如果 Redis 不能创建它,服务器会正常启动和运行

(5)注意,在现代 Linux 系统上,/run/redis.pid 更符合要求

3、loglevel

loglevel notice

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

(2)debug:大量的信息,对开发 / 测试有用

(3)verbose:许多很少有用的信息,但不像 debug 级别那样混乱

(4)notice:适度粗略,生产环境中使用

(5)warning:只有非常重要 / 关键的信息才会被记录

4、logfile

logfile ""

(1)指定日志文件的名称

(2)可以使用空字符串来强制 Redis 在标准输出上记录日志

(3)如果使用标准输出来记录日志,但使用守护进程,日志将被发送到 /dev/null

5、databases

databases 16

(1)设置数据库的数量

(2)默认的数据库是 DB 0

(3)SELECT <dbid>,在每个连接的基础上选择一个不同的数据库,其中 dbid 是 0 和 databases - 1 之间的数字

 

SECURITY

# requirepass foobared

1、Redis 6 开始,requirepass 只是一个在新的 ACL 系统之上的兼容层

2、该选项的作用只是设置默认用户的密码

3、客户端仍将使用 AUTH <password>,或者更明确地使用 AUTH default <password>

4、如果他们遵循新的协议:两者都可以使用

5、requirepass 不适用于 aclfile 选项和 ACL LOAD 命令,这些将导致 requirepass 被忽略

 

CLIENTS

# maxclients 10000

1、设置同时连接的客户端的最大数量

2、默认设置为 10000 个客户端

3、然而,如果 Redis 服务器不能配置进程文件限制以允许指定的限制,则允许的最大客户数被设置为当前文件限制减去 32(因为 Redis 保留了一些文件描述符供内部使用)

4、一旦达到限制,Redis 将关闭所有新的连接,发送 'max number of clients reached' 错误

5、当使用 Redis 集群时,最大的连接数也与集群总线共享:集群中的每个节点将使用两个连接,一个传入,另一个传出。在集群非常大的情况下,相应地确定限制的大小是很重要的

 

MEMORY MANAGEMENT

1、maxmemory

# maxmemory <bytes>

(1)设置一个内存使用限制到指定的字节数

(2)当达到内存限制时,Redis 将尝试根据所选择的驱逐策略来删除键

(3)如果 Redis 不能根据策略删除键,或者策略被设置为 noeviction,Redis 将开始对会使用更多内存的命令做出错误回复,并将继续对 GET 等只读命令做出回复

(4)这个选项通常在使用 Redis 作为 LRU 或 LFU 缓存时很有用,或者为一个实例设置一个硬的内存限制(使用 noeviction 策略)

2、maxmemory-policy

# maxmemory-policy noeviction

(1)当达到 maxmemory 时,Redis 将如何选择要删除的内容

(2)volatile-lru:使用近似的 LRU 进行驱逐,只清除有过期集的键

(3)allkeys-lru:使用近似的 LRU 来驱逐任何键

(4)volatile-lfu:使用近似的 LFU 进行驱逐,只清除有过期集的键

(5)allkeys-lfu:使用近似的 LFU 驱逐任何键

(6)volatile-random:删除一个有过期集的随机键

(7)allkeys-random:删除一个随机键,任何键

(8)volatile-ttl:删除过期时间最近的键(minor TTL)

(9)noeviction:不驱逐任何东西,只是在写操作时返回一个错误

(10)LRU 指最近使用最少

(11)LFU 指最不经常使用

(12)LRU、LFU、volatile-ttl 都是使用近似的随机化算法实现

(13)在上述任何一种策略下,当没有合适的密钥用于驱逐时,Redis 将在需要更多内存的写操作上返回错误

3、maxmemory-samples

# maxmemory-samples 5

(1)LRU、LFU、最小 TTL 算法不是精确的算法,而是近似的算法(为了节省内存),所以可以根据速度或准确性来调整它

(2)默认情况下,Redis 将检查 5 个键,并挑选最近使用最少的一个

(3)默认为 5 产生足够好的结果,10 非常接近真正的 LRU,但要花费更多的 CPU 资源,3 较快,但不是很准确

posted @   半条咸鱼  阅读(192)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示