Spring整合redis連接池


 

  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. 測試代碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM