redis配置,使用

來源:互聯網
上載者:User

安裝redis
http://www.runoob.com/redis/redis-install.html

<!-- redis架包 -->        <dependency>            <groupId>org.springframework.data</groupId>            <artifactId>spring-data-redis</artifactId>            <version>1.6.2.RELEASE</version>        </dependency>        <dependency>            <groupId>redis.clients</groupId>            <artifactId>jedis</artifactId>            <version>2.9.0</version>        </dependency>

RedisUtil 工具類:

package com.utils;import java.util.List;import java.util.Map;import java.util.Set;import java.util.concurrent.TimeUnit;import javax.annotation.PostConstruct;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.util.CollectionUtils;  /**  *   * @author  * 基於spring和redis的redisTemplate工具類  * 針對所有的hash 都是以h開頭的方法  * 針對所有的Set 都是以s開頭的方法                    不含通用方法  * 針對所有的List 都是以l開頭的方法  */  public class RedisUtil {      private static RedisTemplate<String, Object> redisTemplate;      private RedisUtil utils;    @SuppressWarnings("static-access")    @PostConstruct     public void init() {        utils = this;        utils.redisTemplate = this.redisTemplate;    }    @SuppressWarnings("static-access")    public void setRedisTemplate(RedisTemplate<String, Object> redisTemplate) {          this.redisTemplate = redisTemplate;      }      //=============================common============================      /**      * 指定緩衝失效時間      * @param key 鍵      * @param time 時間(秒)      * @return      */      public static boolean expire(String key,long time){          try {              if(time>0){                  redisTemplate.expire(key, time, TimeUnit.SECONDS);              }              return true;          } catch (Exception e) {              e.printStackTrace();              return false;          }      }      /**      * 根據key 擷取到期時間      * @param key 鍵 不能為null      * @return 時間(秒) 返回0代表為永久有效      */      public static long getExpire(String key){          return redisTemplate.getExpire(key,TimeUnit.SECONDS);      }      /**      * 判斷key是否存在      * @param key 鍵      * @return true 存在 false不存在      */      public static boolean hasKey(String key){          try {              return redisTemplate.hasKey(key);          } catch (Exception e) {              e.printStackTrace();              return false;          }      }      /**      * 刪除緩衝      * @param key 可以傳一個值 或多個      */      @SuppressWarnings("unchecked")      public static void del(String ... key){          if(key!=null&&key.length>0){              if(key.length==1){                  redisTemplate.delete(key[0]);              }else{                  redisTemplate.delete(CollectionUtils.arrayToList(key));              }          }      }      //============================String=============================      /**      * 普通緩衝擷取      * @param key 鍵      * @return 值      */      public static Object get(String key){          return key==null?null:redisTemplate.opsForValue().get(key);      }      /**      * 普通緩衝放入      * @param key 鍵      * @param value 值      * @return true成功 false失敗      */      public static boolean set(String key,Object value) {           try {               redisTemplate.opsForValue().set(key, value);              return true;          } catch (Exception e) {              e.printStackTrace();              return false;          }      }      /**      * 普通緩衝放入並設定時間      * @param key 鍵      * @param value 值      * @param time 時間(秒) time要大於0 如果time小於等於0 將設定無限期      * @return true成功 false 失敗      */      public static boolean set(String key,Object value,long time){          try {              if(time>0){                  redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);              }else{                  set(key, value);              }              return true;          } catch (Exception e) {              e.printStackTrace();              return false;          }      }      /**      * 遞增      * @param key 鍵      * @param by 要增加幾(大於0)      * @return      */      public static long incr(String key, long delta){            if(delta<0){              throw new RuntimeException("遞增因子必須大於0");          }          return redisTemplate.opsForValue().increment(key, delta);      }      /**      * 遞減      * @param key 鍵      * @param by 要減少幾(小於0)      * @return      */      public static long decr(String key, long delta){            if(delta<0){              throw new RuntimeException("遞減因子必須大於0");          }          return redisTemplate.opsForValue().increment(key, -delta);        }        //================================Map=================================      /**      * HashGet      * @param key 鍵 不能為null      * @param item 項 不能為null      * @return 值      */      public static Object hget(String key,String item){          return redisTemplate.opsForHash().get(key, item);      }      /**      * 擷取hashKey對應的所有索引值      * @param key 鍵      * @return 對應的多個索引值      */      public static Map<Object,Object> hmget(String key){          return redisTemplate.opsForHash().entries(key);      }      /**      * HashSet      * @param key 鍵      * @param map 對應多個索引值      * @return true 成功 false 失敗      */      public static boolean hmset(String key, Map<String,Object> map){            try {              redisTemplate.opsForHash().putAll(key, map);              return true;          } catch (Exception e) {              e.printStackTrace();              return false;          }      }      /**      * HashSet 並設定時間      * @param key 鍵      * @param map 對應多個索引值      * @param time 時間(秒)      * @return true成功 false失敗      */      public static boolean hmset(String key, Map<String,Object> map, long time){            try {              redisTemplate.opsForHash().putAll(key, map);              if(time>0){                  expire(key, time);              }              return true;          } catch (Exception e) {              e.printStackTrace();              return false;          }      }      /**      * 向一張hash表中放入資料,如果不存在將建立      * @param key 鍵      * @param item 項      * @param value 值      * @return true 成功 false失敗      */      public static boolean hset(String key,String item,Object value) {           try {              redisTemplate.opsForHash().put(key, item, value);              return true;          } catch (Exception e) {              e.printStackTrace();              return false;          }      }      /**      * 向一張hash表中放入資料,如果不存在將建立      * @param key 鍵      * @param item 項      * @param value 值      * @param time 時間(秒)  注意:如果已存在的hash表有時間,這裡將會替換原有的時間      * @return true 成功 false失敗      */      public static boolean hset(String key,String item,Object value,long time) {           try {              redisTemplate.opsForHash().put(key, item, value);              if(time>0){                  expire(key, time);              }              return true;          } catch (Exception e) {              e.printStackTrace();              return false;          }      }      /**      * 刪除hash表中的值      * @param key 鍵 不能為null      * @param item 項 可以使多個 不能為null      */      public static void hdel(String key, Object... item){            redisTemplate.opsForHash().delete(key,item);      }       /**      * 判斷hash表中是否有該項的值      * @param key 鍵 不能為null      * @param item 項 不能為null      * @return true 存在 false不存在      */      public static boolean hHasKey(String key, String item){          return redisTemplate.opsForHash().hasKey(key, item);      }       /**      * hash遞增 如果不存在,就會建立一個 並把新增後的值返回      * @param key 鍵      * @param item 項      * @param by 要增加幾(大於0)      * @return      */      public static double hincr(String key, String item,double by){            return redisTemplate.opsForHash().increment(key, item, by);      }      /**      * hash遞減      * @param key 鍵      * @param item 項      * @param by 要減少記(小於0)      * @return      */      public static double hdecr(String key, String item,double by){            return redisTemplate.opsForHash().increment(key, item,-by);        }        //============================set=============================      /**      * 根據key擷取Set中的所有值      * @param key 鍵      * @return      */      public static Set<Object> sGet(String key){          try {              return redisTemplate.opsForSet().members(key);          } catch (Exception e) {              e.printStackTrace();              return null;          }      }      /**      * 根據value從一個set中查詢,是否存在      * @param key 鍵      * @param value 值      * @return true 存在 false不存在      */      public static boolean sHasKey(String key,Object value){          try {              return redisTemplate.opsForSet().isMember(key, value);          } catch (Exception e) {              e.printStackTrace();              return false;          }      }      /**      * 將資料放入set緩衝      * @param key 鍵      * @param values 值 可以是多個      * @return 成功個數      */      public static long sSet(String key, Object...values) {          try {              return redisTemplate.opsForSet().add(key, values);          } catch (Exception e) {              e.printStackTrace();              return 0;          }      }      /**      * 將set資料放入緩衝      * @param key 鍵      * @param time 時間(秒)      * @param values 值 可以是多個      * @return 成功個數      */      public static long sSetAndTime(String key,long time,Object...values) {          try {              Long count = redisTemplate.opsForSet().add(key, values);              if(time>0) expire(key, time);              return count;          } catch (Exception e) {              e.printStackTrace();              return 0;          }      }      /**      * 擷取set緩衝的長度      * @param key 鍵      * @return      */      public static long sGetSetSize(String key){          try {              return redisTemplate.opsForSet().size(key);          } catch (Exception e) {              e.printStackTrace();              return 0;          }      }      /**      * 移除值為value的      * @param key 鍵      * @param values 值 可以是多個      * @return 移除的個數      */      public static long setRemove(String key, Object ...values) {          try {              Long count = redisTemplate.opsForSet().remove(key, values);              return count;          } catch (Exception e) {              e.printStackTrace();              return 0;          }      }      //===============================list=================================      /**      * 擷取list緩衝的內容      * @param key 鍵      * @param start 開始      * @param end 結束  0 到 -1代表所有值      * @return      */      public static List<Object> lGet(String key,long start, long end){          try {              return redisTemplate.opsForList().range(key, start, end);          } catch (Exception e) {              e.printStackTrace();              return null;          }      }      /**      * 擷取list緩衝的長度      * @param key 鍵      * @return      */      public static long lGetListSize(String key){          try {              return redisTemplate.opsForList().size(key);          } catch (Exception e) {              e.printStackTrace();              return 0;          }      }      /**      * 通過索引 擷取list中的值      * @param key 鍵      * @param index 索引  index>=0時, 0 表頭,1 第二個元素,依次類推;index<0時,-1,表尾,-2倒數第二個元素,依次類推      * @return      */      public static Object lGetIndex(String key,long index){          try {              return redisTemplate.opsForList().index(key, index);          } catch (Exception e) {              e.printStackTrace();              return null;          }      }      /**      * 將list放入緩衝      * @param key 鍵      * @param value 值      * @param time 時間(秒)      * @return      */      public static boolean lSet(String key, Object value) {          try {              redisTemplate.opsForList().rightPush(key, value);              return true;          } catch (Exception e) {              e.printStackTrace();              return false;          }      }      /**      * 將list放入緩衝      * @param key 鍵      * @param value 值      * @param time 時間(秒)      * @return      */      public static boolean lSet(String key, Object value, long time) {          try {              redisTemplate.opsForList().rightPush(key, value);              if (time > 0) expire(key, time);              return true;          } catch (Exception e) {              e.printStackTrace();              return false;          }      }      /**      * 將list放入緩衝      * @param key 鍵      * @param value 值      * @param time 時間(秒)      * @return      */      public static boolean lSet(String key, List<Object> value) {          try {              redisTemplate.opsForList().rightPushAll(key, value);              return true;          } catch (Exception e) {              e.printStackTrace();              return false;          }      }      /**      * 將list放入緩衝      * @param key 鍵      * @param value 值      * @param time 時間(秒)      * @return      */      public static boolean lSet(String key, List<Object> value, long time) {          try {              redisTemplate.opsForList().rightPushAll(key, value);              if (time > 0) expire(key, time);              return true;          } catch (Exception e) {              e.printStackTrace();              return false;          }      }      /**      * 根據索引修改list中的某條資料      * @param key 鍵      * @param index 索引      * @param value 值      * @return      */      public static boolean lUpdateIndex(String key, long index,Object value) {          try {              redisTemplate.opsForList().set(key, index, value);              return true;          } catch (Exception e) {              e.printStackTrace();              return false;          }      }       /**      * 移除N個值為value       * @param key 鍵      * @param count 移除多少個      * @param value 值      * @return 移除的個數      */      public static long lRemove(String key,long cou

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.