1. 程式人生 > >Redis的兩個框架:Jedis與Redisson(深入學習redis)

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框架JedisRedisson深入學習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中對比大生成模型VAEGAN附測試程式碼

 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 學習彙總57class類定義初級學習- tcy

 類定義 建立時間:2018/8/7 修改時間:2018/11/19  目錄:  1. class定義 2. 內部類 3.外部定義函式 4.高階函式與類的關係 5.物件記憶體管理 6.類作用域 7.使用輸出引數 8.類屬性 9.類特性 10.描述符 11.檢