简单了解redis常见客户端及Sharding机制原理

作者:爱笑的berg 时间:2022-03-28 16:49:09 

1、redis的几种常见客户端:

Jedis:是Redis的Java实现客户端,提供了比较全面的Redis命令的支持;

Redisson:实现了分布式和可扩展的Java数据结构。

Lettuce:高级Redis客户端,用于线程安全同步,异步和响应使用,支持集群,Sentinel,管道和编码器。

1)优点:

  • Jedis:比较全面的提供了Redis的操作特性

  • Redisson:促使使用者对Redis的关注分离,提供很多分布式相关操作服务,例如,分布式锁,分布式集合,可通过Redis支持延迟队列

  • Lettuce:主要在一些分布式缓存框架上使用比较多

2)可伸缩:

  • Jedis:使用阻塞的I/O,且其方法调用都是同步的,程序流需要等到sockets处理完I/O才能执行,不支持异步。Jedis客户端实例不是线程安全的,所以需要通过连接池来使用Jedis。

  • Redisson:基于Netty框架的事件驱动的通信层,其方法调用是异步的。Redisson的API是线程安全的,所以可以操作单个Redisson连接来完成各种操作

  • Lettuce:基于Netty框架的事件驱动的通信层,其方法调用是异步的。Lettuce的API是线程安全的,所以可以操作单个Lettuce连接来完成各种操作

2、redis的Sharding机制与技术:

1) Sharding机制:即通常所说的“分片”,允许数据存放在不同的物理机器上,以适应数据量过大的场景,克服单台机器内存或者磁盘空间的限制。

而这种“离散式”地存放,对客户端来说是透明的,对客户端来讲,完全看不到这种差别。

2) Redis的分片(Sharding或者Partitioning)技术:是指将数据分散到多个Redis实例中的方法,分片之后,每个redis拥有一部分原数据集的子集。

在数据量非常大时,这种技术能够将数据量分散到若干主机的redis实例上,进而减轻单台redis实例的压力。分片技术能够以更易扩展的方式使用多台计算机的存储能力(这里主要指内存的存储能力)和计算能力:

a.从存储能力的角度,分片技术通过使用多台计算机的内存来承担更大量的数据,如果没有分片技术,那么redis的存储能力将受限于单台主机的内存大小。

b.从计算能力的角度,分片技术通过将计算任务分散到多核或者多台主机中,能够充分利用多核、多台主机的计算能力。

3、缓存客户端与服务器:

  • redis是开源的缓存软件,jedis是java连接redis的客户端jar包

  • zedis是sn在redis 2.8版本上进行修改定制的缓存服务器软件

  • sedis是sn在jedis版本上定制的缓存客户端软件

来源:https://www.cnblogs.com/jiarui-zjb/p/12635496.html

标签:redis,客户端,Sharding,机制
0
投稿

猜你喜欢

  • Spring Boot 自动配置的实现

    2023-07-21 18:18:55
  • C++选择排序算法实例

    2021-10-27 21:43:33
  • 解决SpringBoot自定义拦截器和跨域配置冲突的问题

    2022-01-31 04:59:29
  • Java集合Map的clear与new Map区别详解

    2022-03-21 15:41:39
  • springboot项目如何防止XSS攻击

    2021-10-17 10:03:02
  • Java基于TCP方式的二进制文件传输

    2023-06-04 18:23:52
  • Android图片加载缓存框架Glide

    2021-11-13 12:43:02
  • C#中Dynamic和Dictionary性能比较

    2022-05-11 12:16:33
  • 一篇文章带你入门Java接口

    2023-11-06 02:07:55
  • Java的RxJava库操作符的用法及实例讲解

    2021-12-14 22:31:41
  • 基于mybatis plus实现数据源动态添加、删除、切换,自定义数据源的示例代码

    2021-08-20 20:07:46
  • SpringBoot 使用log4j2的配置过程

    2021-11-09 04:15:25
  • C#从DataTable获取数据的方法

    2022-09-16 03:20:59
  • 仅4行代码实现Android快速文件下载

    2022-08-14 08:06:54
  • maven install报错中程序包xxx不存在的问题解决

    2023-03-05 03:06:51
  • Android条目拖拽删除功能实例代码

    2022-06-19 22:47:37
  • 如何实现Java中一个简单的LinkedList

    2023-03-12 11:55:02
  • Android N获取外置SD卡或挂载U盘路径的方法

    2023-07-14 22:21:03
  • Android table布局开发实现简单计算器

    2021-07-15 13:05:28
  • SpringMVC深入讲解文件的上传下载实现

    2022-04-21 09:01:51
  • asp之家 软件编程 m.aspxhome.com