我的编程空间,编程开发者的网络收藏夹
学习永远不晚

SpringBoot2.4.2下怎么使用Redis配置Lettuce

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

SpringBoot2.4.2下怎么使用Redis配置Lettuce

这篇文章主要讲解了“SpringBoot2.4.2下怎么使用Redis配置Lettuce”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot2.4.2下怎么使用Redis配置Lettuce”吧!

    1. Springboot2.4.2下对Redis的基础集成

    1.1 maven添加依赖

     <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-data-redis</artifactId>             <version>2.4.2</version>        </dependency>

    注:Springboot2.4.2下默认使用的就是Lettuce而不是Jedis因此无需在依赖进行排除Jedis

    1.2 添加Redis配置文件

    首先Redis需要准备一个配置文件,本文设定一个单独的文件redis.properties 放在resource文件夹下

    redis.properties

    hostName = localhost  port = 6379  password = password  pool.maxIdle = 10000  pool.minIdle = 1000  pool.maxWaitMillis = 5000  pool.maxTotal = 2  database = 10

    1.3 注册RedisTemplate和StringRedisTemplate的Bean

    LettuceRedisConfig.java

    package com.xxx.demo.redis;import com.fasterxml.jackson.databind.ObjectMapper;import org.apache.commons.pool2.impl.GenericObjectPoolConfig;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.PropertySource;import org.springframework.data.redis.connection.RedisStandaloneConfiguration;import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;import org.springframework.data.redis.connection.lettuce.LettucePoolingClientConfiguration;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.core.StringRedisTemplate;import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;import org.springframework.data.redis.serializer.StringRedisSerializer;import java.io.Serializable;import java.time.Duration;@Configuration@PropertySource("classpath:redis.properties")public class LettuceRedisConfig {    @Value("${hostName}")    private String hostName;    @Value("${password}")    private String password;    @Value("${port}")    private int port;    @Value("${database}")    private int database;    @Value("${pool.maxIdle}")    private int maxIdle;    @Value("${pool.minIdle}")    private int minIdle;    @Value("${pool.maxWaitMillis}")    private int maxWaitMillis;    @Value("${pool.maxTotal}")    private int maxTotal;        @Bean    public LettuceConnectionFactory redisConnectionFactory() {        RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration ();        redisStandaloneConfiguration.setHostName (hostName);        redisStandaloneConfiguration.setPort (port);        redisStandaloneConfiguration.setPassword (password);        redisStandaloneConfiguration.setDatabase (database);        GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig ();        poolConfig.setMaxIdle (maxIdle);        poolConfig.setMinIdle (minIdle);        poolConfig.setMaxWaitMillis (maxWaitMillis);        poolConfig.setMaxTotal (maxTotal);        LettucePoolingClientConfiguration lettucePoolingClientConfiguration =                LettucePoolingClientConfiguration.builder ().commandTimeout (Duration.ofSeconds (10)).shutdownTimeout (Duration.ZERO).poolConfig (poolConfig).build ();        LettuceConnectionFactory lettuceConnectionFactory =                new LettuceConnectionFactory (redisStandaloneConfiguration, lettucePoolingClientConfiguration);        lettuceConnectionFactory.setShareNativeConnection (false);        return lettuceConnectionFactory;    }        @Bean    public RedisTemplate<String, Serializable> redisTemplate(LettuceConnectionFactory connectionFactory) {        RedisTemplate<String, Serializable> redisTemplate = new RedisTemplate<> ();        redisTemplate.setKeySerializer (new StringRedisSerializer ());        redisTemplate.setValueSerializer (new GenericJackson2JsonRedisSerializer ());        redisTemplate.setConnectionFactory (connectionFactory);        return redisTemplate;    }        @Bean    public StringRedisTemplate configStringRedisTemplate(@Autowired LettuceConnectionFactory factory) {        StringRedisTemplate template = new StringRedisTemplate (factory);        template.setEnableTransactionSupport (true);        ObjectMapper mapper;        GenericJackson2JsonRedisSerializer jackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer ();        template.setValueSerializer (new StringRedisSerializer ());        template.setKeySerializer (new StringRedisSerializer ());        template.setHashKeySerializer (new StringRedisSerializer ());        template.setHashValueSerializer (new StringRedisSerializer ());        template.afterPropertiesSet ();        return template;    }}

    1.4 编写一个控制器示例进行redis操作

    package com.xx.demo.controller;import com.xxx.demo.redis.MessagePublisher;import org.springframework.data.redis.core.StringRedisTemplate;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestController@RequestMapping("redis")public class RedisController {    final    StringRedisTemplate redisTemplate;    public RedisController(StringRedisTemplate redisTemplate) {        this.redisTemplate = redisTemplate;       }    @GetMapping("add")    public String add() {        redisTemplate.opsForValue ().set ("a", "1");        return "hi";    }}

    2. 使用redis进行发布订阅

    2.1 添加一个发布者的接口

    package com.xxx.demo.redis;public interface MessagePublisher {    void publish(final String message);}

    2.2 添加一个发布者的实现类

    RedisMessagePublisher.java

    package com.xxx.demo.redis;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.listener.ChannelTopic;import java.io.Serializable;public class RedisMessagePublisher implements MessagePublisher {    @Autowired    private RedisTemplate<String, Serializable> redisTemplate;    @Autowired    private ChannelTopic topic;    public RedisMessagePublisher() {    }    public RedisMessagePublisher(final RedisTemplate<String, Serializable> redisTemplate, final ChannelTopic topic) {        this.redisTemplate = redisTemplate;        this.topic = topic;    }    @Override    public void publish(final String message) {        redisTemplate.convertAndSend (topic.getTopic (), message);    }}

    2.3 添加一个消息监听bean

    RedisMessageSubscriber.java

    package com.xxx.demo.redis;import org.springframework.data.redis.connection.Message;import org.springframework.data.redis.connection.MessageListener;import org.springframework.scheduling.annotation.Async;public class RedisMessageSubscriber implements MessageListener {    @Override    @Async    public void onMessage(Message message, byte[] pattern) {        System.out.println ("Message received: " + new String (message.getBody ()));    }}

    2.4 添加bean注册

    RedisMessageConfig.java

    package com.xxx.demo.redis;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.listener.ChannelTopic;import org.springframework.data.redis.listener.RedisMessageListenerContainer;import org.springframework.data.redis.listener.adapter.MessageListenerAdapter;import java.io.Serializable;@Configurationpublic class RedisMessageConfig {    @Bean    MessageListenerAdapter messageListener() {        return new MessageListenerAdapter (new RedisMessageSubscriber ());    }    @Bean    RedisMessageListenerContainer redisContainer(LettuceConnectionFactory factory) {        final RedisMessageListenerContainer container = new RedisMessageListenerContainer ();        container.setConnectionFactory (factory);        container.addMessageListener (messageListener (), topic ());        return container;    }    @Bean    MessagePublisher redisPublisher(@Autowired RedisTemplate<String, Serializable> redisTemplate) {        return new RedisMessagePublisher (redisTemplate, topic ());    }    @Bean    ChannelTopic topic() {        return new ChannelTopic ("pubsub:queue");    }}

    2.5 改写之前的控制器如下

    package com.xxx.demo.controller;import com.kreakin.demo.redis.MessagePublisher;import org.springframework.data.redis.core.StringRedisTemplate;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestController@RequestMapping("redis")public class RedisController {    final    StringRedisTemplate redisTemplate;    final    MessagePublisher publisher;    public RedisController(StringRedisTemplate redisTemplate, MessagePublisher publisher) {        this.redisTemplate = redisTemplate;        this.publisher = publisher;    }    @GetMapping("hi")    public String hi() {        redisTemplate.opsForValue ().set ("a", "1");        return "hi";    }    @GetMapping("pub")    public String pub() {        publisher.publish ("sdfsf");        return "ok";    }}

    3. 监听key的过期事件

    RedisKeyExpireSubscriber.java

    package com.xxx.demo.redis;import lombok.extern.slf4j.Slf4j;import org.springframework.data.redis.connection.Message;import org.springframework.data.redis.listener.KeyExpirationEventMessageListener;import org.springframework.data.redis.listener.RedisMessageListenerContainer;import org.springframework.stereotype.Component;@Slf4j@Componentpublic class RedisKeyExpireSubscriber extends KeyExpirationEventMessageListener {        public RedisKeyExpireSubscriber(RedisMessageListenerContainer listenerContainer) {        super (listenerContainer);    }    @Override    public void onMessage(Message message, byte[] pattern) {        log.error (message.toString ());    }}

    注意: Redis需要开启事件

    感谢各位的阅读,以上就是“SpringBoot2.4.2下怎么使用Redis配置Lettuce”的内容了,经过本文的学习后,相信大家对SpringBoot2.4.2下怎么使用Redis配置Lettuce这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    SpringBoot2.4.2下怎么使用Redis配置Lettuce

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    SpringBoot2.4.2下怎么使用Redis配置Lettuce

    这篇文章主要讲解了“SpringBoot2.4.2下怎么使用Redis配置Lettuce”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot2.4.2下怎么使用Redis配置L
    2023-06-26

    Redis之Lettuce怎么使用

    本篇内容主要讲解“Redis之Lettuce怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Redis之Lettuce怎么使用”吧!一、摘要Lettuce 是 Redis 的一款高级 Ja
    2023-07-04

    springboot redis如何使用lettuce配置多数据源

    这篇文章将为大家详细讲解有关springboot redis如何使用lettuce配置多数据源,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。springboot是什么springboot一种全新的编程规范
    2023-06-14

    SpringBoot和redis中怎么使用Lettuce客户端

    这篇文章给大家介绍SpringBoot和redis中怎么使用Lettuce客户端,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、重写连接工厂实例,更改其LettuceClientConfiguration 为开启拓扑
    2023-06-20

    怎么配置使用redis

    本篇内容主要讲解“怎么配置使用redis”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么配置使用redis”吧!Spring-data-redis为spring-data模块中对redis的支
    2023-06-04

    Jmeter怎么下载配置使用

    本篇内容介绍了“Jmeter怎么下载配置使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!jemter简介jmeter是apache公司基于
    2023-06-21

    Redis哨兵模式怎么配置和使用

    Redis哨兵模式是一种用于监控和管理Redis主从复制和高可用性的机制。当主服务器出现故障时,哨兵可以自动将从服务器升级为主服务器,以确保系统的正常运行。以下是Redis哨兵模式的配置和使用方法:配置哨兵节点:在Redis的配置文件中配置
    Redis哨兵模式怎么配置和使用
    2024-05-07

    Redis主从复制怎么配置和使用

    在Redis中,主从复制是一种常用的数据备份和负载均衡技术。主从复制可以让一个Redis服务器(称为主节点)将数据复制到其他Redis服务器(称为从节点),从而可以实现数据备份、故障恢复和读写分离等功能。要配置和使用Redis主从复制,可
    Redis主从复制怎么配置和使用
    2024-05-07

    Redis慢查询日志怎么配置和使用

    Redis慢查询日志可以通过配置redis.conf文件来开启和配置,具体步骤如下:打开redis.conf文件,在其中添加如下配置:slowlog-log-slower-than 10000slowlog-max-len 1000其中,
    Redis慢查询日志怎么配置和使用
    2024-05-07

    Docker下Redis集群安装配置怎么实现

    这篇文章主要介绍“Docker下Redis集群安装配置怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Docker下Redis集群安装配置怎么实现”文章能帮助大家解决问题。一、所有机器拉去镜像
    2023-07-02

    Redis的键空间通知怎么配置和使用

    在Redis中,可以使用键空间通知来监控数据库中键的变化。要配置和使用键空间通知,可以按照以下步骤进行:配置Redis服务器以启用键空间通知。在Redis的配置文件(redis.conf)中,将notify-keyspace-events参
    Redis的键空间通知怎么配置和使用
    2024-05-07

    redis和mysql怎么配合使用

    Redis和MySQL可以通过以下几种方式配合使用:1. 缓存查询结果:将MySQL的查询结果存储到Redis中,当下次需要同样的查询结果时,先从Redis中获取,如果存在则直接返回,避免再次查询MySQL数据库。2. 缓存热门数据:将经常
    2023-08-18

    PHPSTORM Xdebug怎么配置使用

    这篇文章主要讲解了“PHPSTORM Xdebug怎么配置使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHPSTORM Xdebug怎么配置使用”吧!原理简要简单 C/S 理解:一个客
    2023-07-05

    kotlin怎么配置和使用

    这篇“kotlin怎么配置和使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“kotlin怎么配置和使用”文章吧。kotli
    2023-06-27

    PHPUnit 在 Windows下的配置及使用是怎么样的

    这篇文章将为大家详细讲解有关PHPUnit 在 Windows下的配置及使用是怎么样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。由于我们项目涉及到php,因此需要对php代码进行单元测试
    2023-06-17

    ESLine怎么配置及使用

    本文小编为大家详细介绍“ESLine怎么配置及使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“ESLine怎么配置及使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。环境:React,Webpack,Babe
    2023-06-05

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录