redis随记
Posted varxinyuan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis随记相关的知识,希望对你有一定的参考价值。
redis 是一个非常高效和简洁的软件,redis 源码阅读必然要提上日程,以下仅作日常记录 :)
redis 持久化
文档:http://redisdoc.com/topic/persistence.html
-
RDB快照
- 在默认情况下, Redis 将数据库快照保存在名字为 dump.rdb 的二进制文件中。你可以对 Redis 进行设置, 让它在“ N 秒内数据集至少有 M 个改动”这一条件被满足时, 自动保存一次数据集。你也可以通过调用 SAVE 或者 BGSAVE , 手动让 Redis 进行数据集保存操作。
- 开启RDB配置文件参考:
################################ 快照 ################################# # # Save the DB on disk:保存数据库到磁盘 # # save <秒> <更新> # # 如果指定的秒数和数据库写操作次数都满足了就将数据库保存。 # # 下面是保存操作的实例: # 900秒(15分钟)内至少1个key值改变(则进行数据库保存--持久化) # 300秒(5分钟)内至少10个key值改变(则进行数据库保存--持久化) # 60秒(1分钟)内至少10000个key值改变(则进行数据库保存--持久化) # # 注释:注释掉“save”这一行配置项就可以让保存数据库功能失效。 # # 你也可以通过增加一个只有一个空字符串的配置项(如下面的实例)来去掉前面的“save”配置。 # # save "" save 900 1 save 300 10 save 60 10000 #在默认情况下,如果RDB快照持久化操作被激活(至少一个条件被激活)并且持久化操作失败,Redis则会停止接受 更新操作。 #这样会让用户了解到数据没有被正确的存储到磁盘上。否则没人会注意到这个问题,可能会造成灾难。 # #如果后台存储(持久化)操作进程再次工作,Redis会自动允许更新操作。 # #然而,如果你已经恰当的配置了对Redis服务器的监视和备份,你也许想关掉这项功能。 #如此一来即使后台保存操作出错,redis也仍然可以继续像平常一样工作。 stop-writes-on-bgsave-error yes #是否在导出.rdb数据库文件的时候采用LZF压缩字符串和对象? #默认情况下总是设置成‘yes’, 他看起来是一把双刃剑。 #如果你想在存储的子进程中节省一些CPU就设置成‘no‘, #但是这样如果你的kye/value是可压缩的,你的到处数据接就会很大。 rdbcompression yes #从版本RDB版本5开始,一个CRC64的校验就被放在了文件末尾。 #这会让格式更加耐攻击,但是当存储或者加载rbd文件的时候会有一个10%左右的性能下降, #所以,为了达到性能的最大化,你可以关掉这个配置项。 # #没有校验的RDB文件会有一个0校验位,来告诉加载代码跳过校验检查。 rdbchecksum yes # 导出数据库的文件名称 dbfilename dump.rdb # 工作目录 # # 导出的数据库会被写入这个目录,文件名就是上面‘dbfilename‘配置项指定的文件名。 # # 只增的文件也会在这个目录创建(这句话没看明白) # # 注意你一定要在这个配置一个工作目录,而不是文件名称。 dir ./
-
AOF日志
- 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。 AOF 文件中的命令全部以 Redis 协议的格式来保存,新命令会被追加到文件的末尾。 Redis 还可以在后台对 AOF 文件进行重写(rewrite),使得 AOF 文件的体积不会超出保存数据集状态所需的实际大小
- 开启AOF配置文件参考:
############################## APPEND ONLY MODE ############################### # 是否开启AOF,默认关闭(no) appendonly yes # 指定 AOF 文件名 appendfilename appendonly.aof # Redis支持三种不同的刷写模式: # appendfsync always #每次收到写命令就立即强制写入磁盘,是最有保证的完全的持久化,但速度也是最慢的,一般不推荐使用。 appendfsync everysec #每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,是受推荐的方式。 # appendfsync no #完全依赖OS的写入,一般为30秒左右一次,性能最好但是持久化最没有保证,不被推荐。 #在日志重写时,不进行命令追加操作,而只是将其放在缓冲区里,避免与命令的追加造成DISK IO上的冲突。 #设置为yes表示rewrite期间对新写操作不fsync,暂时存在内存中,等rewrite完成后再写入,默认为no no-appendfsync-on-rewrite no #当前AOF文件大小是上次日志重写得到AOF文件大小的二倍时,自动启动新的日志重写过程。 auto-aof-rewrite-percentage 100 #当前AOF文件启动新的日志重写过程的最小值,避免刚刚启动Reids时由于文件尺寸较小导致频繁的重写。 auto-aof-rewrite-min-size 64mb
-
以上是关于redis随记的主要内容,如果未能解决你的问题,请参考以下文章