Spring整合redis连接池

2018-08-02 05:53:40来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

 

  1. 在pom.xml中添加redis客户端jedis依赖

  2. <dependency>
         <groupId>redis.clients</groupId>
         <artifactId>jedis</artifactId>
         <version>2.6.0</version>
    </dependency>

    redis linux下安装

  3. 1.下载、上传、解压
        redis-4.0.2.tar.gz
    2.安装C语言编译环境
        yum install -y gcc-c++
    3.编译安装
        编译:进入Redis解压目录执行make命令
        安装:make install
    4.创建Redis专属目录
        mkdir /usr/local/redis
    5.将redis.conf复制到专属目录并修改
         35 # By default Redis does not run as a daemon. Use 'yes' if you need it.
         36 # Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
         37 daemonize yes
    6.启动Redis
        /usr/local/bin/redis-server /usr/local/redis/redis.conf
        查看6379端口监听情况
        临时指定端口号的启动方式如下:
        /usr/local/bin/redis-server /usr/local/redis/redis.conf --port 7000
        如果不指定配置文件位置则按默认配置启动。
    7.压力测试
        /usr/local/bin/redis-benchmark
        Redis每秒80000次写操作,110000次读操作。
    8.通过Redis客户端登录Redis服务器
        [root@right bin]# /usr/local/bin/redis-cli [-p 6379]
        127.0.0.1:6379> ping
        PONG
        127.0.0.1:6379> exit
        [root@right bin]#
    9.停止Redis服务器
        按默认6379端口号停止:/usr/local/bin/redis-cli shutdown
        停止指定服务器:/usr/local/bin/redis-cli -h 127.0.0.1 -p 6379 shutdown
        在客户端登录状态下停止:127.0.0.1:6379> shutdown

     新建spring配置文件 spring-redis.xml 

  4. <bean class="redis.clients.jedis.JedisPool" id="jedisPool">
            <constructor-arg name="host" value="${redis.host}"></constructor-arg>
            <constructor-arg name="poolConfig" ref="jedisPoolConfig"></constructor-arg>
            <constructor-arg name="port" value="${redis.port}"></constructor-arg>
        </bean>
        <bean class="redis.clients.jedis.JedisPoolConfig" id="jedisPoolConfig">
            <property name="maxIdle" value="${maxIdle}" />
            <property name="maxTotal" value="${maxActive}" />
            <property name="maxWaitMillis" value="${maxWait}" />
            <property name="testOnBorrow" value="${testOnBorrow}" />
            <property name="blockWhenExhausted" value="${blockWhenExhausted}" />
        </bean> 
  5.  新建redis.properties属性文件,相关的配置信息在属性文件中配置,比如host port 等等

  6. # 主要配置,其他配置可不用填写
    redis.host=对应的IP地址 redis.port=6379 #对应的端口号,默认6379 maxIdle=300 maxActive=1000 maxWait=1000 maxTotal=600 testOnBorrow=false blockWhenExhausted=true

     其他配置说明

  7. #ip地址
    redis.hostName=127.0.0.1
    #端口号
    redis.port=6379
    #如果有密码
    redis.password=
    #客户端超时时间单位是毫秒 默认是2000
    redis.timeout=10000  
    
    
    #最大空闲数
    redis.maxIdle=300  
    #连接池的最大数据库连接数。设为0表示无限制,如果是jedis 2.4以后用redis.maxTotal
    #redis.maxActive=600
    #控制一个pool可分配多少个jedis实例,用来替换上面的redis.maxActive,如果是jedis 2.4以后用该属性
    redis.maxTotal=1000  
    #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
    redis.maxWaitMillis=1000  
    #连接的最小空闲时间 默认1800000毫秒(30分钟)
    redis.minEvictableIdleTimeMillis=300000  
    #每次释放连接的最大数目,默认3
    redis.numTestsPerEvictionRun=1024  
    #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
    redis.timeBetweenEvictionRunsMillis=30000  
    #是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个,数据量大的时候建议关闭
    redis.testOnBorrow=true  
    #在空闲时检查有效性, 默认false
    redis.testWhileIdle=true 

     编写redis通用工具类JedisCacheClient,因为我目前只用到三个,所以只写了三个最常用的set  get 和expire

    1. @Service //把当前类放入到spring的IOC容器中
      public class JedisCacheClient {
          @Autowired //自动注入redis连接池
          private JedisPool jedisPool;
      
          /**
           * setVExpire(设置key值,同时设置失效时间 秒
           */
          public void set(String key, String value) {
              Jedis jedis = null;
              try {
                  jedis = jedisPool.getResource();
                  jedis.set(key, value);
      
              } catch (Exception e) {
                  e.printStackTrace();
              } finally {
                 this.close(jedis); 
              }
      
          }
      
          /**
           * (存入redis数据)
           */
          public void expire(String key, String value, Integer times) {
              Jedis jedis = null;
              try {
                  jedis = jedisPool.getResource();
                  jedis.set(key, value);
                  jedis.expire(key, times);
      
              } catch (Exception e) {
                  e.printStackTrace();
              } finally {
                  this.close(jedis);
              }
          }
      
          /**
           * 删除redis数据
           */
          public void del(String key) {
              Jedis jedis = null;
              try {
                  jedis = jedisPool.getResource();
                  jedis.del(key);
      
              } catch (Exception e) {
                  e.printStackTrace();
              } finally {
                  this.close(jedis);
              }
          }
         /**
           * 获取key的值
           */
      public String get(String key) {
              Jedis jedis = null;
              try {
                  jedis = jedisPool.getResource();
                  String s = jedis.get(key);
                  return s;
              } catch (Exception e) {
                  e.printStackTrace();
              } finally {
                  this.close(jedis);
              }
              return null;
          }
      
          /**
           * 释放连接
           * @param jedis
           */
          public void close(Jedis jedis){
              if (jedis != null) {
                  jedis.close();
                  if (jedis.isConnected()) {
                      try {
                          jedis.disconnect();
                      } catch (Exception e) {
                          e.printStackTrace();
                      }
                  }
              }
          }
      }
  8.  安装redis本地客户端Redis Desktop Manager进行测试和检验测试

    1. 安装Redis Desktop Manager,一直下一步即可
    2. 连接到redis服务器
    3.  

    4. 测试代码

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:某公司面试java试题之【二】,看看吧,说不定就是你将要做的题

下一篇:搭建redis伪集群