动力节点最新Redis7笔记-第七章Redis缓存

本文详细介绍了使用Java的Jedis客户端操作Redis缓存,包括Jedis的基本使用、JedisPool连接池、Sentinel高可用集群的连接,以及Spring Boot中整合Redis和操作事务。此外,还探讨了高并发场景下的缓存穿透、缓存击穿、缓存雪崩以及数据库缓存双写不一致问题及其解决方案。
摘要由CSDN通过智能技术生成

7 Redis缓存

7.1 Jedis客户端

7.1.1 Jedis简介

Jedis是一个基于java的Redis客户端连接工具,旨在提升性能与易用性。

7.1.2 创建工程

首先创建一个普通的Maven工程01-jedis,然后在POM文件中添加Jedis与Junit依赖。

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

<dependencies>
    <!--jedis依赖-->
    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>4.2.0</version>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>
</dependencies>

7.1.3 使用Jedis实例

Jedis基本使用十分简单,其提供了非常丰富的操作Redis的方法,而这些方法名几乎与Redis命令相同。在每次使用时直接创建Jedis实例即可。在Jedis实例创建好之后,Jedis底层实际会创建一个到指定Redis服务器的Socket连接。所以,为了节省系统资源与网络带宽,在每次使用完Jedis实例之后,需要立即调用close()方法将连接关闭。
首先,需要在工程的src/test/java下创建测试类JedisTest。

7.1.3.1 value为String的测试

7.1.3.2 value为Hash的测试

7.1.3.3 value为List的测试

7.1.3.4 value为Set的测试

7.1.3.5 value为ZSet的测试

7.1.4 使用JedisPool

如果应用非常频繁地创建和销毁Jedis实例,虽然节省了系统资源与网络带宽,但会大大降低系统性能。因为创建和销毁Socket连接是比较耗时的。此时可以使用Jedis连接池来解决该问题。
使用JedisPool与使用Jedis实例的区别是,JedisPool是全局性的,整个类只需创建一次即可,然后每次需要操作Redis时,只需从JedisPool中拿出一个Jedis实例直接使用即可。使用完毕后,无需释放Jedis实例,只需返回JedisPool即可。

7.1.5 使用JedisPooled

对于每次对Redis的操作都需要使用try-with-resource块是比较麻烦的,而使用JedisPooled则无需再使用该结构来自动释放资源了。

7.1.6 连接Sentinel高可用集群

对于Sentinel高可用集群的连接,直接使用JedisSentinelPool即可。在该客户端只需注册所有Sentinel节点及其监控的Master的名称即可,无需出现master-slave的任何地址信息。其采用的也是JedisPool,使用完毕的Jedis也需要通过close()方法将其返回给连接池。

7.1.7 连接分布式系统

对于Redis的分布式系统的连接,直接使用JedisCluster即可。其底层采用的也是Jedis连接池技术。每次使用完毕后,无需显式关闭,其会自动关闭。
对于JedisCluster常用的构造器有两个。一个是只需一个集群节点的构造器,这个节点可以是集群中的任意节点,只要连接上了该节点,就连接上了整个集群。但该构造器存在一个风险:其指定的这个节点在连接之前恰好宕机,那么该客户端将无法连接上集群。所以,推荐使用第二个构造器,即将集群中所有节点全部罗列出来。这样就会避免这种风险了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值