欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

在spring時使用RedisTemplate如何實現(xiàn)連接并操作Redis

在spring時使用redisTemplate如何實現(xiàn)連接并操作Redis?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

站在用戶的角度思考問題,與客戶深入溝通,找到陽泉網站設計與陽泉網站推廣的解決方案,憑借多年的經驗,讓設計與互聯(lián)網技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網站制作、成都網站制作、企業(yè)官網、英文網站、手機端網站、網站推廣、空間域名、網頁空間、企業(yè)郵箱。業(yè)務覆蓋陽泉地區(qū)。

事務需要開啟enableTransactionSupport,然后使用@transactional注解,里面直接通過回調的connection,就不需要自己進行multi和exec的事務開啟提交了。但是通過回調去獲取connection,完全沒有達到一個模版類的功能。所以這篇我們會講下幾種Operations接口提供的方法。

  private ValueOperations<K, V> valueOps;
  private ListOperations<K, V> listOps;
  private SetOperations<K, V> setOps;
  private ZSetOperations<K, V> zSetOps;

1. RedisOperations接口說明

這個接口的實現(xiàn)類就是RedisTemplate本身,主要提供了一些對Redis鍵,事務,運行腳本等命令的支持,不負責數(shù)據(jù)的讀寫。
我們選一段代碼看下:

  public void watch(K key) {
    final byte[] rawKey = rawKey(key);

    execute(new RedisCallback<Object>() {

      public Object doInRedis(RedisConnection connection) {
        connection.watch(rawKey);
        return null;
      }
    }, true);
  }

這個是事務的監(jiān)視命令,可以看出,里面的實現(xiàn)也是用的回調RedisCallback。這些api都是通過connection的api來進行了封裝。 

2. ValueOperations接口說明

這個接口的實現(xiàn)類為DefaultValueOperations,default這個類同時繼承AbstractOperation,我們來看下這個類的構造函數(shù):

  DefaultValueOperations(RedisTemplate<K, V> template) {
    super(template);
  }

非公開的,需要傳入template來構造。但是我們是無法訪問的。不過不要急,在RedisTemplate中,已經提供了一個工廠方法:opsForValue()。這個方法會返回一個默認的操作類。另外,我們可以直接通過注解@Resource(name = "redisTemplate")來進行注入。

  @Resource(name = "redisTemplate")
  private ValueOperations<String, Object> vOps;

是不是很奇怪,毫無父子兄弟關系的兩個類,怎么能互相注入呢?這個是Spring的Editor機制,搜索下ValueOperationsEditor這個類就知道了,Spring在注入的時候調用了Editor的setValue方法。了解Spring源碼的應該知道。我也是看別人的文章才理解的。

其實除了可以通過template注入ValueOperations,還可以注入 上面的其他幾種operations以及HashOperations.
DefaultValueOperations提供了所有Redis字符串類型的操作api。比如set,get,incr等等。使用這些方法,可以方便的直接存儲任意的java類型,而不需要自己去將存儲的東西序列化以及反序列化。

注意:泛型的類型,以及序列化器都是來自RedisTemplate。如果要自行進行json或者其他的序列化,就需要在RedisTemplate中進行更改。

另外,對于成員listOps,setOps,zSetOps這接個操作類,就不再贅述,原理同ValueOperations,是其他幾種數(shù)據(jù)類型的實現(xiàn)。

3. HashOperations接口說明

這個接口并沒有定義成員變量,猜測是因為對于Hash來說,又增加了額外的Key和Value,泛型無法在成員前額外定義,所以直接提供了方法。不過所幸里面用的是JdkSerializer,所以這個定義了什么類型的泛型都不會產生運行異常。

  public void put(K key, HK hashKey, HV value) {
    final byte[] rawKey = rawKey(key);
    final byte[] rawHashKey = rawHashKey(hashKey);
    final byte[] rawHashValue = rawHashValue(value);

    execute(new RedisCallback<Object>() {

      public Object doInRedis(RedisConnection connection) {
        connection.hSet(rawKey, rawHashKey, rawHashValue);
        return null;
      }
    }, true);
  }

這個是基本的put方法,可以看出key和hashkey這兩個,調用了不同的序列化方法。進行方法查看,看到序列化hashkey用的是template里的hashkeyserializer,默認是jdkserializer,這個會導致在redis控制臺,看不出來存了什么key。如果不喜歡,可以通過redistemplate.sethashkeyserializer()來進行設置。

對于hash結構所有的api,也都在這個類里進行了封裝,比如hset變?yōu)榱藀ut,hget變?yōu)間et。需要自行去查看api。不要被誤導。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。

網頁標題:在spring時使用RedisTemplate如何實現(xiàn)連接并操作Redis
標題URL:http://www.chinadenli.net/article28/ieoecp.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供商城網站外貿網站建設網站維護手機網站建設微信公眾號建站公司

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

網站優(yōu)化排名