redis conf文件解释

来源:互联网 发布:亚洲经济数据库 编辑:程序博客网 时间:2024/05/17 02:12

redis里面的 的内存参数
1k = 1000bytes
1kb = 1024byte
1m = 1000000byte
1mb = 1024 * 1024 byte
其中MB,mB,mb,Mb代表的意思都是一样的

1 daemonize no 是否以守护线程的形式运行redis,默认为false

2 pidfile /var/run/redis.pid 运行后的redis的pid文件位置

3 port 6379 redis实例运行在那个端口中

4 tcp-backlog 511 redis监听容纳的最大的连接数,默认取/proc/sys/net/core/somaxconn,在高并发情况下,同时修改somaxconn和tcp_max_syn_backlog 的值

bind 127.0.0.1 10.0.0.1 192.168.0.1(可填入多个ip)

5 timeout 0 连接空闲多久后关闭,单位second,0表示不关闭

6 tcp-keepalive 0 检测连接是否是活连接的时间间隔

7 loglevel notice 日志级别,有低到高是debug,verbose,notice,warnning

8 logfile “” 日志文件位置,默认null是/dev/null

9 databases 16

10 save 900 1
11 save 300 10
12 save 60 10000 上面的参数表示 在1,10,1000key被改变值,对应保存到磁盘中的时间为900秒,300秒,60秒,单位second

13 stop-writes-on-bgsave-error yes 在后台线程保存数据到磁盘失败的情况下是否不允许写
14 rdbcompression yes 是否对rdb磁盘文件进行压缩(LZF压缩算法)

15 rdbchecksum yes 进行crc校验

16 dbfilename dump.rdb 保存的磁盘文件

17 dir ./ 必须是一个目录,rdb活着aof写的文件都在此目录下

18 slave-serve-stale-data yes 当slave跟master同步数据的时候slave的两种表现,yes情况下,slave依旧应答client的请求,no情况下,对于数据的应答都是返回SYNC with master in progess

slaveof masterip masterport 本redis实例是从服务器,他将要连接到哪个主服务器

masterauth passwd 主服务器的密码

19 slave-read-only yes slave是否只读

新的从服务器或者重新连接的slave服务器需要进行全量的rdb文件的同步复制
这里有两种方式1,Disk-backed 创造一个线程在磁盘上写rdb文件,然后父线程发送给slave;2,Disk-less,直接rdb发送给slave,不经过磁盘的rdb文件,慢磁盘快网络推荐使用disk-less
20 repl-diskless-sync no 不启动diskless
21 repl-diskless-sync-delay 5 单位second,等到slave到达的一个时间间隔,若在此间隔不到达,将在下一次进行同步
22 repl-disable-tcp-nodelay no

repl-ping-slave-period 10 从服务器每个多少second取ping主服务器
repl-timeout 60 保证该值大于repl-ping-slave-period,在主从同步时,可能在这些情况下会有超时发生,以从redis的角度来看,当有大规模IO传输时;以从redis的角度来看,当数据传输或PING时,主redis超时;以主redis的角度来看,在回复从redis的PING时,从redis超时
repl-disable-tcp-nodelay no 我们可以控制在主从同步时是否禁用TCP_NODELAY。如果开启TCP_NODELAY,那么主redis会使用更少的TCP包和更少的带宽来向从redis传输数据。但是这可能会增加一些同步的延迟,大概会达到40毫秒左右。如果你关闭了TCP_NODELAY,那么数据同步的延迟时间会降低,但是会消耗更多的带宽。(如果你不了解TCP_NODELAY,可以到这里来科普一下)

23 slave-priority 100 用于设置从服务的优先级

repl-backlog-size 1mb 我们还可以设置同步队列长度。队列长度(backlog)是主redis中的一个缓冲区,在与从redis断开连接期间,主redis会用这个缓冲区来缓存应该发给从redis的数据。这样的话,当从redis重新连接上之后,就不必重新全量同步数据,只需要同步这部分增量数据即可

