转:

redis设置密码以及jedisPool设置密码

2019年01月02日 20:24:43 宇文荒雪 阅读数:1118
 
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33355821/article/details/85636756

在百度云安装redis服务之后,一直给我发送系统安全警告,推荐我redis设置访问密码,于是出于安全考虑我就设置一下redis的密码

1.修改redis.conf配置文件:

找到requirepass这一行,解注这一行代码,requirepass后面就是跟的自己的密码。

2.关闭redis服务,发现报错:

可以使用下面两个方法关闭服务:

方式一:通过ps aux|grep redis命令查看redis进程,然后通过kill -9 pid方式杀掉进程

如图34691就是pid

方式二:用redis-cli客户端登录, 然后shutdown  然后exit 就OK了

3.启动redis服务:

我们用redis.conf配置文件启动redis服务,然后登录客户端,发现这时候需要我们输入密码了,说明修改的密码已经生效了

4.使用密码连接redis客户端:

使用./redis-cli -a 密码 连接客户端

这时候发现就能连上客户端了!

5.使用jedispool连接redis服务,首先编写redis.properties属性配置文件,将密码端口等信息填写进去

  1. #ip地址
  2. redis.host=192.168.25.131
  3. #端口号
  4. redis.port=6379
  5. #如果有密码
  6. redis.password=123456
  7. #客户端超时时间单位是毫秒 默认是2000
  8. redis.timeout=3000
  9. #数据库,默认的是0
  10. redis.database=0
  11. #最大空闲数
  12. maxIdle=300
  13. #连接池的最大数据库连接数。设为0表示无限制,如果是jedis 2.4以后用redis.maxTotal
  14. maxActive=1000
  15. #控制一个pool可分配多少个jedis实例,用来替换上面的redis.maxActive,如果是jedis 2.4以后用该属性
  16. maxTotal=1000
  17. #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
  18. maxWait=1000
  19. #在空闲时检查有效性, 默认false
  20. testOnBorrow=false
  21. #连接耗尽是否阻塞,false代表抛异常,true代表阻塞直到超时,默认为true
  22. blockWhenExhausted=false
  23.  
  24.  
  25.  
  26. #下面的不是必须的配置
  27. #连接的最小空闲时间 默认1800000毫秒(30分钟)
  28. minEvictableIdleTimeMillis=300000
  29. #每次释放连接的最大数目,默认3
  30. numTestsPerEvictionRun=1024
  31. #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
  32. timeBetweenEvictionRunsMillis=30000
  33. #是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个,数据量大的时候建议关闭
  34. testWhileIdle=true

6.编写applicationContext-redis.xml,将jedispool纳入spring管理,加载属性配置文件(外面包一层JedisClientPool只是为了如果使用集群方式的话就不需要改业务代码了,只需要改配置就行,使用了策略模式)

查看jedisPool的源码我们发现如果想要设置密码只有两种构造方法可以选用,这里我们选择如下这种构造方法在spring配置文件中进行配置:

  1. public JedisPool(final GenericObjectPoolConfig poolConfig, final String host, int port,
  2. int timeout, final String password, final int database) {
  3. this(poolConfig, host, port, timeout, password, database, null);
  4. }

由上面的构造方法我们得知如果jedispool使用密码的话需要配置poolConfig,host,port,timeout,password,database等属性,我们在spring的xml文件中进行配置,并加载上面第五点已经写好的配置文件就行了

  1.  
  2. <!--连接redis单机版,创建了一个JedisClientPool的bean,创建这个bean需要一个jedisPool属性,在下面-->
  3. <bean class="cn.e3mall.common.jedis.JedisClientPool" id="jedisClientPool">
  4. <property name="jedisPool" ref="jedisPool"></property>
  5. </bean>
  6. <!--JedisPool这个bean的构造方法需要多个参数-->
  7. <bean class="redis.clients.jedis.JedisPool" id="jedisPool" >
  8. <constructor-arg name="host" value="${redis.host}"></constructor-arg>
  9. <constructor-arg name="port" value="${redis.port}"></constructor-arg>
  10. <constructor-arg name="password" value="${redis.password}"></constructor-arg>
  11. <constructor-arg name="timeout" value="${redis.timeout}"></constructor-arg>
  12. <constructor-arg name="database" value="${redis.database}"></constructor-arg>
  13. <constructor-arg name="poolConfig" ref="jedisPoolConfig"></constructor-arg>
  14. </bean>
  15. <bean class="redis.clients.jedis.JedisPoolConfig" id="jedisPoolConfig">
  16. <property name="maxIdle" value="${maxIdle}" />
  17. <property name="maxTotal" value="${maxActive}" />
  18. <property name="maxWaitMillis" value="${maxWait}" />
  19. <property name="testOnBorrow" value="${testOnBorrow}" />
  20. <property name="blockWhenExhausted" value="${blockWhenExhausted}" />
  21. </bean>

7.jedisPool接口以及实现类

下面我们编写jedispool的接口以及实现类:

