【Azure Redis 缓存】示例使用 redisson-spring-boot-starter 连接/使用 Azure Redis 服务

Azure,Redis ,使用 ,spring · 浏览次数 : 238

小编点评

## Spring Boot 项目与 Azure Redis 服务的 Redisson 连接步骤分析 **1. 项目依赖** * 添加 `redisson-spring-boot-starter` 依赖于 `pom.xml` 中。 * 根据 Spring Boot 的版本,选择相应的 Redisson 版本。 **2. RedissonAutoConfiguration 类** * 创建 `RedissonAutoConfiguration` 类,继承 `RedissonAutoConfigurationCustomizer` 和 `RedissonProperties` 类。 * 从 GitHub 上获取 `redisson-spring-boot-starter` 的 `Auto Configuration` 类,并将其注入 `RedissonClient` 中。 **3. Application Main 函数** * 在 `Application Main` 中添加 `Get` 方法,测试 Set 和 Get Redis Key 添加和获取 Redisson Client 对象。 * 定义一个 GET 请求,请求 URL 为 `/redis/{key}`。 **4. 示例代码** ```java @RequestMapping(\"/redis/{key}\") String SetGetRedis(@PathVariable String key) { // Set the Key to Redis Service. RSet set = redisson.getSet(key); set.add("Test value from Redisson Application ... "); // Return the Vlaue to Page return set.toString(); } ``` **5. 其他说明** * 请确保您的 Azure Key Vault 权限允许您访问密钥。 * 代码示例仅供参考,您可以根据需求进行修改。

正文

问题描述

在 Spring Boot 项目中,使用 Redisson 连接 Azure Redis 服务,如下是详细的操作步骤(项目源代码文末可下载)

 

示例步骤

第一步: 在 Spring Boot 的项目中,添加 redisson-spring-boot-starter 依赖

 在项目的pom.xml文件中添加 redisson-spring-boot-starter 依赖,根据Spring Boot 的版本来选择 Redisson 的版本。

        <dependency>
            <groupId>org.redisson</groupId>
            <artifactId>redisson-spring-boot-starter</artifactId>
            <version>3.16.8</version>
        </dependency>

(Maven Source: https://mvnrepository.com/artifact/org.redisson/redisson-spring-boot-starter)

(注:全部 pom.xml 请见附件 )

 

第二步: 添加 RedissonAutoConfiguration 类, RedissonAutoConfigurationCustomizer  类,和 RedissonProperties  类

从Github中获取 redisson-spring-boot-starter Auto Configuration 类的内容,添加在自己的测试项目中。下载地址:https://github.com/redisson/redisson/tree/master/redisson-spring-boot-starter/src/main/java/org/redisson/spring/starter

本地项目中,添加完成后的文件结构为:

本次实验,采用的是最基本方式:把Redis 服务器的参数设置在 application.yml 文件中

application.yml 

spring:
  redis:
    host: xxxxxxxxxxxxxxxxxxx.redis.cache.chinacloudapi.cn
    port: 6380
    database: 0
    password: *****************************************************
    ssl: true
    abortConnect: false
    timeout: 1000000ms

 

第三步: 在 Application Main 函数类中添加 Get 方法,在其中测试Set, Get Redis Key

添加 RedissonClient 对象,然后定义一个GET请求:SetGetRedis,请求URL为:/redis/{key},项目运行后,访问的URL为:http://localhost:8080/redis/keytest1

package com.example.demokeyvault;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.redis.core.RedisTemplate;
import org.redisson.api.RSet;
import org.redisson.api.RedissonClient; 
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

 

@SpringBootApplication
@RestController
public class DemokeyvaultApplication {
        
    @Autowired
    private RedissonClient redisson;
    
    public static void main(String[] args) {
        SpringApplication.run(DemokeyvaultApplication.class, args);

        System.out.println("Hello World!");
    }

    @RequestMapping("/redis/{key}")
    String SetGetRedis(@PathVariable String key){
        //Set the Key to Redis Service.
        RSet<String> set = redisson.getSet(key);
        set.add("Test value from Redisson Application ... ");

        //Return the Vlaue to Page 
          return set.toString();
    }
}

运行效果如下:

 

附录:pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.9.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demokeyvault</artifactId>
    <version>0.1</version>
    <name>demokeyvault</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.redisson</groupId>
            <artifactId>redisson-spring-boot-starter</artifactId>
            <version>3.16.8</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.azure</groupId>
            <artifactId>azure-security-keyvault-secrets</artifactId>
            <version>4.2.3</version>
        </dependency>

        <dependency>
            <groupId>com.azure</groupId>
            <artifactId>azure-identity</artifactId>
            <version>1.2.0</version>
        </dependency>
        <dependency>
            <groupId>io.projectreactor</groupId>
            <artifactId>reactor-core</artifactId>
            <version>3.4.19</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

 

源文件下载地址:https://files.cnblogs.com/files/lulight/redissondemo.zip?t=1678104057 

或 

Github 地址:https://github.com/LuBu0505/My-Code/blob/main/redissondemo.zip

 

与【Azure Redis 缓存】示例使用 redisson-spring-boot-starter 连接/使用 Azure Redis 服务相似的内容:

【Azure Redis 缓存】示例使用 redisson-spring-boot-starter 连接/使用 Azure Redis 服务

问题描述 在 Spring Boot 项目中,使用 Redisson 连接 Azure Redis 服务,如下是详细的操作步骤(项目源代码文末可下载) 示例步骤 第一步: 在 Spring Boot 的项目中,添加 redisson-spring-boot-starter 依赖 在项目的pom.xm

【Azure Redis 缓存】关于Azure Cache for Redis 服务在传输和存储键值对(Key/Value)的加密问题

问题描述 Azure Cache for Redis 服务在传输和存储数据时是如何加密呢? 问题回答 一:关于Azure cache for Redis服务在数据传输过程中是如何加密的? 为了确保在Azure cache for Redis和客户端应用程序之间传输的数据安全,需要启用TLS加密。Az

【Azure Redis 缓存】Redis 连接失败

问题描述 Azure Redis 出现连接失败,过一会儿后,又能自动恢复。 问题解答 其实,因为Azure Redis服务一直都有升级维护的操作(平均每月一次),Redis服务更新是平台自动进行的计划内的维护升级行为,一般客户端都有重试机制,是不会影响应用。 故障转移发生的情况有: 系统更新,例如

【Azure Redis 缓存】在Azure Redis中,如何限制只允许Azure App Service访问?

问题描述 在Azure Redis服务中,如何实现只允许Azure App Service访问呢? 问题解答 Azure Redis 开启 防火墙的功能,并在防火墙中添加上App Service的出口IP地址即可。两步即可实现此目的! 1)查询 App Service 的出口IP地址 2)添加第1步

