返回顶部
首页 > 资讯 > 数据库 >动态添加Redis密码认证的方法
  • 176
分享到

动态添加Redis密码认证的方法

密码方法动态 2022-06-04 17:06:51 176人浏览 泡泡鱼
摘要

如果Redis已在线上业务使用中,但没有添加密码认证,那么如何在不影响业务服务的前提下给redis添加密码认证,就是一个需要仔细考虑的问题。 本文描述一种可行的方案,适用于客户端使用了jedis连接池,服务

如果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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

您可能感兴趣的文档:

--结束END--

本文标题: 动态添加Redis密码认证的方法

本文链接: https://lsjlt.com/news/11868.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 动态添加Redis密码认证的方法
    如果redis已在线上业务使用中,但没有添加密码认证,那么如何在不影响业务服务的前提下给redis添加密码认证,就是一个需要仔细考虑的问题。 本文描述一种可行的方案,适用于客户端使用了jedis连接池,服务...
    99+
    2022-06-04
    密码 方法 动态
  • redis配置认证密码的方法
    1.通过配置文件进行配置 yum方式安装的redis配置文件通常在/etc/redis.conf中,打开配置文件找到 #requirepass foobared 去掉行前的注释,并修改密码为所需的密...
    99+
    2022-06-04
    密码 方法 redis
  • Spring Security 密码验证动态加盐的验证处理方法
    本文个人博客地址:https://www.leafage.top/posts/detail/21697I2R 最近几天在改造项目,需要将gateway整合security在一起进行认...
    99+
    2024-04-02
  • dedecms添加登录管理认证码的方法
    本文实例讲述了dedecms添加登录管理认证码的方法。分享给大家供大家参考。具体分析如下: 随着dedecms用的人越来越多,也就引来各种关注,然后就各种漏洞、入侵,最近又爆出了一个堪称全版本都有的漏洞,的确,我goog...
    99+
    2022-06-12
    dedecms 添加 登录 管理 认证码 方法
  • Redis的加密和认证措施有哪些
    Redis提供了两种加密和认证措施: SSL/TLS 加密:Redis支持通过SSL/TLS协议对网络连接进行加密,以保护数据在...
    99+
    2024-05-07
    Redis
  • JavaScript动态添加HTML控件的方法
    今天小编给大家分享一下JavaScript动态添加HTML控件的方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下...
    99+
    2024-04-02
  • Android动态添加view的方法示例
    由于项目需求菜单写活,效果如下:这里的按钮数量是可变的.png由于不是可滑动控件,我用的百分比布局做的适配 LinearLayout typeLayout = (LinearLayout) headerView.findViewById(R...
    99+
    2023-05-30
    android 动态 添加view
  • redis加动态锁的方法是什么
    在Redis中实现动态锁的方法有多种,以下是一种常见的方法:1. 使用SET命令设置锁:在获取锁之前,使用SET命令将一个特定的键值...
    99+
    2023-08-30
    redis
  • 添加redis缓存的方法
    这期内容当中小编将会给大家带来有关添加redis缓存的方法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。redis常本用来作为缓存服务器。缓存的好处是减少服务器的压力,数...
    99+
    2024-04-02
  • SpringBoot添加SSL证书的方法
     一、先进行域名的购买 域名购买完毕,进行DNS的解析,我用的是阿里云的,服务器与域名都同时使用的阿里云 记录值这里填你的服务器的IP 地址 二、申请SSL证书 阿里云...
    99+
    2024-04-02
  • Android使用addView动态添加组件的方法
    在项目开发中,我们经常需要进行动态添加组件,其中可添加的部分有两项:布局和组件  其中,添加的布局主要有RelativeLayout型(相对布局)的和LinearL...
    99+
    2022-06-06
    方法 Android
  • Android动态添加View的问题解决方法
    后台代码 代码如下:    private void ChangeView()    {  &n...
    99+
    2022-06-06
    view 方法 Android
  • Android动态添加menu菜单的简单方法
    从menu按键开始,涉及以下3个方法: 1、onCreateOptionsMenu(Menu menu)2、onPrepareOptionsMenu(Menu menu)3、o...
    99+
    2022-06-06
    方法 Android
  • qt动态添加控件的方法是什么
    在Qt中,可以使用以下方法动态添加控件:1. 使用布局管理器:可以使用QHBoxLayout、QVBoxLayout或QGridLa...
    99+
    2023-09-25
    qt
  • gridview动态添加一列的方法是什么
    在GridView中动态添加一列,可以通过以下方法实现:1. 在GridView的DataSource中添加一个新的列。- 如果使用...
    99+
    2023-09-11
    girdview
  • winform动态添加控件的方法是什么
    在WinForm中,可以通过以下方法动态添加控件:1. 使用Controls.Add方法使用Controls.Add方法可以将控件添...
    99+
    2023-09-05
    winform
  • Android 动态添加Fragment的实例代码
    1.fragment1布局及代码 布局 <?xml version="1.0" encoding="utf-8"?> <Relative...
    99+
    2022-06-06
    fragment 动态 Android
  • MySQL如何实现密码加密认证的简单脚本
    小编给大家分享一下MySQL如何实现密码加密认证的简单脚本,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! MySQL登录的...
    99+
    2024-04-02
  • redis动态增加节点的方法是什么
    Redis动态增加节点的方法有两种,分别是使用Redis Sentinel和使用Redis Cluster。1. 使用Redis S...
    99+
    2023-08-24
    redis
  • Spring动态添加定时任务的实现方法
    本篇内容主要讲解“Spring动态添加定时任务的实现方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring动态添加定时任务的实现方法”吧!一、背景在工作中,有些时候我们有些定时任务的执行...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作