SpringBoot——Redis 的集成和简单使用
发布时间:2023-01-11 15:56:06 252
相关标签: # java# 数据库# memcached# 数据# 服务器
前言
在实际工作中,在存储一些非结构化或者缓存一些临时数据及热点数据时,一般上都会用上
mongodb
和redis
进行这方面的需求。所以本文准备讲下缓存数据库Redis
的集成,同时会介绍下基于Redis
和注解驱动的Spring Cache
的简单使用。
Redis 介绍
大家应该对
Redis
应该比较熟悉了。这几年也是大行其道的缓存数据库,目前的memcached
由于使用场景及其存储数据结构的单一(不知道现在是否有改善,现在基本没有接触了),在工作中也使用的少了。引用官网的简介,Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
推荐redis中国社区:http://www.redis.cn/
SpringBoot的Redis集成
0.本章节以上一章节的示例基础上进行集成。所以大家可下载第十章节示例或者在章节末尾直接下载本章节示例。
- 1.pom依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
直接引入,相关依赖会自动加载的,这就是springboot
让人愉悦之处呀。
- 2.
application.properties
配置加入redis相关配置
配置自动加载类为:
org.springframework.boot.autoconfigure.data.redis.RedisProperties
,可在属性文件中点击某属性快捷跳转。注意到其启动类为org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration
。这里就不介绍了,后面会写一篇关于Springboot
自动加载配置的文章。
# REDIS (RedisProperties)
# Redis数据库索引(默认为0)
spring.redis.database=0
# Redis服务器地址
spring.redis.host=127.0.0.1
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码(默认为空)
spring.redis.password=
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.pool.max-active=8
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.pool.max-wait=-1
# 连接池中的最大空闲连接
spring.redis.pool.max-idle=8
# 连接池中的最小空闲连接
spring.redis.pool.min-idle=0
# 连接超时时间(毫秒)
spring.redis.timeout=0
- 3.一般上通过以上两步就可使用了,但工作中一般上是通过
StringRedisTemplate
(默认采用string
的序列化,保存key和值时都是通过此序列化策略)接口进行操作,所以这里直接配置了StringRedisTemplate
bean类。 RedisConfig.java
/**
*
* @author oKong
*
*/
@Configuration
public class RedisConfig {
/**
* 定义 StringRedisTemplate ,指定序列化和反序列化的处理类
* @param factory
* @return
*/
@Bean
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {
StringRedisTemplate template = new StringRedisTemplate(factory);
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(
Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
//序列化 值时使用此序列化方法
template.setValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
return template;
}
}
文章来源: https://blog.51cto.com/u_14014612/5996755
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报