当前位置: 首页 > news >正文

SpringBoot(十二)SpringBoot配置redis

接下来我要实现的webscoket即时聊天中需要使用到redis,我先在项目中配置一下redis。

我这里再windows中做测试,关于redis的安装请移步《Redis(三)Windows系统安装redis》

一:在pom.xml中添加依赖

<!-- springboot redis start       -->
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-redis</artifactId>
 </dependency>
 <!-- springboot redis end       -->

二:在yml配置文件中添加redis参数配置

spring:
   #redis
   redis:
     # 链接
     host: 127.0.0.1
     # 端口
     port: 6379
     # 使用的数据库索引,默认是0
     database: 0
     # 连接超时时间
     timeout: 1800000
     # 设置密码
     # password: "123456"
     lettuce:
       pool:
         # 最大阻塞等待时间,负数表示没有限制
         max-wait: -1
         # 连接池中的最大空闲连接
         max-idle: 5
         # 连接池中的最小空闲连接
         min-idle: 0
         # 连接池中最大连接数,负数表示没有限制
         max-active: 20

我本地的redis没有设置密码,因此密码哪一行的配置被我注释掉了。

三:在项目的config目录中添加RedisConfig.java文件

package com.springbootblog.config;
 
 import com.fasterxml.jackson.annotation.JsonAutoDetect;
 import com.fasterxml.jackson.annotation.PropertyAccessor;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.springframework.cache.annotation.CachingConfigurerSupport;
 import org.springframework.cache.annotation.EnableCaching;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.data.redis.connection.RedisConnectionFactory;
 import org.springframework.data.redis.core.*;
 import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
 import org.springframework.data.redis.serializer.StringRedisSerializer;
 
 
 @Configuration
 @EnableCaching //开启注解
 public class RedisConfig extends CachingConfigurerSupport {
 
     /**
      * retemplate相关配置
      */
     @Bean
     public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
 
         RedisTemplate<String, Object> template = new RedisTemplate<>();
         // 配置连接工厂
         template.setConnectionFactory(factory);
 
         //使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值(默认使用JDK的序列化方式)
         Jackson2JsonRedisSerializer jacksonSeial = new Jackson2JsonRedisSerializer(Object.class);
 
         ObjectMapper om = new ObjectMapper();
         // 指定要序列化的域,field,get和set,以及修饰符范围,ANY是都有包括private和public
         om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
         // 指定序列化输入的类型,类必须是非final修饰的,final修饰的类,比如String,Integer等会跑出异常
         om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
         jacksonSeial.setObjectMapper(om);
 
         // 值采用json序列化
         template.setValueSerializer(jacksonSeial);
         //使用StringRedisSerializer来序列化和反序列化redis的key值
         template.setKeySerializer(new StringRedisSerializer());
 
         // 设置hash key 和value序列化模式
         template.setHashKeySerializer(new StringRedisSerializer());
         template.setHashValueSerializer(jacksonSeial);
         template.afterPropertiesSet();
 
         return template;
     }
 
     /**
      * 对hash类型的数据操作
      */
     @Bean
     public HashOperations<String, String, Object> hashOperations(RedisTemplate<String, Object> redisTemplate) {
         return redisTemplate.opsForHash();
     }
 
     /**
      * 对redis字符串类型数据操作
      */
     @Bean
     public ValueOperations<String, Object> valueOperations(RedisTemplate<String, Object> redisTemplate) {
         return redisTemplate.opsForValue();
     }
 
     /**
      * 对链表类型的数据操作
      */
     @Bean
     public ListOperations<String, Object> listOperations(RedisTemplate<String, Object> redisTemplate) {
         return redisTemplate.opsForList();
     }
 
     /**
      * 对无序集合类型的数据操作
      */
     @Bean
     public SetOperations<String, Object> setOperations(RedisTemplate<String, Object> redisTemplate)

http://www.mrgr.cn/news/70784.html

相关文章:

  • pgsql和mysql的自增主键差异
  • 点云论文阅读-1-pointnet++
  • 明日周刊-第27期
  • [Codesys]常用功能块应用分享-BMOV功能块功能介绍及其使用实例说明
  • 静态C语言函数调用关系生成工具-cflow
  • docker之容器设置开机自启(4)
  • 使用金鸣识别在线网页版将行驶证转为结构化Excel教程
  • C#画图板的详细示例代码
  • 【linux】CentOS 的软件源(Repository)学习
  • C++ | Leetcode C++题解之第559题N叉树的最大深度
  • 【Linux】获得同一子网下当前在线设备IP/Latency/MAC 通过nmap指定CIDR扫描当前在线设备
  • 启动QT时,出现找不到python27.dll的问题报错
  • 后端:Aop 面向切面编程
  • Springboot配置全局异常通用返回
  • Golang | Leetcode Golang题解之第559题N叉树的最大深度
  • 初识Linux · 共享内存
  • NRZ(Non-Return to Zero Code,非归零码),NRZI(Non-Return to Zero Inverted Code,非归零反转码)
  • SpringBoot(十三)SpringBoot配置webSocket
  • SIwave:在 SIwave 中释放计算频率扫描的强大功能
  • SpringBoot(八)使用AES库对字符串进行加密解密
  • 使用 ConstraintLayout 实现灵活的相对定位与偏移布局
  • 【Linux 31】网络层协议 - IP
  • CAN总线数据帧格式详细介绍
  • Java中的类和对象:深入理解面向对象编程的核心
  • Vagrant 没了 VirtualBox 的话可以配 Qemu
  • 第四十四章 Vue之actions/mapActions/getters