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. }

    测试结果:

    测试成功

  • 相关阅读:
    mysql 版本查看
    js 中文乱码
    浏览器内核
    Squid 代理服务器
    minicygwin
    firefox 插件开发
    ocx c++
    NetBeans
    android 虚拟机
    ExpandableListView
  • 原文地址:https://www.cnblogs.com/libin6505/p/10694209.html
Copyright © 2011-2022 走看看