【Redis】Redis的Java客户端-Jedis

经过前面的学习,我们已经基本了解了redis常见的五种数据结构,以及每种结构的常见命令和基本用法,不过最终我们实现业务,还是要用编码的方式来实现。

在Redis官网中提供了各种语言的客户端供我们使用,地址:https://redis.io/docs/clients/

image-20240523122336455

当然作为Java程序员,我们要关注的肯定是Java语言的客户端其中Java客户端也包含很多:

image-20220609102817435

标记为❤的就是推荐使用的java客户端,包括:

  • Jedis(java和redis组成的单词)和Lettuce:这两个主要是提供了Redis命令对应的API,方便我们操作Redis,而SpringDataRedis又对这两种做了抽象和封装,因此我们后期会直接以SpringDataRedis来学习。

    并且它以Redis命令作为方法名称,例如SET命令对应的方法就是set,GET命令对应的方法就叫get,MSET命令对应的方法就叫mset,因此学习成本低,简单实用。

    但是Jedis实例是线程不安全的,也就是说你创建一个线程实例,多线程并发运行的时候是有线程安全问题的,因此多线程使用时必须为每一个线程创建独立的Jedis连接,那么就必须使用连接池的方式来使用了。

  • Lettuce是基于Netty实现的,Netty是高性能的网络编程框架,支持同步、异步和响应式编程方式,并且是线程安全的。支持Redis的哨兵模式、集群模式和管道模式。所以这种模式跟Spring的编程模式结合的比较好,并且响应式编程、异步编程的吞吐能力也高一点。因此spring官方默认兼容的就是Lettuce客户端。

  • Redisson的特点不在于对redis的基本操作,而是在于它底层是一个基于Redis实现了一系列的工具,例如分布式、可伸缩的Java数据结构集合。包含了诸如Map、Queue、Lock、 Semaphore(信号量)、AtomicLong(原子整形)等这些类,这些类可以保证我们平常使用的时候做数据存储、线程控制都非常方便。

    但是这些东西它们都有一个特点:它们都是单机的,如果是在分布式环境下,它们往往就失去作用了。

  • 而Redission就是基于Redis重新实现了这一系列的东西,以至于它们可以在分布式环境下同样能够使用。因此如果你有在分布式环境下使用的需求,就不需要重新造轮子了,而是直接使用Redission。

    Redisson:是在Redis基础上实现了分布式的可伸缩的java数据结构,例如Map.Queue等,而且支持跨进程的同步机制:Lock.Semaphore等待,比较适合用来实现特殊的功能需求。

  • Spring Data Redis:兼容了jedis和lettuce

一般作为普通Redis来实现业务逻辑,用Jedis、Lettuce这两种会相对来讲比较方便一些,因此这两种应该都掌握。

但是spring最擅长的就是整合,因此后面会学习 Spring Data Redis,它底层可以兼容 Jedislettuce,即既可以用 Jedis 实现,也可以用 lettuce 实现,未来学完了它,就等于这两个客户端都会了。

但是有些企业还是喜欢使用旧的Jedis,因为它的命令就是方法名,学习成本低,因此我们会把Jedis的原生API也会讲一下,然后再学习Spring Data Redis。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值