redis初学者你有福了—带你进入Redis不一样的世界(11)


3.everysec:每秒钟调用一次fsync() 。这是性能和安全的折衷 。
默认情况下为everysec 。有关数据一致性的揭秘 , 可以参考本文 。

appendfsync everysec
当fsync方式设置为always或everysec时 , 如果后台持久化进程需要执行一个很大的磁盘IO操作 , 那么redis可能会在fsync()调用时卡住 。目前尚未修复这个问题 , 这是因为即使我们在另一个新的线程中去执行fsync() , 也会阻塞住同步写调用 。
 
为了缓解这个问题 , 我们可以使用下面的配置项 , 这样的话 , 当BGSAVE或BGWRITEAOF运行时 , fsync()在主进程中的调用会被阻止 。这意味着当另一路进程正在对AOF文件进行重构时 , redis的持久化功能就失效了 , 就好像我们设置了“appendsync none”一样 。如果你的redis有时延问题 , 那么请将下面的选项设置为yes 。否则请保持no , 因为这是保证数据完整性的最安全的选择 。
no-appendfsync-on-rewrite no
我们允许redis自动重写aof 。当aof增长到一定规模时 , redis会隐式调用BGREWRITEAOF来重写log文件 , 以缩减文件体积 。
redis是这样工作的:redis会记录上次重写时的aof大小 。假如redis自启动至今还没有进行过重写 , 那么启动时aof文件的大小会被作为基准值 。这个基准值会和当前的aof大小进行比较 。如果当前aof大小超出所设置的增长比例 , 则会触发重写 。另外 , 你还需要设置一个最小大小 , 是为了防止在aof很小时就触发重写 。
auto-aof-rewrite-percentage 100
 
auto-aof-rewrite-min-size 64mb
如果设置auto-aof-rewrite-percentage为0 , 则会关闭此重写功能 。
 
【教你看懂redis配置 – LUA脚本】
lua脚本的最大运行时间是需要被严格限制的 , 要注意单位是毫秒:
lua-time-limit 5000
如果此值设置为0或负数 , 则既不会有报错也不会有时间限制 。
 
【教你看懂redis配置 – 慢日志】
redis慢日志是指一个系统进行日志查询超过了指定的时长 。这个时长不包括IO操作 , 比如与客户端的交互、发送响应内容等 , 而仅包括实际执行查询命令的时间 。
针对慢日志 , 你可以设置两个参数 , 一个是执行时长 , 单位是微秒 , 另一个是慢日志的长度 。当一个新的命令被写入日志时 , 最老的一条会从命令日志队列中被移除 。
单位是微秒 , 即1000000表示一秒 。负数则会禁用慢日志功能 , 而0则表示强制记录每一个命令 。
slowlog-log-slower-than 10000
慢日志最大长度 , 可以随便填写数值 , 没有上限 , 但要注意它会消耗内存 。你可以使用SLOWLOG RESET来重设这个值 。
slowlog-max-len 128
【教你看懂redis配置 – 事件通知】
redis可以向客户端通知某些事件的发生 。这个特性的具体解释可以参见本文 。
【教你看懂redis配置 – 高级配置】
有关哈希数据结构的一些配置项:
hash-max-ziplist-entries 512
 
hash-max-ziplist-value 64
有关列表数据结构的一些配置项:
list-max-ziplist-entries 512
 
list-max-ziplist-value 64
有关集合数据结构的配置项:
set-max-intset-entries 512
有关有序集合数据结构的配置项:
zset-max-ziplist-entries 128
 
zset-max-ziplist-value 64
关于是否需要再哈希的配置项:
activerehashing yes
关于客户端输出缓冲的控制项:
client-output-buffer-limit normal 0 0 0
 
client-output-buffer-limit slave 256mb 64mb 60
 
client-output-buffer-limit pubsub 32mb 8mb 60
有关频率的配置项:
hz 10
有关重写aof的配置项
aof-rewrite-incremental-fsync yes
至此 , redis的入门内容就结束了 , 内容实在不少 , 但相对来说都很基础 , 本文没有涉及redis集群、redis工作原理、redis源码、redis相关LIB库等内容 。


推荐阅读