簡單了解redis常見客戶端及Sharding機(jī)制原理
1、redis的幾種常見客戶端:
Jedis:是Redis的Java實(shí)現(xiàn)客戶端,提供了比較全面的Redis命令的支持;
Redisson:實(shí)現(xiàn)了分布式和可擴(kuò)展的Java數(shù)據(jù)結(jié)構(gòu)。
Lettuce:高級(jí)Redis客戶端,用于線程安全同步,異步和響應(yīng)使用,支持集群,Sentinel,管道和編碼器。
1)優(yōu)點(diǎn):
- Jedis:比較全面的提供了Redis的操作特性
- Redisson:促使使用者對(duì)Redis的關(guān)注分離,提供很多分布式相關(guān)操作服務(wù),例如,分布式鎖,分布式集合,可通過Redis支持延遲隊(duì)列
- Lettuce:主要在一些分布式緩存框架上使用比較多
2)可伸縮:
- Jedis:使用阻塞的I/O,且其方法調(diào)用都是同步的,程序流需要等到sockets處理完I/O才能執(zhí)行,不支持異步。Jedis客戶端實(shí)例不是線程安全的,所以需要通過連接池來使用Jedis。
- Redisson:基于Netty框架的事件驅(qū)動(dòng)的通信層,其方法調(diào)用是異步的。Redisson的API是線程安全的,所以可以操作單個(gè)Redisson連接來完成各種操作
- Lettuce:基于Netty框架的事件驅(qū)動(dòng)的通信層,其方法調(diào)用是異步的。Lettuce的API是線程安全的,所以可以操作單個(gè)Lettuce連接來完成各種操作
2、redis的Sharding機(jī)制與技術(shù):
1) Sharding機(jī)制:即通常所說的“分片”,允許數(shù)據(jù)存放在不同的物理機(jī)器上,以適應(yīng)數(shù)據(jù)量過大的場景,克服單臺(tái)機(jī)器內(nèi)存或者磁盤空間的限制。
而這種“離散式”地存放,對(duì)客戶端來說是透明的,對(duì)客戶端來講,完全看不到這種差別。
2) Redis的分片(Sharding或者Partitioning)技術(shù):是指將數(shù)據(jù)分散到多個(gè)Redis實(shí)例中的方法,分片之后,每個(gè)redis擁有一部分原數(shù)據(jù)集的子集。
在數(shù)據(jù)量非常大時(shí),這種技術(shù)能夠?qū)?shù)據(jù)量分散到若干主機(jī)的redis實(shí)例上,進(jìn)而減輕單臺(tái)redis實(shí)例的壓力。分片技術(shù)能夠以更易擴(kuò)展的方式使用多臺(tái)計(jì)算機(jī)的存儲(chǔ)能力(這里主要指內(nèi)存的存儲(chǔ)能力)和計(jì)算能力:
a.從存儲(chǔ)能力的角度,分片技術(shù)通過使用多臺(tái)計(jì)算機(jī)的內(nèi)存來承擔(dān)更大量的數(shù)據(jù),如果沒有分片技術(shù),那么redis的存儲(chǔ)能力將受限于單臺(tái)主機(jī)的內(nèi)存大小。
b.從計(jì)算能力的角度,分片技術(shù)通過將計(jì)算任務(wù)分散到多核或者多臺(tái)主機(jī)中,能夠充分利用多核、多臺(tái)主機(jī)的計(jì)算能力。
3、緩存客戶端與服務(wù)器:
- redis是開源的緩存軟件,jedis是java連接redis的客戶端jar包
- zedis是sn在redis 2.8版本上進(jìn)行修改定制的緩存服務(wù)器軟件
- sedis是sn在jedis版本上定制的緩存客戶端軟件
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Spring Boot 集成 Sharding-JDBC + Mybatis-Plus 實(shí)現(xiàn)分庫分表功能
- SpringBoot 2.0 整合sharding-jdbc中間件實(shí)現(xiàn)數(shù)據(jù)分庫分表
- 詳解Spring Boot中整合Sharding-JDBC讀寫分離示例
- 利用Sharding-Jdbc組件實(shí)現(xiàn)分表
- spring boot使用sharding jdbc的配置方式
- Springboot2.x+ShardingSphere實(shí)現(xiàn)分庫分表的示例代碼
- Sharding JDBC讀寫分離實(shí)現(xiàn)原理及實(shí)例
相關(guān)文章
MySQL?MyBatis?默認(rèn)插入當(dāng)前時(shí)間方式
這篇文章主要介紹了MySQL?MyBatis?默認(rèn)插入當(dāng)前時(shí)間方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10
Java的CyclicBarrier循環(huán)屏障解析
這篇文章主要介紹了Java的CyclicBarrier循環(huán)屏障解析,CyclicBarrier和CountDownLatch一樣,是一個(gè)同步工具類,它允許一組線程相互等待直到達(dá)到某個(gè)common?barrier?point,在程序中CyclicBarrier是非常有用的,它適用于一組線程必須互相等待的情況,需要的朋友可以參考下2023-12-12
java利用phantomjs進(jìn)行截圖實(shí)例教程
PlantomJs是一個(gè)基于javascript的webkit內(nèi)核無頭瀏覽器 也就是沒有顯示界面的瀏覽器,你可以在基于 webkit 瀏覽器做的事情,它都能做到。下面這篇文章主要給大家介紹了關(guān)于java利用phantomjs進(jìn)行截圖的相關(guān)資料,需要的朋友可以參考下2018-10-10
判斷以逗號(hào)分隔的字符串中是否包含某個(gè)數(shù)的實(shí)例
下面小編就為大家?guī)硪黄袛嘁远禾?hào)分隔的字符串中是否包含某個(gè)數(shù)的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-11-11
實(shí)例講解Java編程中數(shù)組反射的使用方法
這篇文章主要介紹了Java編程中數(shù)組反射的使用方法,通過編寫數(shù)組反射工具類可以重用許多基礎(chǔ)代碼,減少對(duì)類型的判斷過程,需要的朋友可以參考下2016-04-04
Java將Word文檔轉(zhuǎn)換為PDF文件的幾種常用方法總結(jié)
這篇文章主要介紹了Java將Word文檔轉(zhuǎn)換為PDF文件的四種常用方法,分別使用ApachePOI+iText、Aspose.Words?for?Java、Docx4j和JODConverter,這些庫各有優(yōu)點(diǎn),但在使用時(shí)需要注意庫與Java環(huán)境的兼容性、安裝所需依賴、轉(zhuǎn)換速度和資源消耗,需要的朋友可以參考下2024-10-10

