[redis学习笔记]三、Redis.conf文件解析

redis.conf文件解析

units

  1. 配置大小单位,redis.conf文件开头定义了一些基本的度量单位,只支持bytes(字节),不支持bit(位)

    1k => 1000 bytes
    1kb => 1024 bytes
    1m => 1000000 bytes
    1mb => 1024*1024 bytes
    1g => 1000000000 bytes
    1gb => 1024*1024*1024 bytes
    
  2. 配置单位对大小写不敏感,如1Gb、1GB和1gB是一样的。

includes

includes模块可以包含一个或多个别的配置文件,因为需要自定义进行多处配置,如果写在redis.conf中可能会导致这个文件比较臃肿,索性将自定义的配置文件,通过文件路径的方式引入到这里。用法如下

inlucde /path/to/local.conf

GENERAL(通用配置)

daemonize

默认值为no,默认redis是以前台方式启动,即执行redis-server后显式地运行redis服务,如果不慎执行ctrl+c,那么该redis服务即关闭,这对我们的使用不太友好。因此,通过将daemonize设置yes,使redis服务在后台以守护进程的方式启动。

设置daemonize为yes时,redis会把pid(进程id)默认写入到 /var/run/redis.pid文件里。注意:这个文件路径可通过pidfile参数来更改

pidfile

自定义写入pid的文件路径,如果指定了pid file,那么redis会在启动时,将pid写入该文件,并在退出时删除该文件。

logfile

指定日志文件的名称。如果设置了空字符串,那么会强制redis以标准输出来记录。注意:如果你是使用daemonize=yes启动的服务,而且是以标准输出来记录的,那么日志会被放到/dev/null文件。

/dev/null属于字符特殊文件,是个特殊的设备文件,它会丢弃一切写入其中的数据,写入它的内容会永远丢失,而且没有任何可以读取的内容。

loglevel

指定服务器详细日志级别。可选值如下:

  1. debug(会打印出很多信息,适合开发、测试)
  2. verbose(很少有用的信息,不过不像debug级别那样乱)
  3. notice(这个可能是生产中需要用到的级别)
  4. warning(仅仅记录非常重要/关键的消息)

如无特殊需要,选默认值即可

syslog-enabled

是否把redis日志输出到system.log(是系统里的一个物理文件),取值yes/no。可配合其他几个syslog参数一起使用

syslog-ident

指定syslog里的日志标志,默认是redis

syslog-facility

指定syslog设备,值可以是USER或LOCAL0-LOCAL7

databases

设置数据库的数量,默认的数据库是0号数据库

举例

将redis.conf配置logfile

logfile “redis.log”

重新启动,在运行目录下发现redis.log文件

在这里插入图片描述

NETWORK

bind

绑定一个或多个ip地址。默认情况下,如果没有设置bind,Redis会监听来自服务器上所有可用网络接口的连接。

例子:

## 配置多个ip地址
bind 192.168.1.100 10.0.0.1

## 配置1个ip地址
bind 192.168.1.100
port

redis服务器启动的端口号

tcp-backlog

在高并发环境下需要一个高backlog值来避免慢客户端连接问题。backlog其实是一个连接队列,backlog队列之和=未完成三次握手的队列+已经完成三次握手的队列

如无额外需求,选用默认值即可

timeout

当客户端空闲N秒后,关闭连接。如果timeout设置为0,表示不超时

tcp-keepalive

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

原理:一方通过发送一个TCP Keep-Alive数据包,然后另一方回应TCP Keep-Alive ACK数据包。类似于心跳机制

默认配置 tcp-keepalive 300。也即是tcp连接空闲了300s后 即发送Keep-Alive数据包,以确认连接是否还活着。

CLIENTS

maxclients

设置redis同时可以与多少个客户端进行连接。默认情况下为10000个客户端。当你无法设置进程文件句柄限制时,redis会设置为当前的文件句柄限制值减去32,因为redis会为自身内部处理逻辑留一些句柄出来。如果达到了此限制,redis则会拒绝新的连接请求,并且向这些连接请求方发出“max number of clients reached”以作回应。

