首页 > 数据库 >Redis的客户端

Redis的客户端

时间:2023-01-10 22:12:44浏览次数:49  
标签:Redisson Redis Lettuce Jedis 客户端 分布式

站在 java 开发语言的角度,虽然可供选择的客户端非常多,但是官方主要推荐使用以下三种客户端,原因大概是它们对 redis 提供的支持更加全面、api 操作更佳丰富。

1、Jedis

Jedis 是一款老牌 Redis 的 Java 客户端,提供了比较全面的 Redis 命令的操作支持,也是目前使用最广泛的客户端。

优点如下:

    • Jedis 的 API 提供了比较全面的 Redis 命令的支持
    • Jedis 中的 Java 方法基本和 Redis 的 API 保持着一致,也就是说了解 Redis 的API,可以熟练的使用 Jedis
    • 支持 pipelining、事务、LUA Scripting、Redis Sentinel、Redis Cluster等等 redis 提供的高级特性
    • 客户端轻量,简洁,便于集成和改造
    • 使用广泛,开发人员易上手

人无完人,Jedis 也一样有优点也有劣势,缺点如下:

    • 使用阻塞的 I/O 操作,且其方法调用都是同步的,程序流需要等到 sockets 处理完 I/O 才能执行,不支持异步
    • Jedis 在实现上是直接连接的 redis server,如果在多线程环境下是非线程安全的,这个时候可以使用连接池来管理 Jedis,已解决 Jedis 客户端实例存在非线程安全的问题
    • 不支持读写分离,需要自己实现
    • 技术文档差,可以说几乎没有

整体来说,Jedis 是一款经典的 Redis 客户端(java 语言方向),能满足绝大部分项目中的业务开发需求,虽然有些瑕疵,但是可以通过其它方式来弥补,可用性、安全性方面都有保证,总体评价是操作简单,易上手!

spring-data-redis集成的是Jedis

2、Lettuce

Lettuce 是一种可扩展的、线程安全的 Redis 高级客户端。

从 Spring Boot 2.x 开始, Lettuce 已取代 Jedis 成为SpringBoot 默认的 Redis 客户端

优点如下:

    • 相比于 Jedis,Lettuce 属于后起之秀,对 Redis 更加全面,并且解决了 Jedis 客户端实例存在非线程安全的问题
    • 支持同步编程,异步编程,响应式编程,自动重新连接,主从模式,集群模块,哨兵模式,管道和编码器等等高级的 Redis 特性
    • Lettuce 底层基于 Netty 框架的事件驱动与 redis 通信,采用了非阻塞的 I/O 操作,可异步调用,相比 Jedis,性能高
    • Lettuce 的 API 是线程安全的,如果不是执行阻塞和事务操作,如 BLPOP 和MULTI/EXEC 等命令,多个线程就可以共享一个连接,性能方面不会衰减

缺点如下:

    • API 更加抽象,学习使用成本高

3、Redisson

Redisson 是一个在 Redis 的功能基础上实现的 Java 驻内存数据网格客户端。实现了分布式和可扩展的 Java 数据结构,提供很多分布式相关操作服务,例如分布式锁,分布式集合,可通过 Redis 支持延迟队列。

优点如下:

    • 实现了分布式特性和可扩展的 Java 数据结构,例如分布式锁,分布式集合,分布式对象,分布式远程调度等等高级功能,适合分布式开发
    • 与 Lettuce 一样,基于 Netty 框架的事件驱动与 redis 通信,支持异步调用,性能高
    • Redisson 的 API 是线程安全的,所以可以使用单个 Redisson 连接来完成各种操作。
    • 支持读写分离,支持读负载均衡,在主从复制和 Redis Cluster 架构下都可以使用
    • 内建 Tomcat Session Manager,为 Tomcat 6/7/8 提供了会话共享功能,可以与 Spring Session 集成,实现基于 Redis 的会话共享
    • 相比于 Jedis、Lettuce 等基于 redis 命令封装的客户端,Redisson 提供的功能更加高端和抽象,Redisson 可以类比 Spring 框架,这些框架搭建了应用程序的基础框架和功能,可以显著提升开发效率,让开发者有更多的时间来关注业务逻辑
    • 文档较丰富,有中文文档