接口:

  1. package cn.e3mall.common.jedis;
  2.  
  3. import java.util.List;
  4.  
  5. public interface JedisClient {
  6.  
  7. String set(String key, String value);
  8. String get(String key);
  9. Boolean exists(String key);
  10. Long expire(String key, int seconds);
  11. Long ttl(String key);
  12. Long incr(String key);
  13. Long hset(String key, String field, String value);
  14. String hget(String key, String field);
  15. Long hdel(String key, String... field);
  16. Boolean hexists(String key, String field);
  17. List<String> hvals(String key);
  18. Long del(String key);
  19. }

实现类:

  1. package cn.e3mall.common.jedis;
  2.  
  3. import redis.clients.jedis.Jedis;
  4. import redis.clients.jedis.JedisPool;
  5.  
  6. import java.util.List;
  7.  
  8. public class JedisClientPool implements JedisClient {
  9.  
  10. private JedisPool jedisPool;
  11.  
  12. public JedisPool getJedisPool() {
  13. return jedisPool;
  14. }
  15.  
  16. public void setJedisPool(JedisPool jedisPool) {
  17. this.jedisPool = jedisPool;
  18. }
  19.  
  20. @Override
  21. public String set(String key, String value) {
  22. Jedis jedis = jedisPool.getResource();
  23. String result = jedis.set(key, value);
  24. jedis.close();
  25. return result;
  26. }
  27.  
  28. @Override
  29. public String get(String key) {
  30. Jedis jedis = jedisPool.getResource();
  31. String result = jedis.get(key);
  32. jedis.close();
  33. return result;
  34. }
  35.  
  36. @Override
  37. public Boolean exists(String key) {
  38. Jedis jedis = jedisPool.getResource();
  39. Boolean result = jedis.exists(key);
  40. jedis.close();
  41. return result;
  42. }
  43.  
  44. @Override
  45. public Long expire(String key, int seconds) {
  46. Jedis jedis = jedisPool.getResource();
  47. Long result = jedis.expire(key, seconds);
  48. jedis.close();
  49. return result;
  50. }
  51.  
  52. @Override
  53. public Long ttl(String key) {
  54. Jedis jedis = jedisPool.getResource();
  55. Long result = jedis.ttl(key);
  56. jedis.close();
  57. return result;
  58. }
  59.  
  60. @Override
  61. public Long incr(String key) {
  62. Jedis jedis = jedisPool.getResource();
  63. Long result = jedis.incr(key);
  64. jedis.close();
  65. return result;
  66. }
  67.  
  68. @Override
  69. public Long hset(String key, String field, String value) {
  70. Jedis jedis = jedisPool.getResource();
  71. Long result = jedis.hset(key, field, value);
  72. jedis.close();
  73. return result;
  74. }
  75.  
  76. @Override
  77. public String hget(String key, String field) {
  78. Jedis jedis = jedisPool.getResource();
  79. String result = jedis.hget(key, field);
  80. jedis.close();
  81. return result;
  82. }
  83.  
  84. @Override
  85. public Long hdel(String key, String... field) {
  86. Jedis jedis = jedisPool.getResource();
  87. Long result = jedis.hdel(key, field);
  88. jedis.close();
  89. return result;
  90. }
  91.  
  92. @Override
  93. public Boolean hexists(String key, String field) {
  94. Jedis jedis = jedisPool.getResource();
  95. Boolean result = jedis.hexists(key, field);
  96. jedis.close();
  97. return result;
  98. }
  99.  
  100. @Override
  101. public List<String> hvals(String key) {
  102. Jedis jedis = jedisPool.getResource();
  103. List<String> result = jedis.hvals(key);
  104. jedis.close();
  105. return result;
  106. }
  107.  
  108. @Override
  109. public Long del(String key) {
  110. Jedis jedis = jedisPool.getResource();
  111. Long result = jedis.del(key);
  112. jedis.close();
  113. return result;
  114. }
  115.  
  116. }

8.测试类:

  1. package cn.e3mall.jedis;
  2.  
  3. import cn.e3mall.common.jedis.JedisClient;
  4. import org.junit.Test;
  5. import org.springframework.context.ApplicationContext;
  6. import org.springframework.context.support.ClassPathXmlApplicationContext;
  7.  
  8. /**
  9. * @author sunqizheng
  10. * @Title: TestJedisClient
  11. * @ProjectName ttmall
  12. * @Description: TODO
  13. * @date 2018/9/1917:21
  14. */
  15. public class TestJedisClient {
  16. @Test
  17. public void TestJedisClient() throws Exception{
  18. //初始化一个spring容器
  19. ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-redis.xml");
  20. //从容器中获得JedisClient对象,(拿到接口的对象)
  21. JedisClient jedisClient = applicationContext.getBean(JedisClient.class);
  22. jedisClient.set("mytest","jedisClient1");
  23. String string = jedisClient.get("mytest");
  24. System.out.println(string);
  25. }
  26. }

