SpringCloud微服务实战——搭建企业级开发框架(二十):集成Reids缓存
  AjzKod8N0zyC 2023年11月02日 130 0

  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 通过以上设置的值和获取的结果可知,我们配置的缓存已生效。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
AjzKod8N0zyC