响应式久草编程基础教程:久草Spring Boot 与 Lettuce 在线整合「建议收藏」

响应式久草编程基础教程:久草Spring Boot 与 Lettuce 在线整合「建议收藏」本文主要介绍响应式编程访问Redis,以及SpringBoot与Lettuce的整合使用。Lettuce是可扩展性线程安全的Redis客户端,用于同步、异步和响应式使用。如果多个线程避免阻塞和事务性操作(例如BLPOP和MULTI/EXEC),则它们可以共享一个连接。Lettuce是基于Netty构建的。支持很多高级的Redis特性。根据SpringDataRedis2.0的更新的消息显示,SpringDataRedis不再支持JRedis的驱动,

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

本文主要介绍响应式编程访问 Redis,以及 Spring Boot 与 Lettuce 的整合使用。

Lettuce 是可扩展性线程安全的 Redis 客户端,用于同步、异步和响应式使用。如果多个线程避免阻塞和事务性操作(例如 BLPOP 和 MULTI/EXEC),则它们可以共享一个连接。Lettuce 是基于 Netty 构建的。支持很多高级的Redis 特性。

根据 Spring Data Redis 2.0 的更新的消息显示,Spring Data Redis 不再支持 JRedis 的驱动,使用 Lettuce 来支持响应式连接,所以了解 Lettuce 的使用还是很有必要。

响应式久草编程基础教程:久草Spring Boot 与 Lettuce 在线整合「建议收藏」

使用Reactive 驱动连接到Redis

无论使用什么库连接,必须要使用到 ReactiveRedisConnection 和 ReactiveRedisConnectionFactory 来操作 Redis 或者查询存活的连接。

Lettuce 支持 单机,Redis Sentinel、Redis Cluster 集群模式

ReactiveRedisConnection 是与 Redis 通信的核心组件, ReactiveRedisConnectionFactory 用于创建 ReativeRedisConnection 实例。

Spring Boot 整合Lettuce 使用

增加依赖

<?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.5.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>spring-reactive-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring-reactive-demo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>11</java.version>
    </properties>
    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis-reactive</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.projectreactor</groupId>
            <artifactId>reactor-test</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>

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

</project>

配置 ReactiveRedisTemplate

@Configuration
public class LettuceConfig {

    @Bean
    ReactiveRedisTemplate<String, String> reactiveRedisTemplate(ReactiveRedisConnectionFactory reactiveRedisConnectionFactory) {
        return new ReactiveRedisTemplate<>(reactiveRedisConnectionFactory, RedisSerializationContext.string());
    }
}

ReactiveRedisTempalte 操作

@RestController
public class LettuceController {

    @Autowired
    private ReactiveRedisTemplate reactiveRedisTemplate;

    @GetMapping("/put")
    public Mono put(@RequestParam("key") String key, @RequestParam("val") String val) {
        return reactiveRedisTemplate.opsForValue().set(key, val);
    }

    @GetMapping("/get")
    public Mono<String> get(@RequestParam("key") String key) {
        return reactiveRedisTemplate.opsForValue().get(key);
    }

    @GetMapping("/addList")
    public Mono<Long> addList(@RequestParam("key") String key, @RequestParam("val") String val) {
        return reactiveRedisTemplate.opsForList().rightPush(key, val);
    }

    @GetMapping("/getList")
    public Flux<String> getList(@RequestParam("key") String key) {
        return reactiveRedisTemplate.opsForList().range(key, 0L, Long.MAX_VALUE);
    }

    @GetMapping("/setHash")
    public Mono<Boolean> setHash(@RequestParam("key") String key, @RequestParam("hashKey") String hashKey, @RequestParam("val") String val) {
        return reactiveRedisTemplate.opsForHash().put(key, hashKey, val);
    }

    @GetMapping("/getHash")
    public Flux<Map.Entry<String, String>> getHash(@RequestParam("key") String key) {
        return reactiveRedisTemplate.opsForHash().entries(key);
    }
}

    通过 ReactiveRedisTemplate 操作 Redis 的 string, list, hash类型的使用, 大致的了解 Lettuce 的使用,还有很多其他操作的类型,可以通过官方文章自行查阅。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/180223.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • android 实现悬架控制

    android 实现悬架控制

  • 初中英语语法(008)-动词不定式

    初中英语语法(008)-动词不定式动词不定式动词不定式(台版叫不定词)是非限定动词,不受主词的人称和数的限制,一般由to+原形动词构成,有时可不带to或不可带to。动词不定式的“不定”主要体现在“身份”不定,也就意味着它在句子中所充当的成分不定。1、动词不定式可以充当哪些成分1、名词可以代替名词属性,所以也就可以充当主语,宾语,表语和补语。例如:(1)Tobuythingsinthismarketmu…

  • GTest 总结_gtest单元测试

    GTest 总结_gtest单元测试GoogleC++单元测试框架(简称Gtest),可在多个平台上使用(包括Linux,MacOSX,Windows,Cygwin和Symbian),它提供了丰富的断言、致命和非致命失败判断,能进行值参数化测试、类型参数化测试、“死亡测试”。1断言一般的,要测试一个方法(函数)是否是正常执行的,可以提供一些输入数据,在调用这个方法(函数)后,得到输出数据,然后检查输出的数据是否与我们期望的结果是一致的,若一致,则说明这个方法的逻辑是正确的,否则,就有问题。在对输出结果进行检查(chec.

  • vue axios轮询更新echarts 页面崩溃问题

    vue axios轮询更新echarts 页面崩溃问题之前做过一个项目测试发现这个问题,就是页面停留3,4个小时之后页面崩溃了后来观察了浏览器的Memory发现echarts实例还有echarts数据缓存在不断累积解决:刚开始看了echarts官方api确实提供了echarts.clear()清空当前实例,会移除实例中所有的组件和图表。用了以后发现作用不是很大还是会崩溃。那就是实例的问题了刚开始只是加了个判断 letmyEcharts if(!myEcharts){ myEcharts=echarts.init

    2022年10月31日
  • Light OJ Dynamic Programming

    Light OJ Dynamic Programming

  • vivado2018.3 安装(包含license)

    vivado2018.3 安装(包含license)Xilinx采用的是ISE和vivado;Altera采用的是quartusII。vivado2018.3安装本次安装问题描述:(1)上一次上官网下的比较慢,官网链接:https://china.xilinx.com/support/download/index.html/content/xilinx/zh/downloadNav/vivado-design-tools.html…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号