测试结果:

测试成功

redis设置密码以及jedisPool设置密码的更多相关文章

  1. 【微软版本】redis 安装启动及设置密码<windows>

    redis 安装启动及设置密码<windows>   redis 1. 安装 1.1 下载解压包,直接解压到任意路径下即可 windows下载地址:ttps://github.com/MS ...

  2. redis连接池——JedisPool和JedisCluster的介绍与使用

    目录 Jedis使用方式的介绍 Redis连接池介绍 创建连接池配置文件 单机版的Redis连接池 集群版的Redis连接池 总结 Jedis使用方式的介绍 Jedis就是Java实现的操作Redis ...

  3. Consider defining a bean of type 'redis.clients.jedis.JedisPool' in your configuration.

    报错信息 原因是没有Jedispool没有注入 import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml ...

  4. serviceStack.Redis 在PooledRedisClientManager 中设置密码

    ServiceStack.Redis 是一个C#访问Redis的客户端,可以说可以通过它实现所有需要Redis-Cli的功能.但是今天我在主Redis 实例设置了访问密码,而在slave 上没有设置, ...

  5. redis权限认证(设置密码)的方法

    redis可以通过设置密码来增强安全强度.除了设置密码,我们还可以通过修改redis的默认端口.对端口做防火墙等.那么如何开启redis的密码功能呢?以下就是详细的步骤方法: 打开redis.conf ...

  6. redis 安装启动及设置密码<windows>

    redis 1. 安装 1.1 下载解压包,直接解压到任意路径下即可 windows下载地址:ttps://github.com/MSOpenTech/redis/releases 2.启动 2.1 ...

  7. redis 连接字符串,设置密码

    <add name="Abp.Redis.Cache" connectionString="127.0.0.1:6379,password=123456" ...

  8. 第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第七天】(redis缓存)

    https://pan.baidu.com/s/1bptYGAb#list/path=%2F&parentPath=%2Fsharelink389619878-229862621083040 ...

  9. windows下远程访问Redis,windows Redis绑定ip无效,Redis设置密码无效,Windows Redis 配置不生效,Windows Redis requirepass不生效,windows下远程访问redis的配置

    转载:http://fanshuyao.iteye.com/blog/2384074 一.Redis下载地址: https://github.com/MicrosoftArchive/redis/re ...

随机推荐

  1. python之路--MySQL 库,表的详细操作

    一 库操作 数据库命名规则 可以由数字,字母,下划线,@, #, $ 区分大小写 唯一性 不能使用关键字如 create  select 不能单独使用数字 最长128位 # 这些是对上次的补充. 二 ...

  2. python之路--内置函数03

    一 . 正则表达式 匹配字符串 元字符 . 除了换行 \w 数字, 字母, 下划线 \d 数字 \s 空白符 \n \t \b 单词的边界 \W 非xxx \D \S [ ] 字符组 or的关系 [^ ...

  3. mpi4python

    转载:https://zhuanlan.zhihu.com/p/25332041 前言 在高性能计算的项目中我们通常都会使用效率更高的编译型的语言例如C.C++.Fortran等,但是由于Python ...

  4. 彻底弄懂 HTTP 缓存机制及原理 | 干货

    来源:www.cnblogs.com/chenqf/p/6386163.html 前言 Http 缓存机制作为 web 性能优化的重要手段,对于从事 Web 开发的同学们来说,应该是知识体系库中的一个 ...

  5. JQ用法

    jQuery简称jq,是一款同prototype一样优秀js开发库类,特别是对css和XPath的支持,使我们写js变得更加方便!如果你不是个js高手又想写出优 秀的js效果,jq可以帮你达到目的!下 ...

  6. 基本排序算法[python实现]

    冒泡排序 原理 冒泡排序(Bubble Sort)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换, ...

  7. python中的logging模块学习

    Python的logging模块 Logging的基本信息: l  默认的情况下python的logging模块打印到控制台,只显示大于等于warning级别的日志 l  日志级别:critical ...

  8. 【BZOJ4325】【NOIP2015】斗地主 搜索

    题目描述 就是给你一副牌,问你最少几次能出完. 详细规则见规则 \(n\leq 23\) 题解 NOIP的数据非常水,错误一大堆的程序都能AC. 因为顺子对答案的影响最大,所以先枚举顺子进行搜索. 接 ...

  9. 【XSY1301】原题的价值 第二类斯特林数 NTT

    题目描述 给你\(n,m\),求所有\(n\)个点的简单无向图中每个点度数的\(m\)次方的和. \(n\leq {10}^9,m\leq {10}^5\) 题解 \(g_n\)为\(n\)个点的无向 ...

  10. 【XSY1528】azelso 概率&期望DP

    题目大意 有一条很长很长的路(出题人的套路),你在\(0\)位置,你要去\(h\)位置. ​ 路上有一些不同的位置上有敌人,你要和他战斗,你有\(p\)的概率赢.若你赢,则你可以走过去,否则你会死.还 ...