如何使用Redis禁用持久性?


91

我想知道如何禁用Redis的持久性。这里提到了这样做的可能性:http : //redis.io/topics/persistence。我的意思是和那里描述的完全一样。任何帮助将不胜感激!


我感到惊讶的是,即使不是很烦人,官方网站上也没有相关说明,互联网上也没有很多有关此方面的信息(请参阅stackoverflow.com/questions/19581059/…的票数更多,而且记录比这个)。总的来说,考虑将Redis经常用作非持久数据库。
Akronix '18

Answers:


111

要禁用Redis中的所有数据持久性,请在redis.conf文件中执行以下操作:

  1. 通过将appendonly配置指令设置为no(默认值)来禁用AOF 。像这样:

    appendonly no
    
  2. 通过注释所有save配置指令来禁用RDB快照(默认情况下定义了3个)

    #save 900 1
    #save 300 10
    #save 60 10000
    

更改后,请确保重新启动Redis以应用它们。

或者,您可以使用CONFIG SET命令在运行时应用这些更改(只需确保您还执行aCONFIG REWRITE即可保留更改)。

注意:根据您的Redis版本,还有其他一些调整可阻止Redis访问磁盘以执行与复制相关的任务。


1
redis> config set auto-aof-rewrite-percentage 0
toontong

2
通过注释掉这三个save指令,我已将Redis配置为不将数据保存到磁盘。我可以看到它不再定期对数据进行快照。但是,每当我关闭服务器时,仍会看到.rdb文件写入磁盘。是否仍可能由于故障转移过程而创建它?
Jolta '17

1
要真正有效,您可以使用此处列出的命令通过cli进行操作:stackoverflow.com/a/34736871/2904315或者您可以按照此答案中的说明更改redis.conf文件,然后使用以下命令重新启动服务:systemctl restart redis
Akronix

在Linux中,该redis.conf文件位于/etc/redis/redis.conf
Amin Shojaei

77

如果要避免使用redis.conf(开发/测试环境),可以通过命令行使用

redis-server --save "" --appendonly no

(已通过Redis服务器3.2.6和进行测试5.0.5


1
您确定--appendonly no必要吗?是不是默认关闭了?
aleclarson

4
可能是真的。但是,为了安全起见,将其添加到其中当然也没有什么坏处,我们想要的是禁用所有类型的持久性;)
Kostis

嗯,在WSL(Ubuntu 16)的Windows 10上对我不起作用
James Gentes

@JamesGentes是什么错误。它可以在我的Redis 5.0.3的Fedora 29中使用,现在对其进行了测试。也许您需要在Windows中以其他方式传递参数?什么是Redis版本?redis-server --help也许可以提供一些见识
Kostis

1
也适用于版本5.0.5。
阿巴斯(Abbas)

17

由于默认情况下禁用AOF(仅附加),因此在不重新启动Redis服务的情况下禁用持久性只有一件事是禁用保存配置。

用于在运行时禁用它并验证以下命令的运行

检查当前保存配置

pawan@devops:~$ redis-cli config get save
1) "save"
2) "900 1 300 10 60 10000"

同样的设置也将出现在redis.conf文件中

pawan@devops:~$ grep -w 'save' /etc/redis/redis.conf | grep -v '#'
save 900 1
save 300 10
save 60 10000

禁用保存配置

pawan@devops:~$ redis-cli config set save ""
OK

使用新的保存配置修改redis.conf文件,以便该配置在Redis服务重新启动时保持永久

root@ip-172-16-3-114:~# redis-cli config rewrite
OK

确认新的保存配置

pawan@devops:~$ redis-cli config get save
1) "save"
2) ""

现在,如果您将扫描redis.conf文件进行保存配置,将不会有任何结果

pawan@devops:~$ grep -w 'save' /etc/redis/redis.conf | grep -v '#'  
pawan@devops:~$

8

对于RDB快照,您可以使用禁用它

$ sed -e '/save/ s/^#*/#/' -i /etc/redis/redis.conf && sudo service redis-server restart

它将注释redis.conf中的保存行并重新启动redis-server

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.