簡單了解redis常見客戶端及Sharding機(jī)制原理
1、redis的幾種常見客戶端:
Jedis:是Redis的Java實(shí)現(xiàn)客戶端,提供了比較全面的Redis命令的支持;
Redisson:實(shí)現(xiàn)了分布式和可擴(kuò)展的Java數(shù)據(jù)結(jié)構(gòu)。
Lettuce:高級Redis客戶端,用于線程安全同步,異步和響應(yīng)使用,支持集群,Sentinel,管道和編碼器。
1)優(yōu)點(diǎn):
- Jedis:比較全面的提供了Redis的操作特性
- Redisson:促使使用者對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ū)動的通信層,其方法調(diào)用是異步的。Redisson的API是線程安全的,所以可以操作單個(gè)Redisson連接來完成各種操作
- Lettuce:基于Netty框架的事件驅(qū)動的通信層,其方法調(diào)用是異步的。Lettuce的API是線程安全的,所以可以操作單個(gè)Lettuce連接來完成各種操作
2、redis的Sharding機(jī)制與技術(shù):
1) Sharding機(jī)制:即通常所說的“分片”,允許數(shù)據(jù)存放在不同的物理機(jī)器上,以適應(yīng)數(shù)據(jù)量過大的場景,克服單臺機(jī)器內(nèi)存或者磁盤空間的限制。
而這種“離散式”地存放,對客戶端來說是透明的,對客戶端來講,完全看不到這種差別。
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)而減輕單臺redis實(shí)例的壓力。分片技術(shù)能夠以更易擴(kuò)展的方式使用多臺計(jì)算機(jī)的存儲能力(這里主要指內(nèi)存的存儲能力)和計(jì)算能力:
a.從存儲能力的角度,分片技術(shù)通過使用多臺計(jì)算機(jī)的內(nèi)存來承擔(dān)更大量的數(shù)據(jù),如果沒有分片技術(shù),那么redis的存儲能力將受限于單臺主機(jī)的內(nèi)存大小。
b.從計(jì)算能力的角度,分片技術(shù)通過將計(jì)算任務(wù)分散到多核或者多臺主機(jī)中,能夠充分利用多核、多臺主機(jī)的計(jì)算能力。
3、緩存客戶端與服務(wù)器:
- redis是開源的緩存軟件,jedis是java連接redis的客戶端jar包
- zedis是sn在redis 2.8版本上進(jìn)行修改定制的緩存服務(wù)器軟件
- sedis是sn在jedis版本上定制的緩存客戶端軟件
以上就是本文的全部內(nèi)容,希望對大家的學(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)文章
Java實(shí)現(xiàn)克隆的三種方式實(shí)例總結(jié)
這篇文章主要介紹了Java實(shí)現(xiàn)克隆的三種方式,結(jié)合實(shí)例形式總結(jié)分析了java淺復(fù)制、深復(fù)制以及使用serializable實(shí)現(xiàn)深復(fù)制的相關(guān)操作技巧,需要的朋友可以參考下2018-08-08IDEA?2021.3?使用及idea2021.3.1激活使用方法
IDEA?全稱?IntelliJ?IDEA,是java語言開發(fā)的集成環(huán)境,IntelliJ在業(yè)界被公認(rèn)為最好的java開發(fā)工具之一,今天通過本文給大家介紹idea2021.3.1激活及使用教程,感興趣的朋友一起看看吧2022-01-01詳解Mybatis中的 ${} 和 #{}區(qū)別與用法
這篇文章主要介紹了Mybatis中的 ${} 和 #{}區(qū)別與用法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-072020.2 IntelliJ IDEA激活與IDEA2020.2破解詳細(xì)教程
這篇文章主要介紹了2020.2 IntelliJ IDEA激活與IDEA2020.2破解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08Mac安裝多個(gè)JDK并實(shí)現(xiàn)動態(tài)切換
有時(shí)候我們有多個(gè)項(xiàng)目需要使用多個(gè)版本JDK,本文主要介紹了Mac安裝多個(gè)JDK并實(shí)現(xiàn)動態(tài)切換,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07