【Azure Redis 缓存】Azure Redis服务开启了SSL(6380端口), PHP如何访问缓存呢?

问题描述 使用6379端口连接Azure Redis服务,连接失败。因为默认情况下Azure Redis的设置没有打开6379的端口。需要使用SSL(6380端口)进行连接,但是遇见了无法连接的问题。 使用非SSL(6379端口)的连接代码

【Azure Redis 缓存】Lettuce 连接到Azure Redis服务,出现15分钟Timeout问题

问题描述 在Java应用中,使用 Lettuce 作为客户端SDK与Azure Redis 服务连接,当遇见连接断开后,长达15分钟才会重连。导致应用在长达15分的时间,持续报错Timeout 问题解答 这是 Lettuce 目前的一个未解决的已知问题,可以查看此 github issue来了解这个

【Azure Redis 缓存】使用StackExchange.Redis,偶发ERROR - Timeout performing HSET (15000ms)

问题描述 使用StackExchange.Redis 作为Redis客户端SDK,连接Azure Redis服务,长期运行后发现,每天都偶发 Timeout Error。 错误消息如下: StackExchange.Redis.RedisTimeoutException: Timeout perfo

【Azure Redis 缓存】Redission客户端连接Azure:客户端出现 Unable to send PING command over channel

问题描述 Redission客户端连接Azure:客户端出现 Unable to send PING command over channel ... ... io.netty.channel.StacklessClosedChannelException: null at io.netty.cha

【Azure Redis 缓存】对于Azure Redis 从 Redis 4 升级到 Redis 6 的一些疑问

问题描述 使用Azure Redis服务,客户端使用Redisson 3.X , 在近期Microsoft Azure对Redis服务进行大规模变动升级( Redis 版本由 4 升级到 6),对于这次升级的影响有以下的问题? 问题解释 问题一:Redis 6.0 和 Redisson 3.X 之间

【Azure Redis 缓存】Azure Redis 4.0 被扫描到漏洞,如何修补呢?

问题描述 在安全级别要求高的公司中,任何系统都会进行安全扫描。比如Azure 云上的Redis服务,也在扫描的范围中,最后发现Redis 4.0存在以下漏洞: CVE-2019-10192:https://nvd.nist.gov/vuln/detail/CVE-2019-10192 CVE-201