MEMORY MANAGEMENT

maxmemory

设置redis可以使用的内存量。一旦到达内存使用上限,redis会试图移除内部数据,移除规则可以通过maxmemory-policy来指定。如果redis无法根据移除规则来移除内存中的数据,或者移除规则设置了"noeviction",那么redis则会针对那些需要申请内存的指令返回错误信息,如SET/LPUSH等。但是对于无内存申请的指令,如GET等仍然会正常响应。

**注意:**如果设置了主从,那么主redis在设置内存使用上限时需要在系统中留出一些内存空间给同步队列缓存使用。(只有当规则设置成"noeviction",才不需要考虑这个因素)

maxmemory-policy 内存回收规则

LRU:Least recently used 最近最少使用

LFU: Least frequently used 最不经常使用

  1. volatile-lru:使用LRU算法移除key,只对设置了过期时间的键
  2. allkeys-lru:使用LRU算法移除key
  3. volatile-lfu:使用LFU算法移除key,只对设置了过期时间的键
  4. allkeys-lfu:使用LFU算法移除key
  5. volatile-random:在过期集合中移除随机的key,只对设置了过期时间的键
  6. allkeys-random:移除随机的key
  7. volatile-ttl:移除那些TTL值最小的key,即那些最近要过期的key
  8. noeviction:不进行移除。针对写操作,只是返回错误信息
maxmemory-samples

设置样本数量,LFU算法、LRU算法和最小TTL算法都并非是精确的算法,而是估算值,所以你可以设置样本的大小,

redis默认会检查5个key并选择其中一个最近较少使用的。

默认值5产生足够好的结果。10非常接近真正的LRU,但需要更多的CPU。3更快,但不太准确。

SECURITY

requirepass

设置redis登录密码,如设置密码为123456,则命令如下

requirepass 123456

设置了登录密码之后,客户端登录时 需要指定密码,命令如下

redis-cli -h 127.0.0.1 -p 6379 -a 123456

SNAPSHOTTING

save

指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合。

Redis默认配置文件中提供了三个条件:

save 900 1 表示15分钟内改了1次
save 300 10 表示5分钟内改了10次
save 60 10000 表示1分钟内改了1万次

**注意:**如果想禁用RDB持久化策略,只要不设置任何save指令或给save传入一个空字符串参数即可,如save “”

stop-writes-on-bgsave-error

默认情况下,如果启用了RDB快照,但是最新一次的后台保存失败,Redis将停止接收写入数据。如果设置为no,表示用户不在乎数据不一致的情况

rdbcompression

对于存储到磁盘中的快照,可以设置是否进行压缩存储。如果是的话,redis会采用LZF算法进行压缩。如果你不想消耗CPU来进行压缩的话,可以设置为关闭此功能

rdbchecksum

在存储快照后,还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约10%的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能

dbfilename

指定本地数据库文件名,默认值为dump.rdb

dir

工作目录。

rdb文件、aof文件、log日志文件都会被写到该目录下。

默认值是./,即启动redis-server服务时所在的目录

APPEND ONLY MODE

appendonly

指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为no

appendfilename

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

appendfsync

指定更新日志条件,共有3个可选值:

no:表示等操作系统进行数据缓存同步到磁盘(快)

always:同步持久化,每次发送数据变更会被立即记录到磁盘,性能较差单数据完整性比较好(每次更新操作后手动调用fsync()将数据写到磁盘)(慢,安全)

everysec:异步操作,每秒同步一次,有数据丢失(如系统宕机,会丢失最后一秒数据)(默认值)

no-appendfsync-on-rewrite

重写时是否可以运用Appendfsync,用默认no即可,保证数据安全性。

auto-aof-rewrite-min-size、auto-aof-rewrite-percentage

设置重写的基准值

发布了116 篇原创文章 · 获赞 23 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/zyxwvuuvwxyz/article/details/104163997
今日推荐