动态添加Redis密码认证的方法
发布时间 - 2026-01-11 01:48:23 点击率:次如果redis已在线上业务使用中,但没有添加密码认证,那么如何在不影响业务服务的前提下给redis添加密码认证,就是一个需要仔细考虑的问题。

本文描述一种可行的方案,适用于客户端使用了jedis连接池,服务端使用了redis master-slave集群的情况。
1.定制jedis
对redis返回的错误的处理,做两处修改:
忽略 (error) ERR Client sent AUTH, but no password is set。使配置了密码的jedis可以在没有配置密码redis上使用;
发生(error) NOAUTH Authentication required时,将当前connection置为broken,从而将连接踢出连接池。这样动态给redis添加上密码时,jedis会自动重新创建可用连接。
我已经对jedis 2.8.x版本做好了以上修改。可以直接下载使用 。如果使用了更高的版本jedis,可以参考我的代码自行修改;如果使用了更低版本的,建议升级到2.8.x。
2.在项目代码中使用定制的jedis
修改maven配置。将原来的jedis依赖注释掉,添加对本地的定制jedis的依赖:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.3</version>
<scope>system</scope>
<systemPath>${project.basedir}/../libs/jedis-2.8.3.jar</systemPath> <!-- 此处的systemPath是jedis-2.8.3所在的相对路径 -->
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.4.2</version>
</dependency>
<!--
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.1</version>
</dependency>
-->
因为把定制jedis通过本地jar包的形式提供,maven不会自动加载jedis的依赖,所以需额外添加对commons-pool2的依赖。
3.如果使用了低版本的jedis
老版本jedis的returnBrokenResource和returnResource这两个方法在新版本jedis中已经废弃,如果升级jedis版本的话,需要替换为close方法。
替换前:
try {
// ...
} catch (JedisException e) {
// ...
pool.returnBrokenResource(jedis);
}
finally {
pool.returnResource(jedis);
}
替换后:
try {
// ...
} catch (JedisException e) {
// ...
}
finally {
jedis.close();
}
4.将使用定制jedis的项目代码上线
此时redis尚未添加密码,但定制jedis忽略了“ERR Client sent AUTH, but no password is set”,所以线上运行正常。
5.给redis server添加密码认证
动态添加密码会导致redis主从同步断开,为避免引起全量同步对业务造成较大影响。需要dba先调大redis master的client-output-buffer-limit和repl-backlog-size参数,再做配置密码操作。
给redis server添加密码的同时,观察业务代码的log,添加完密码后,log中会出现数次如下报错,随后恢复正常。报错次数是添加密码时,业务服务器的jedis连接池中与该redis server之间连接数量。
复制代码 代码如下:
redis.clients.jedis.exceptions.JedisConnectionException: NOAUTH Authentication required.
如果使用了shardedJedis,请逐个分片进行操作,最小化对业务服务的影响。
6.更换jedis为官方版本
定制jedis就是为了动态添加密码认证。添加完毕后,换回官方jedis,方便今后升级。
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.8.1</version> </dependency>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# 动态添加Redis密码
# Redis动态密码认证
# Redis
# 密码认证
# 基于redis集群设置密码的实例
# redis-cli 使用密码登录的实例
# 解决Redis设置密码重启后失效的问题
# redis中修改配置文件中的端口号 密码方法
# Redis 密码设置和查看密码的方法
# 详解Redis使用认证密码登录
# redis密码设置、访问权限控制等安全设置
# Redis 数据库忘记密码找回或重置的解决方法
# 使用了
# 线上
# 报错
# 连接池
# 适用于
# 这两个
# 更高
# 可以直接
# 已在
# 升级到
# 下载使用
# 再做
# 新版本
# 恢复正常
# 数次
# 更低
# 中会
# 而将
# 两处
# 服务端
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Internet Explorer官网直接进入 IE浏览器在线体验版网址
网站制作大概多少钱一个,做一个平台网站大概多少钱?
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
历史网站制作软件,华为如何找回被删除的网站?
百度浏览器如何管理插件 百度浏览器插件管理方法
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
如何在建站宝盒中设置产品搜索功能?
Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决
如何有效防御Web建站篡改攻击?
如何快速生成高效建站系统源代码?
如何用狗爹虚拟主机快速搭建网站?
进行网站优化必须要坚持的四大原则
Laravel如何实现API速率限制?(Rate Limiting教程)
Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理
Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知
Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
实例解析angularjs的filter过滤器
Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用
如何将凡科建站内容保存为本地文件?
SQL查询语句优化的实用方法总结
如何在建站之星网店版论坛获取技术支持?
网站建设整体流程解析,建站其实很容易!
高性能网站服务器配置指南:安全稳定与高效建站核心方案
laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
微信小程序 HTTPS报错整理常见问题及解决方案
phpredis提高消息队列的实时性方法(推荐)
如何快速搭建高效简练网站?
如何快速生成橙子建站落地页链接?
Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
详解jQuery中的事件
php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】
重庆市网站制作公司,重庆招聘网站哪个好?
Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤
Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
Laravel如何处理异常和错误?(Handler示例)
如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
如何在万网自助建站平台快速创建网站?
HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】
nginx修改上传文件大小限制的方法
Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】
如何在Windows 2008云服务器安全搭建网站?
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区

