zoukankan      html  css  js  c++  java
  • redis设置密码以及jedisPool设置密码

    转:

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

    版权声明:本文为博主原创文章,未经博主允许不得转载。 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. }

    测试结果:

    测试成功

  • 相关阅读:
    WHERE col1=val1 AND col2=val2;index exists on col1 and col2, the appropriate rows can be fetched directly
    MySQL 交集 实现方法
    MBProgressHUD的使用
    Xcode4 使用 Organizer 分析 Crash logs(转)
    SimpleXML 使用详细例子
    PHP的XML Parser(转)
    iPhone,iPhone4,iPad程序启动画面的总结 (转)
    Pop3得到的Email 信件格式介绍
    yii总结
    隐藏Tabbar的一些方法
  • 原文地址:https://www.cnblogs.com/libin6505/p/10694209.html
Copyright © 2011-2022 走看看