【问题标题】:How to disable persistence with redis?如何使用redis禁用持久性?
【发布时间】:2023-03-21 23:54:02
【问题描述】:

我想知道如何在 redis 中禁用 presistence。这里提到了这样做的可能性:http://redis.io/topics/persistence。我的意思与那里描述的完全相同。任何帮助将不胜感激!

【问题讨论】:

  • 我觉得很惊讶,如果不是烦人的话,官方网站上没有关于这方面的说明,互联网上也没有很多关于这方面的信息(请参阅stackoverflow.com/questions/19581059/… 有更多的选票并且更好记录比这)。总体考虑到 Redis 经常被用作非持久性数据库。

标签: redis


【解决方案1】:

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

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

    appendonly no
    
  2. 通过注释所有 save 配置指令(默认定义 3 个)并显式禁用保存来禁用 RDB 快照:

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

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

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

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

【讨论】:

  • redis> 配置集 auto-aof-rewrite-percentage 0
  • 我已将我的 Redis 配置为不通过注释掉三个 save 指令将数据保存到磁盘。我可以看到它不再定期对数据进行快照。但是,每当我关闭服务器时,我仍然会看到一个写入磁盘的 .rdb 文件。是否可以创建它,可能是由于故障转移过程?
  • 要真正实现这一点,您可以使用此处列出的命令通过 cli 执行此操作:stackoverflow.com/a/34736871/2904315 或者您可以按照此答案中的说明更改 redis.conf 文件,然后重新启动服务与:systemctl restart redis
  • 在linux中,redis.conf文件位于/etc/redis/redis.conf
  • 另外不要忘记删除默认配置创建的任何现有*.rdb 文件。例如。就我而言,在评论 save 行后,我还必须在重启前删除 /var/lib/redis/dump.rdb
【解决方案2】:

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

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

(用redis服务器3.2.65.0.5测试)

【讨论】:

  • 您确定--appendonly no 是必要的吗?不是默认关闭的吗?
  • 可能是真的。但是添加它当然没有坏处,只是为了安全起见,我们想要的是禁用所有类型的持久性;)
  • 嗯,在 WSL(Ubuntu 16)的 Windows 10 上对我不起作用
  • @JamesGentes 有什么错误。它可以在我的 Fedora 29 和 Redis 5.0.3 中使用,现在已经测试过了。也许您需要在 Windows 中以不同的方式传递参数? Redis 版本是多少? redis-server --help 或许可以提供一些见解
  • 也适用于 5.0.5 版本。
【解决方案3】:

由于 AOF (appendonly) 默认是禁用的,在没有 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

使用新的 save 配置修改 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 文件以进行 save 配置,则不会有任何结果

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

【讨论】:

    【解决方案4】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-15
      相关资源
      最近更新 更多