SpringCloud微服务实战——搭建企业级开发框架(二十):集成Reids缓存

  Spring Boot 集成 Redis 的方式主要有以下几种:
  1. 使用 Spring Boot Starter Redis,Spring Boot 提供了一个开箱即用的 Redis Starter,只需要在 pom.xml 中添加 Redis Starter 的依赖即可。

  2. 使用 Jedis 客户端,Jedis 是一个流行的 Java Redis 客户端,可以通过 Maven 导入 Jedis 依赖,然后使用 Jedis 提供的 API 连接 Redis 数据库。

  3. 使用 Lettuce 客户端,Lettuce 是一个高级的 Java Redis 客户端,支持异步和响应式 API,也可以通过 Maven 导入 Lettuce 依赖,然后使用 Lettuce 提供的 API 连接 Redis 数据库。

  4. 使用 Redisson,Redisson 是一个基于 Redis 的分布式 Java 对象存储和缓存库,提供了丰富的分布式数据结构和服务,包括分布式锁、信号量、BitSet、Topic、Queue、Map 等等。可以通过 Maven 导入 Redisson 依赖,然后使用 Redisson 提供的 API 连接 Redis 数据库。

  在我们的框架中,选择Redisson作为Redis客户端,主要原因如下:
  1. 高性能:Redisson采用了Netty框架,实现了高效的网络通信,同时使用Jedis等传统客户端的优点,使Redisson具有高性能的特点。

  2. 分布式:Redisson提供了大量的分布式功能,如分布式锁、分布式集合、分布式对象等。基于Redis实现的分布式功能,可以满足各种业务场景需求。

  3. 易用性:Redisson提供了简单易用的API,对开发者友好,开发人员可以快速的上手使用。

  4. 高可靠性:Redisson的多种特性都是为了实现高可靠性,例如主从复制、哨兵模式以及集群模式等。

  5. 扩展性:Redisson提供了可扩展的功能,如Redisson提供的Redisson Spring Cache和Redisson Spring Data是基于Spring Framework的扩展包,可以方便的与Spring集成。

这章我们来介绍在系统中引入redisson-spring-boot-starter依赖来实现redis缓存管理

1、在GitEgg-Platform中新建gitegg-platform-redis用于管理工程中用到的Redis公共及通用方法。
        <!-- redisson Redis客户端-->
        <dependency>
            <groupId>org.redisson</groupId>
            <artifactId>redisson-spring-boot-starter</artifactId>
        </dependency>
2、在gitegg-platform-bom的pom.xml文件中添加gitegg-platform-redis
            <!-- gitegg cache自定义扩展 -->
            <dependency>
                <groupId>com.gitegg.platform</groupId>
                <artifactId>gitegg-platform-redis</artifactId>
                <version>${gitegg.project.version}</version>
            </dependency>
3、GitEgg-Platform重新install,在GitEgg-Cloud子工程gitegg-service-system代码SystemController.java中添加设置和获取缓存的测试方法

    private final RedissonClient redisson;

    private final RedisTemplate<String, String> template;

    @ApiOperation(value = "缓存测试设置值")
    @GetMapping(value = "redis/set")
    public Result redisSet(@RequestParam("id") String id) {
        RMap<String, String> m = redisson.getMap("test", StringCodec.INSTANCE);
        m.put("1", id);
        return Result.success("设置成功");
    }

    @ApiOperation(value = "缓存测试获取值")
    @GetMapping(value = "redis/get")
    public Result redisGet() {
        BoundHashOperations<String, String, String> hash = template.boundHashOps("test");
        String t = hash.get("1");
        return Result.success(t);
    }
4、gitegg-service-system中的GitEggSystemApplication.java添加@EnableCaching注解
package com.gitegg.service.system;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.ComponentScan;

/**
 * gitegg-system 启动类
 */
@EnableDiscoveryClient
@ComponentScan(basePackages = "com.gitegg")
@MapperScan("com.gitegg.*.*.mapper")
@SpringBootApplication
@EnableCaching
public class GitEggSystemApplication {

    public static void main(String[] args) {
        SpringApplication.run(GitEggSystemApplication.class,args);
    }

}
5、在Nacos配置文件中添加redis的相关配置,这里使用单机版redis,其他模式配置请参考官方文档
spring:
  redis:
    database: 1
    host: 127.0.0.1
    port: 6379
    password: root
    ssl: false
    timeout: 2000
  redisson: 
    config: |
      singleServerConfig:
        idleConnectionTimeout: 10000
        connectTimeout: 10000
        timeout: 3000
        retryAttempts: 3
        retryInterval: 1500
        password: root
        subscriptionsPerConnection: 5
        clientName: null
        address: "redis://127.0.0.1:6379"
        subscriptionConnectionMinimumIdleSize: 1
        subscriptionConnectionPoolSize: 50
        connectionMinimumIdleSize: 32
        connectionPoolSize: 64
        database: 0
        dnsMonitoringInterval: 5000
      threads: 0
      nettyThreads: 0
      codec: !<org.redisson.codec.JsonJacksonCodec> {}
      "transportMode":"NIO"
6、启动项目,使用swagger进行测试

image.png
image.png
通过以上设置的值和获取的结果可知,我们配置的缓存已生效。

本文源码在https://gitee.com/wmz1930/GitEgg 的chapter-20分支。

GitEgg-Cloud是一款基于SpringCloud整合搭建的企业级微服务应用开发框架,开源项目地址:

Gitee: https://gitee.com/wmz1930/GitEgg
GitHub: https://github.com/wmz1930/GitEgg

欢迎感兴趣的小伙伴Star支持一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值