簡(jiǎn)單了解redis常見(jiàn)客戶端及Sharding機(jī)制原理
1、redis的幾種常見(jiàn)客戶端:
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ù),例如,分布式鎖,分布式集合,可通過(guò)Redis支持延遲隊(duì)列
- Lettuce:主要在一些分布式緩存框架上使用比較多
2)可伸縮:
- Jedis:使用阻塞的I/O,且其方法調(diào)用都是同步的,程序流需要等到sockets處理完I/O才能執(zhí)行,不支持異步。Jedis客戶端實(shí)例不是線程安全的,所以需要通過(guò)連接池來(lái)使用Jedis。
- Redisson:基于Netty框架的事件驅(qū)動(dòng)的通信層,其方法調(diào)用是異步的。Redisson的API是線程安全的,所以可以操作單個(gè)Redisson連接來(lái)完成各種操作
- Lettuce:基于Netty框架的事件驅(qū)動(dòng)的通信層,其方法調(diào)用是異步的。Lettuce的API是線程安全的,所以可以操作單個(gè)Lettuce連接來(lái)完成各種操作
2、redis的Sharding機(jī)制與技術(shù):
1) Sharding機(jī)制:即通常所說(shuō)的“分片”,允許數(shù)據(jù)存放在不同的物理機(jī)器上,以適應(yīng)數(shù)據(jù)量過(guò)大的場(chǎng)景,克服單臺(tái)機(jī)器內(nèi)存或者磁盤(pán)空間的限制。
而這種“離散式”地存放,對(duì)客戶端來(lái)說(shuō)是透明的,對(duì)客戶端來(lá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)而減輕單臺(tái)redis實(shí)例的壓力。分片技術(shù)能夠以更易擴(kuò)展的方式使用多臺(tái)計(jì)算機(jī)的存儲(chǔ)能力(這里主要指內(nèi)存的存儲(chǔ)能力)和計(jì)算能力:
a.從存儲(chǔ)能力的角度,分片技術(shù)通過(guò)使用多臺(tái)計(jì)算機(jī)的內(nèi)存來(lái)承擔(dān)更大量的數(shù)據(jù),如果沒(méi)有分片技術(shù),那么redis的存儲(chǔ)能力將受限于單臺(tái)主機(jī)的內(nèi)存大小。
b.從計(jì)算能力的角度,分片技術(shù)通過(guò)將計(jì)算任務(wù)分散到多核或者多臺(tái)主機(jī)中,能夠充分利用多核、多臺(tái)主機(jī)的計(jì)算能力。
3、緩存客戶端與服務(wù)器:
- redis是開(kāi)源的緩存軟件,jedis是java連接redis的客戶端jar包
- zedis是sn在redis 2.8版本上進(jìn)行修改定制的緩存服務(wù)器軟件
- sedis是sn在jedis版本上定制的緩存客戶端軟件
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Spring Boot 集成 Sharding-JDBC + Mybatis-Plus 實(shí)現(xiàn)分庫(kù)分表功能
- SpringBoot 2.0 整合sharding-jdbc中間件實(shí)現(xiàn)數(shù)據(jù)分庫(kù)分表
- 詳解Spring Boot中整合Sharding-JDBC讀寫(xiě)分離示例
- 利用Sharding-Jdbc組件實(shí)現(xiàn)分表
- spring boot使用sharding jdbc的配置方式
- Springboot2.x+ShardingSphere實(shí)現(xiàn)分庫(kù)分表的示例代碼
- Sharding JDBC讀寫(xiě)分離實(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語(yǔ)言開(kāi)發(fā)的集成環(huán)境,IntelliJ在業(yè)界被公認(rèn)為最好的java開(kāi)發(fā)工具之一,今天通過(guò)本文給大家介紹idea2021.3.1激活及使用教程,感興趣的朋友一起看看吧2022-01-01JVM創(chuàng)建對(duì)象及訪問(wèn)定位過(guò)程詳解
這篇文章主要介紹了JVM創(chuàng)建對(duì)象及訪問(wèn)定位過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-12-12詳解Mybatis中的 ${} 和 #{}區(qū)別與用法
這篇文章主要介紹了Mybatis中的 ${} 和 #{}區(qū)別與用法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07使用maven插件對(duì)java工程進(jìn)行打包過(guò)程解析
這篇文章主要介紹了使用maven插件對(duì)java工程進(jìn)行打包過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-082020.2 IntelliJ IDEA激活與IDEA2020.2破解詳細(xì)教程
這篇文章主要介紹了2020.2 IntelliJ IDEA激活與IDEA2020.2破解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08Mac安裝多個(gè)JDK并實(shí)現(xiàn)動(dòng)態(tài)切換
有時(shí)候我們有多個(gè)項(xiàng)目需要使用多個(gè)版本JDK,本文主要介紹了Mac安裝多個(gè)JDK并實(shí)現(xiàn)動(dòng)態(tài)切換,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07