- 它在哪
- Units单位
- INCLUDES包含
- GENERAL通用
- SNAPSHOTTING快照
- REPLICATION复制
- SECURITY安全
- LIMITS限制
- APPEND ONLY MODE追加
- 常见配置redis.conf介绍
它在哪
Units单位
1 配置大小单位,开头定义了一些基本的度量单位,只支持bytes,不支持bit
2 对大小写不敏感
INCLUDES包含
和我们的Struts2配置文件类似,可以通过includes包含,redis.conf可以作为总闸,包含其他
GENERAL通用
- Daemonize:默认情况下 redis 不是作为守护进程运行的,如果你想让它在后台运行,你就把配置文件里daemonize改为yes。
当redis作为守护进程运行的时候,它会写一个 pid 到 /var/run/redis.pid 文件里面
- Pidfile:当redis作为守护进程运行的时候,它会把 pid 默认写到 /var/run/redis.pid 文件里面,但是你可以在这里自己制定它的文件位置。
- Port:监听端口号,默认为 6379,如果你设为 0 ,redis 将不在 socket 上监听任何客户端连接。
Tcp-backlog:TCP 监听的最大容纳数量
设置tcp的backlog,backlog其实是一个连接队列,backlog队列总和=未完成三次握手队列+已完成三次握手队列。
在高并发环境下你需要一个高backlog值来避免慢客户端连接问题。注意Linux内核会将扎个值减小到 /proc/sys/net/core/somaxconn 的值,所以需要确认增大somaxconn和tcp_max_syn_backlog两个值,来达到想要的效果
- Bind:默认情况下,redis 在 server 上所有有效的网络接口上监听客户端连接 你如果只想让它在一个网络接口上监听,那你就绑定一个IP或者多个IP。
Timeout:指定在一个 client 空闲多少秒之后关闭连接(0 就是不管它)
例如:长时间把QQ关机,服务器就会认为这个会话可以是暂时中断的会话,减轻服务器负担
- Tcp-keeppalive:tcp 心跳包 如果设置为非零,则在与客户端缺乏通讯的时候使用 SO_KEEPALIVE 发送 tcp acks 给客户端。 单位为秒,如果设置成0,则不会进行Keepalive检测,建议设置成60
举例:飞机在飞行过程中,机场每个多长时间都要与飞机进行沟通,看看机长是否睡着了,可以证明当前网络通讯状态是否良好。
- Loglevel:定义日志级别 其值可以是如下所示:
- debug (适用于开发或测试阶段)
- verbose (很多很少用到的信息,但不想debug级别那么混乱)
- notice (适用于生产环境)
- warning (仅仅一些重要的消息被记录)
logfile:指定日志文件的位置
- Syslog-enabled:要想把日志记录到Syslog系统日志,就把它改成 yes, 也可以可选择性的更新其他的syslog 参数以达到你的要求
- Databases:设置数据库的数目,默认数据库是 DB 0,你可以在每个连接上使用 select 命令选择一个不同的数据库,但是 dbid 必须是一个介于 0 到 databasees - 1 之间的值
SNAPSHOTTING快照
save <多长时间内(秒)> <改动的次数> 【多长时间内改动了多少次,那么就保存】
stop-writes-on-bgsave-error :默认情况下,如果 redis 最后一次的后台保存失败,redis 将停止接受写操作
这样以一种强硬的方式让用户知道数据不能正确的持久化到磁盘,否则就会没人注意到灾难的发生
如果配置成no,表示你不在乎数据不一致或者有其他手段发现和控制
rdbcompression:对于存储到磁盘中的快照,可以设置是否进行压缩存储,如果是的话,Redis会采用LZF算法进行压缩,如果你不想消耗CPU来进行压缩的话,可以设置为关闭此功能
默认为:yes
rdbchecksum:是否校验rdb文件
在存储快照后,还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约10%的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能
dbfilename:设置 dump 的文件位置
dir:工作目录
例如:上面的 dbfilename 只指定了文件名,但是它会写入到这个目录下。这个配置项一定是个目录,而不能是文件名。
REPLICATION复制
SECURITY安全
LIMITS限制
Maxclients:最大连接数
一旦达到最大限制,redis 将关闭所有的新连接,并发送一个 max number of clients reached 的错误。
Maxmemory:最大使用内存
Maxmemory-policy:当内存满了之后,挑出那些无用或者过期的数据
缓存过期策略:有五种
- volatile-lru -> 使用 LRU 算法移除,只对设置了过期时间的 key 【lru:最近最少使用】
- allkeys-lru -> 根据 LRU 算法移除所有的 key
- volatile-random -> 在过期集合中移除随机的key,只对设置了过期时间的key
- allkeys-random -> 移除随机的key
- volatile-ttl -> 移除那些TTL值最小的key,即那些最近要过期的key
- noeviction -> 不让任何 key 过期,只是给写入操作返回一个错误
Maxmemory-samples:设置样本的数量,LRU算法和最小TTL算法并非是精准的算法,而是估算值,所以你可以设置样本的大小,Redis默认会检查这么多个key并选择其中LRU的那个
APPEND ONLY MODE追加
appendonly:打开AOF,只要将 appendonly 后边的 no 改为 yes
appendfilename:持久化 AOF 的写操作代码的存放位置,相当于 RDB 的 dump.rdb
appendfsync:AOF持续化的方式,一共三种
- Always:同步持久化,每次发生数据变更会被立即记录到磁盘,性能较差,但数据完整性比较好
- Eversec:出厂默认推荐,异步操作,每秒记录,如果一秒内宕机,有数据丢失
- No:从不同步
no-appendfsync-on-rewrite:重写时是否可以运行 appendfsync ,用默认no即可,保证数据安全性
auto-aof-rewrite-percentage**:设置重写的基准值**
auto-aof-rewrite-min-size:设置重写的基准值
常见配置redis.conf介绍