Redis的兩個框架:Jedis與Redisson(深入學習redis)
Redis的兩個框架:Jedis與Redisson
Jedis api 線上網址http://tool.oschina.net/uploads/apidocs/redis/clients/jedis/Jedis.html
redisson 官網https://redisson.org/
redisson git專案地址https://github.com/redisson/redisson
1 概述
1.1. 主要內容
本文的主要內容為對比Redis的兩個框架:Jedis與Redisson,分析各自的優勢與缺點,為專案中Java快取方案中的Redis程式設計模型的選擇提供參考。
2. Jedis與Redisson對比
2.1. 概況對比
Jedis是Redis的Java實現的客戶端,其API提供了比較全面的Redis命令的支援;Redisson實現了分散式和可擴充套件的Java資料結構,和Jedis相比,功能較為簡單,不支援字串操作,不支援排序、事務、管道、分割槽等Redis特性。Redisson的宗旨是促進使用者對Redis的關注分離,從而讓使用者能夠將精力更集中地放在處理業務邏輯上。
2.2. 程式設計模型
Jedis中的方法呼叫是比較底層的暴露的Redis的API,也即Jedis中的Java方法基本和Redis的API保持著一致,瞭解Redis的API,也就能熟練的使用Jedis。而Redisson中的方法則是進行比較高的抽象,每個方法呼叫可能進行了一個或多個Redis方法呼叫。
如下分別為Jedis和Redisson操作的簡單示例:
Jedis設定key-value與set操作:
Jedis jedis = …;
jedis.set("key", "value");
List<String> values = jedis.mget("key", "key2", "key3");
Redisson操作map:
Redisson redisson = …
RMap map = redisson.getMap("my-map"); // implement java.util.Map
map.put("key", "value");
map.containsKey("key");
map.get("key");
2.3. 可伸縮性
Jedis使用阻塞的I/O,且其方法呼叫都是同步的,程式流需要等到sockets處理完I/O才能執行,不支援非同步。Jedis客戶端例項不是執行緒安全的,所以需要通過連線池來使用Jedis。
Redisson使用非阻塞的I/O和基於Netty框架的事件驅動的通訊層,其方法呼叫是非同步的。Redisson的API是執行緒安全的,所以可以操作單個Redisson連線來完成各種操作。
2.4. 資料結構
Jedis僅支援基本的資料型別如:String、Hash、List、Set、Sorted Set。
Redisson不僅提供了一系列的分散式Java常用物件,基本可以與Java的基本資料結構通用,還提供了許多分散式服務,其中包括(BitSet, Set, Multimap, SortedSet, Map, List, Queue, BlockingQueue, Deque, BlockingDeque, Semaphore, Lock, AtomicLong, CountDownLatch, Publish / Subscribe, Bloom filter, Remote service, Spring cache, Executor service, Live Object service, Scheduler service)。
在分散式開發中,Redisson可提供更便捷的方法。
2.5. 第三方框架整合
1 Redisson提供了和Spring框架的各項特性類似的,以Spring XML的名稱空間的方式配置RedissonClient例項和它所支援的所有物件和服務;
2 Redisson完整的實現了Spring框架裡的快取機制;
3 Redisson在Redis的基礎上實現了Java快取標準規範;
4 Redisson為Apache Tomcat叢集提供了基於Redis的非黏性會話管理功能。該功能支援Apache Tomcat的6、7和8版。
5 Redisson還提供了Spring Session會話管理器的實現。相關推薦
Redis的兩個框架:Jedis與Redisson(深入學習redis)
Redis的兩個框架:Jedis與RedissonJedis api 線上網址http://tool.oschina.net/uploads/apidocs/redis/clients/jedis/Jedis.htmlredisson 官網https://redisson.o
提升逼格的兩個函式:setdefault 與 defaultdict
在做 code review 的時候,發現有同學的程式碼看起來不那麼 pythonic,忍不住寫篇短文介紹兩個函式:setdefault 與 defaultdict。 有這樣的需求,一個列表,裡面是(key, value) 這樣的鍵值對元組,要將它轉換成一個字典物件,並將key相同的valu
關於TextView 中設定一行顯示字數的兩個屬性: maxEms 與 maxLength
這兩天在做listView顯示資訊時,每個Item顯示兩個TextView 後來因為前一個ListView顯示的資訊太長了就直接把後面的資訊給覆蓋了,百度下發現TextView還有一個屬性關於限制
在TensorFlow中對比兩大生成模型:VAE與GAN(附測試程式碼)
def GAN_loss_with_labels(true_logit, fake_logit): """ Args: true_logit : Given data from true distribution,
SSH和SSM兩個框架的淺顯的區別(一)
本人使用過SSH框架一段時間,最後在優化專案的時候決定使用SSM框架,這兩種框架的一些淺顯的區別我在這裡說下: 1.SSH框架是Struct+Spring+Hibernate而SSM是指的Spring-MVC+Spring+MyBatis,光從這兩個縮寫就可以看出來,如果比
Java併發程式設計高階技術-高效能併發框架原始碼解析與實戰(無密連結)
第1章 課程介紹(Java併發程式設計進階課程) 什麼是Disruptor?它一個高效能的非同步處理框架,號稱“單執行緒每秒可處理600W個訂單”的神器,本課程目標:徹底精通一個如此優秀的開源框架,面試秒殺面試官。本章會帶領小夥伴們先了解課程大綱與重點,然後模擬千萬,億級資料進行壓力測試。讓大
Java 快速複製兩個類中的相同屬性(無需繼承關係)
今天開發中遇到一個問題,其實也算不上是問題,只是本猿比較懶而已!目前本猿主要做的是介面開發,現在需要將介面提供方的一個類中的部分欄位挪到我自己的專案來,然而奈何本猿太懶,不想一個一個set、get…… 要不然說“懶”是促進社會科技進步的最大動力呢!!!鑑於這一情況,本猿果斷使用了Spri
Redis的java客戶端Jedis Client介紹(持續翻譯中)
1. 概覽 This article is an introduction to Jedis, a client library in Java for Redis – the popular in-memory data structure store that can persis
Java併發程式設計高階技術-高效能併發框架原始碼解析與實戰(雲盤分享)
第1章 課程介紹(Java併發程式設計進階課程) 什麼是Disruptor?它一個高效能的非同步處理框架,號稱“單執行緒每秒可處理600W個訂單”的神器,本課程目標:徹底精通一個如此優秀的開源框架,面試秒殺面試官。本章會帶領小夥伴們先了解課程大綱與重點,然後模擬千萬,億級
某網Java併發程式設計高階技術-高效能併發框架原始碼解析與實戰(雲盤下載)
第1章 課程介紹(Java併發程式設計進階課程) 什麼是Disruptor?它一個高效能的非同步處理框架,號稱“單執行緒每秒可處理600W個訂單”的神器,本課程目標:徹底精通一個如此優秀的開源框架,面試秒殺面試官。本章會帶領小夥伴們先了解課程大綱與重點,然後模擬千萬,億級
兩個及以上塊級元素(div為例)排列一行
1.浮動解決(float)-------> _ >萬能 demo程式碼: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8">
python求兩個數字的最大公約數(輾轉相除法)
def gcd(a,b): while b: r = a%b a = b b = r return a print(gcd(15,25
第十二週實驗指導--任務2--分別定義Teacher(教師)類和Cadre(幹部)類,採用多重繼承方式由這兩個類派生出新類Teacher_Cadre(教師兼幹部)
/* (程式頭部註釋開始) * 程式的版權和版本宣告部分 * Copyright (c) 2011, 煙臺大學計算機學院學生 * All rights reserved. * 檔名稱:分別定義Teacher(教師)類和Cadre(幹部)類,採用多重繼承方式由這兩個類派
第十二週實驗指導--任務2--分別定義Teacher(教師)類和Cadre(幹部)類,採用多重繼承方式由這兩個類派生出新類Teacher_Cadre(教師兼幹部)...
/* (程式頭部註釋開始) * 程式的版權和版本宣告部分 * Copyright (c) 2011, 煙臺大學計算機學院學生 * All rights reserved. * 檔名稱:分別定義Teacher(教師)類和Cadre(幹部)類,採用多重繼承方式由這兩個類派生出
資料探勘:概念與技術(第三版)之第五章的學習記錄
資料立方體 本章主要介紹資料立方體技術 在第四章的時候已經提到過,在資料探勘中有一種OLAP風格的多維資料探勘被廣泛的使用。因此,為了追求其良好的效能,我們對多維模型需要進行預計算和建立索引。第四章只是簡單的說道了完全立方體,冰山立方體等概念。在第五章,我們
資料探勘:概念與技術(第三版)之第六章的學習記錄
本章主要對挖掘頻繁模式進行講解。 頻繁模式是指頻繁地出現在資料集中的模式,具體包括頻繁項集、頻繁序列模式、頻繁結構模式。具體的解釋書上寫得很詳細,我們也在第一章的時候進行了講解,這裡就不多提了。 前面的誘發例子也不多說了,都很好理解。 這裡,假設我們分析的
Java併發程式設計高階技術-高效能併發框架原始碼解析與實戰(目前最全)
第1章 課程介紹(Java併發程式設計進階課程) 什麼是Disruptor?它一個高效能的非同步處理框架,號稱“單執行緒每秒可處理600W個訂單”的神器,本課程目標:徹底精通一個如此優秀的開源框架,面試秒殺面試官。本章會帶領小夥伴們先了解課程大綱與重點,然後模擬千萬,億級
PHP的兩個特性導致waf繞過注入(有趣的知識點)
1、HPP HTTP引數汙染 HTTP引數汙染指的是,在URL中提交相同鍵值的兩個引數時,伺服器端一般會進行一些處理。比如Apache就要以最後一個引數為準,比如: user.php?id=111&id=222 如果輸出$_GET陣列,則id的值只會取222,即UR
python 學習彙總64:類屬性方法(初級學習- tcy)
類屬性方法 2018/11/20 ================================================================== # 1.1.屬性 # 1)型別物件屬性 t.__doc__ 文件字串 t.__name__ 類名稱 t.__bases__ 由基類
python 學習彙總57:class類定義(初級學習- tcy)
類定義 建立時間:2018/8/7 修改時間:2018/11/19 目錄: 1. class定義 2. 內部類 3.外部定義函式 4.高階函式與類的關係 5.物件記憶體管理 6.類作用域 7.使用輸出引數 8.類屬性 9.類特性 10.描述符 11.檢