缺点如下:

    • 和 Jedis、Lettuce 客户端相比,功能较为简单,对字符串的支持比较差,不支持排序、事务、管道、分区等 Redis 特性
    • API 更加抽象,学习使用成本高

 

总结

Jedis 和 Lettuce 是比较纯粹的 Redis 命令客户端,几乎没提供什么分布式操作服务。

Jedis 和 Lettuce 两者相比,Jedis 的性能比较差,其他方面并没有太明显的区别,所以如果你不需要使用 Redis 的高级功能的话,优先推荐使用 Lettuce。

相比于 Jedis、Lettuce 等基于 redis 命令封装的客户端,Redisson 提供的功能更加高端和抽象,逼格高!

Redisson 的优势是提供了很多开箱即用的 Redis 高级功能,如果你的应用中需要使用到 Redis 的高级功能,比如分布式锁,分布式对象,分布式会话共享等等,建议使用 Redisson。

总结下来:

    • 如果项目中对分布式功能的需求场景不多,优先推荐使用 Lettuce,基本上够用,当然你使用 Jedis 也没用问题,api 操作方面会更加简单。
    • 如果项目中除了对基本的数据缓存操作需求以外,还需要用到分布式锁,分布式对象,分布式集合等功能,优先推荐采用Lettuce + Redisson组合方式使用。

 

标签:Redisson,Redis,Lettuce,Jedis,客户端,分布式
From: https://www.cnblogs.com/shog808/p/17041504.html

相关文章

  • redis
    redisredisredis安装、启动、连接、以及redis五种数据类型及命令redis高级用法之慢查询、pipline与事务、发布订阅、bitmap位图、hyperloglog、geo、持久化、主从red......
  • linux下,docker安装redis
    一、Docker搜索redis镜像命令:dockersearch<镜像名称>dockersearchredis可以看到有很多redis的镜像,此处因没有指定版本,所以下载的就是默认的最新版本。redislatest.二......
  • Redis-单机数据库-RDB持久化
    RDB文件结构RDB文件的最开头是 REDIS 部分,这个部分的长度为 5 字节,保存着 "REDIS" 五个字符。通过这五个字符,程序可以在载入文件时,快速检查所载入的文件是否......
  • 【Redis 技术探索】「数据迁移实战」手把手教你如何实现在线 + 离线模式进行迁移 Redi
    redis-full-check的使用背景在经历了之前的文章内容章节内容,已完成Redis迁移后,可能会存在以下问题需要进行数据迁移之后的对比。例如,如果Redis迁移的过程出现异常,源端与目的......
  • 【Redis 技术探索】「数据迁移实战」手把手教你如何实现在线 + 离线模式进行迁移 Redi
    在线数据迁移方式对于大多数场景下的Redis的数据迁移,还是比较推荐大家参考我之前的前两篇文章。【Redis技术探索】「数据迁移实战」手把手教你如何实现在线+离线模......
  • Redis基本讲解
    前言1.什么是Redis?它主要用来什么的?Redis,英文全称是RemoteDictionaryServer(远程字典服务),是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、K......
  • Redis-单机数据库-数据库键空间
    Redis是一个键值对(key-valuepair)数据库服务器,服务器中的每个数据库都由一个 redis.h/redisDb 结构表示,其中, redisDb 结构的dict 字典保存了数据库中的所有键值对,......
  • Redis的String类型,原来这么占内存
    Redis的String类型,原来这么占内存存一个Long类型这么占内存,Redis的内存开销都花在哪儿了?1、场景介绍假设现在我们要开发一个图片存储系统,要求这个系统能够根据图片......
  • SimpleAdmin手摸手教学之:Redis缓存
    一、说明系统中有很多数据是不会经常修改的,但是读取的频率确很高,所以这时候就需要使用缓存将这些数据缓存起来。本系统采用Redis分布式缓存,将一些基本信息表缓存在内存中,......
  • CAS服务端部署和客户端部署
    废话不多说直接开搞环境准备,这里我是用的是:apache-tomcat-8.5.84--jdk8--maven1.去cas官网github地址下载cas5.3.9的cas-overlay-template-5.3.zip2.根据解压的这个......