引言:
最近写的服务用到了redis,由于使用场景需要频繁向redis中写入数据。在本地测试的时候触发了一个错误:
MISCONF Redis is configured to save RDB snapshots, but is currently
not able to persist on disk. Commands that may modify the data set are
disabled. Please check Redis logs for details about the error.
大概意思就是告诉我 redis在持久化的时候出错了。
百度到的方法基本都是告诉我修改配置文件。
但我的问题肯定不是配置文件的事情。
有一篇博客点醒了我,他在排查这个错误的时候意外发现是因为他的磁盘被日志文件占满了。
虽然我的问题不可能是磁盘被占满,但是顺着这个思路我想到了一个问题,我是频繁写入数据,redis在安装时默认就是开启rdb的(我本地用的是window版的3.2.100,其他版本没试过),那每次写入redis必然会进行持久化操作,持久化操作即是向磁盘写入。那会不会是io操作频繁?
我的需求只是缓存,持久化到磁盘对我来说没有意义,于是我关闭持久化试了下,果然没再出现错误。
下面是关闭rdb教程:
一:配置文件
window中,找到安装目录下 redis.windows.conf 大概是194行,会看到这三行注释掉。大概192行的 save “” 取消注释。
Linux的话大概实在第115行左右三行注释掉,然后 save “”
save 900 1 save 300 10 save 60 10000
二:删除已生成文件
如果是已经运行过了,需要删除已经生成的文件dump.rdb。
否则会关闭失效。
三:重启redis服务
重启服务即可生效。
四:开启持久化
当你按上述步骤关闭了持久化,后来要开启的话。
1.需要将redis.conf之前的配置恢复。重新启动即可。
2.或者redis.conf配置保持不变,在将dump.rdb文件上传到之间删除目录,重启也可实现