前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于线上问题Docker中Redis时报错

关于线上问题Docker中Redis时报错

作者头像
程序员Leo
发布2023-08-08 12:50:29
3650
发布2023-08-08 12:50:29
举报
文章被收录于专栏:Java知识点

原因: docker部署redis ,项目使用 redis 时,报错 nested exception is io.lettuce.core.RedisCommandExecutionException: READONLY ( 当前redis为只读

# 1. 思路

最开始我的思路是,可能当时是因为 Docker 部署的 Redis,没有什么配置文件相关的配置,导致当前 Redis 只能读不能写入。

# 2. 解决方式

# 2.1 进入容器

代码语言:javascript
复制
docker exec -it redis /bin/bash 

# 2.2 进入 Redis 客户端

代码语言:javascript
复制
redis-cli 

# 2.3 查看 Redis 属性信息

image-20230716154232437
image-20230716154232437

备注: 可看到redis为slave ,为从节点,默认为只读

# 2.4 设置 redis 只读属性为 no

image-20230716154315510
image-20230716154315510

重启 Redis 容器之后,发现问题解决了。

# 3. 后续

但是第二天发现仍出现了昨天同样的问题,于是觉得这种方式行不通,通过查询资料得知,在服务器安装 Redis 则必须对外访问 ip 设置为 0.0.0.0,并且 Redis 必须设置密码

于是删除 Docker 中的 Reids 镜像,重新安装 Reis,并设置密码访问。

代码语言:javascript
复制
1. 拉取redis镜像
# 不指定版本号,默认拉取最新版的redis 
docker pull redis
# 指定的版本号 docker pull redis:5.0.14
# 查看镜像是否拉取成功docker images

2. 运行redis
# 带密码认证的redis,登录时需要输入验证码  appendonly(redis是否持久化)
docker run --name redis -p 6379:6379 -d --restart=always redis redis-server --appendonly yes --requirepass 123456

# 不带密码认证的redis
docker run --name redis -p 6379:6379 -d --restart=always redis redis-server --appendonly yes

这里一定要选择第一种,Redis 持久化,设置密码

# 4. 总结

OK,到这里问题才完全解决!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-07-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • # 1. 思路
  • # 2. 解决方式
    • # 2.1 进入容器
      • # 2.2 进入 Redis 客户端
        • # 2.3 查看 Redis 属性信息
          • # 2.4 设置 redis 只读属性为 no
          • # 3. 后续
          • # 4. 总结
          相关产品与服务
          容器镜像服务
          容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档