repl-backlog-ttl 3600 如果主redis等了一段时间之后,还是无法连接到从redis,那么缓冲队列中的数据将被清理掉。我们可以设置主redis要等待的时间长度。如果设置为0,则表示永远不清理。默认是1个小时。
min-slaves-to-write 3
min-slaves-max-lag 10 假如主redis发现有超过M个从redis的连接延时大于N秒,那么主redis就停止接受外来的写请求。这是因为从redis一般会每秒钟都向主redis发出PING,而主redis会记录每一个从redis最近一次发来PING的时间点,所以主redis能够了解每一个从redis的运行情况。上面这个例子表示,假如有大于等于3个从redis的连接延迟大于10秒,那么主redis就不再接受外部的写请求。上述两个配置中有一个被置为0,则这个特性将被关闭。默认情况下min-slaves-to-write为0,而min-slaves-max-lag为10
requirepass redis 我们可以要求redis客户端在向redis-server发送请求之前,先进行密码验证。当你的redis-server处于一个不太可信的网络环境中时,相信你会用上这个功能。由于redis性能非常高,所以每秒钟可以完成多达15万次的密码尝试,所以你最好设置一个足够复杂的密码,否则很容易被黑客破解
rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c89 redis允许我们对redis指令进行更名,比如将一些比较危险的命令改个名字,避免被误执行。比如可以把CONFIG命令改成一个很复杂的名字,这样可以避免外部的调用,同时还可以满足内部调用的需要:
rename-command CONFIG “” 我们甚至可以禁用掉CONFIG命令,那就是把CONFIG的名字改成一个空字符串:
maxclients 10000 我们可以设置redis同时可以与多少个客户端进行连接。默认情况下为10000个客户端。当你无法设置进程文件句柄限制时,redis会设置为当前的文件句柄限制值减去32,因为redis会为自身内部处理逻辑留一些句柄出来。如果达到了此限制,redis则会拒绝新的连接请求,并且向这些连接请求方发出“max number of clients reached”以作回应。
maxmemory 设置redis可以使用的内存量
maxmemory-policy volatile-lru redis提供了六种key过期的移除规则,1,volatile-lru:使用LRU算法移除过期集合中的key;2,allkeys-lru:使用LRU算法移除key;3,volatile-random:在过期集合中移除随机的key;4,allkeys-random:移除随机的key;5,volatile-ttl:移除那些TTL值最小的key,即那些最近才过期的key;6,noeviction:不进行移除。针对写操作,只是返回错误信息
redis支持命令 set setnx setex append incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby getset mset msetnx exec sort
appendonly no 是否追加文件
appendfilename “appendonly.aof” 追加文件名字
appendfsync everysec fsync()调用,用来告诉操作系统立即将缓存的指令写入磁盘。一些操作系统会“立即”进行,而另外一些操作系统则会“尽快”进行。redis支持三种不同的模式:1.no:不调用fsync()。而是让操作系统自行决定sync的时间。这种模式下,redis的性能会最快。2.always:在每次写请求后都调用fsync()。这种模式下,redis会相对较慢,但数据最安全。3.everysec:每秒钟调用一次fsync()。这是性能和安全的折衷。默认情况下为everysec
no-appendfsync-on-rewrite no 当fsync方式设置为always或everysec时,如果后台持久化进程需要执行一个很大的磁盘IO操作,那么redis可能会在fsync()调用时卡住。目前尚未修复这个问题,这是因为即使我们在另一个新的线程中去执行fsync(),也会阻塞住同步写调用。为了缓解这个问题,我们可以使用下面的配置项,这样的话,当BGSAVE或BGWRITEAOF运行时,fsync()在主进程中的调用会被阻止。这意味着当另一路进程正在对AOF文件进行重构时,redis的持久化功能就失效了,就好像我们设置了“appendsync none”一样。如果你的redis有时延问题,那么请将下面的选项设置为yes。否则请保持no,因为这是保证数据完整性的最安全的选择。
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb 我们允许redis自动重写aof。当aof增长到一定规模时,redis会隐式调用BGREWRITEAOF来重写log文件,以缩减文件体积。redis是这样工作的:redis会记录上次重写时的aof大小。假如redis自启动至今还没有进行过重写,那么启动时aof文件的大小会被作为基准值。这个基准值会和当前的aof大小进行比较。如果当前aof大小超出所设置的增长比例,则会触发重写。另外,你还需要设置一个最小大小,是为了防止在aof很小时就触发重写。如果设置auto-aof-rewrite-percentage为0,则会关闭此重写功能。
slowlog-log-slower-than 10000 redis慢日志是指一个系统进行日志查询超过了指定的时长。这个时长不包括IO操作,比如与客户端的交互、发送响应内容等,而仅包括实际执行查询命令的时间。针对慢日志,你可以设置两个参数,一个是执行时长,单位是微秒,另一个是慢日志的长度。当一个新的命令被写入日志时,最老的一条会从命令日志队列中被移除。单位是微秒,即1000000表示一秒。负数则会禁用慢日志功能,而0则表示强制记录每一个命令。
slowlog-max-len 128 慢日志最大长度,可以随便填写数值,没有上限,但要注意它会消耗内存。你可以使用SLOWLOG RESET来重设这个值。

0 0
原创粉丝点击