当前位置: 首页 > 知识库问答 >
问题:

Docker:MISCONF Redis配置为保存RDB快照

袁飞鹏
2023-03-14

与此类似的问题有几个,如:

Redis被配置为保存RDB快照,但它目前无法持久保存在Disk-Ubuntu服务器上

MISCONF Redis配置为保存RDB快照,但当前无法在磁盘上持久保存。禁用可能修改数据集的命令

当Redis安装在Docker之外时,这就可以工作了。但是我如何用docker-compose运行这个命令呢?

我尝试了以下操作:

services:
  cache:
    image: redis:5-alpine
    command: ["echo", "1", ">", "/proc/sys/vm/overcommit_memory", "&&", "redis-server"]
    ports:
      - ${COMPOSE_CACHE_PORT:-6379}:6379
    volumes:
      - cache:/data

这不起作用:

 docker-compose up
Recreating constructor_cache_1 ... done
Attaching to constructor_cache_1
cache_1  | 1 > /proc/sys/vm/overcommit_memory && redis-server
constructor_cache_1 exited with code 0


#!/bin/sh
set -e

echo 1 > /proc/sys/vm/overcommit_memory


# first arg is `-f` or `--some-option`
# or first arg is `something.conf`
if [ "${1#-}" != "$1" ] || [ "${1%.conf}" != "$1" ]; then
    set -- redis-server "$@"
fi

# allow the container to be started with `--user`
if [ "$1" = 'redis-server' -a "$(id -u)" = '0' ]; then
    find . \! -user redis -exec chown redis '{}' +
    exec su-exec redis "$0" "$@"
fi


exec "$@"

services:
  cache:
    image: redis:5-alpine
    ports:
      - ${COMPOSE_CACHE_PORT:-6379}:6379
    volumes:
      - cache:/data
      - ./.cache/custom-entrypoint.sh:/usr/local/bin/custom-entrypoint.sh
    entrypoint: /usr/local/bin/custom-entrypoint.sh

怎么解决这个?

共有1个答案

单于季
2023-03-14

您的redis不安全

更新:使用expose而不是ports,这样该服务仅可用于链接的服务

公开端口而不将其发布到主机--它们仅可被链接的服务访问。只能指定内部端口。

expose
 - 6379

这可能是由于redis-server实例不安全造成的。docker容器中的默认redis映像不安全。

我能够使用redis-cli-h 连接到我的Web服务器上的redis

为了解决这个问题,我阅读了这篇DigitalOcean的文章和许多其他文章,并得以关闭港口。

  • 您可以从此处选择默认的redis.conf
  • 然后将docker-composeredis部分更新为(相应地更新文件路径)
redis:
    restart: unless-stopped
    image: redis:6.0-alpine
    command: redis-server /usr/local/etc/redis/redis.conf
    env_file:
      - app/.env
    volumes:
      - redis:/data
      - ./app/conf/redis.conf:/usr/local/etc/redis/redis.conf
    ports:
      - "6379:6379"

命令中的redis.conf路径应匹配

  • 根据需要重新生成redis或所有服务
  • 尝试使用redis-cli-h 验证(它对我已停止工作)
 类似资料:
  • 问题内容: 在写入Redis()期间,出现以下错误: MISCONF Redis配置为保存RDB快照,但当前无法持久保存在磁盘上。禁用了可能修改数据集的命令。请检查Redis日志以获取有关该错误的详细信息。 基本上,我了解到问题在于redis无法将数据保存在磁盘上,但是不知道如何解决该问题。 同样,以下问题也有相同的问题,它很久以前就被抛弃了,没有答案,很可能没有尝试解决该问题。 问题答案: 万一

  • 在写入Redis()的过程中,我收到以下错误: MISCONF Redis配置为保存RDB快照,但当前无法在磁盘上持久保存。禁用可能修改数据集的命令。有关该错误的详细信息,请查看Redis日志。 基本上,我知道问题是redis不能在磁盘上保存数据,但不知道如何解决这个问题。 下面的问题也有同样的问题,它很久以前就被放弃了,没有答案,很可能也没有试图解决问题。

  • 当我试图保存到redis时,我遇到了这个问题。介绍以下信息。 Miscf Redis配置为保存RDB快照,但目前无法保存到磁盘。可能修改数据集的命令被禁用,因为此实例配置为在RDB快照失败时报告写入期间的错误(在bgsave error选项上停止写入)。请检查红色 redis日志文件显示: 后台保存由pid 73启动在磁盘上保存数据库时发生写入错误:功能未实现 有人经历过这种情况吗?

  • 每当我在redis中执行任何修改数据的命令时,我会得到以下错误 我在Mac上使用brew安装了redis。如何获取redis-server将信息记录到的日志文件的位置。我试着找redis Conf。文件,但也找不到。 我如何摆脱上面的错误,并且能够在Redis中执行修改数据的命令。

  • 我正在使用Redis,但我有一个错误:MISCONF Redis被配置为保存RDB快照,但当前无法保存在磁盘上。禁用可能修改数据集的命令。有关错误的详细信息,请查看Redis日志 服务器:CentOS 7-Vultr 但是,我不是用建议来解决的。 拜托,帮帮我。

  • 我得到以下Redis错误: 但是,它与权限无关,因为它只在重新启动后的某个时间才开始发生(最近的一次发生是在重新启动后的一天左右)。当它发生时,服务器有足够的内存和磁盘空间。有什么建议吗?多谢了。 编辑:正确保存时,Redis日志显示如下: [2354]13 Nov 09:56:16.071*300秒内发生10次变化。正在保存... [2354]13 Nov 09:56:16.072*后台保存由p