文章说明
注意:
此文章为docker从0搭建redis直观的解决jedis连接redis密码报错问题.
如可以接受每次重启服务器手动设置redis密码,可不参考文章所有内容。
此文为个人的方案,如未帮到你或找到了更好的方法,勿喷.
docker创建redis容器一定要设置密码,不然每次重启服都要设置密码很繁琐。
2020.7.4日时 在跟着案例写一个模块时,测试一个发送消息的功能,连接redis报错。具体解决问题也是折腾了近三个小时参考资料才得以解决,有说是连接池太小,还是不得了之。最终解决的方法 再次设置redis启动密码解决。
可是在关闭了redis连接,再次启动redis还是会报错误,因为密码的问题,进入容器设置密码即可解决,需要每次都设置,很麻烦。
具体报错如下
服务端测试报错如下
jedisPool.returnResource(jedis)
最终通过idea编写一个jedis连接redis设置键值查看是否成功,才找到问题源头
结果还是报错,具体原因是redis密码的问题,就这样一个基础的jedis连接reids设置一个key value 如此简单的几行代码报了一个错。
Exception in thread “main” redis.clients.jedis.exceptions.JedisDataException
于是就进入到了docker中的redis中设置了一下密码,再次java启动类,成功运行 不报错了,也将值添加到了redis中。可是这样太过于繁琐了,假如每次重启服务器之后 还得在手动进入docker容器中的redis设置redis的密码。
redis 127.0.0.1:6379> CONFIG SET requirepass "123456"
OK
redis 127.0.0.1:6379> AUTH 123456
Ok
每次都需要手动进入docker 中redis容器 设置一下密码才可以解决错误,过于麻烦。以下是个人的总结方案
问题源头
之前docker拉取redis时,通过docker创建redis容器时,语句的问题导致报了密码的错误
之前创建redis容器踩的坑 如下命令
之前只是简单的创建redis容器命令 也是如下这个命令坑惨了我:
docker run -p 6379:6379 --name myredis -d redis:6.0.5
具体重启服务容器报错误就在于这个创建容器的命令
↑为redis容器启动个人踩的坑导致报的密码错误
正确创建redis容器命令 启动并设置密码、开启持久化
docker run -d --name redis-server -p 6379:6379 redis:6.0.5 --requirepass "diypassword" --appendonly yes
之后我将docker中的redis所有相关内容删除,执行正确的创建redis命令,这时每次重启服务,jedis不会报错误 设置密码
创建redis启动容器很关键,报错的直接原因,启动容器的命令一定要注意!!!
下面从0开始docker拉取redis并运行起来redis解决报密码错误的问题
docker从0开始拉取redis并设置密码 开启持久化运行容器
docker pull redis:6.0.5
docker images
docker run -d --name redis-server -p 6379:6379 redis:6.0.5 --requirepass "123456" --appendonly yes
docker exec -it 容器名或id简写 /bin/bash
redis-cli -p 6379
redis-cli -p 6379
auth 设置的密码
select 0
set k1 v1
此时设置的key value已成功执行,已设置key value
再次重启redis容器,验证jedis连接redis是否还报错密码的问题
docker ps
docker stop 容器简写id或名称
docker start 容器简写id或名称
重启完后。最后再来验证一下是否还报错误redis密码的相关问题
最终 ,完美解决每次redis容器重启后,jedis连接redis报密码相关错误的信息
此方法为docker中redis个人解决的问题,可能还有其余更多好的方法,也有说改redis.conf中的内容,由于找不到docker中redis的配置相关信息。就用了此方法简单明了的解决了报错的问题。
总结完毕,总结不易,支持的请点个赞,感谢~