携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情
众所周知,SpringBoot最大的特点就是简化配置,一站式依赖引入。这里快速集成SpringBoot-Redis依赖,并进一步封装RedisTemplate。
引入依赖
1.引入POM文件相关依赖
<!-- 加载 spring boot redis 包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
配置application.yml
2.在配置文件application.xml中,增加配置项:
spring:
#Redis配置
redis:
host: 127.0.0.1
port: 6379
password:
#连接超时时间(毫秒)
timeout: 30000
#连接池中的最大连接数
poolMaxTotal: 10
#连接池中的最大空闲数
poolMaxIdle: 10
#连接池最大阻塞等待时间(使用负值表示没有限制)
poolMaxWait: 3
设置redis数据库密码
3.连接Redis数据库需要验证身份,因此首先应该在redis.conf文件vim修改bind-port为0.0.0.0(即注释掉127.0.0.1绑定),然后设置数据库密码/关闭安全模式(不推荐无密码)。
这里需要如果设置redis的密码,请打开客户端执行以下命令
redis 127.0.0.1:6379> config set requirepass “你的密码”
设置完毕后,验证是否设置成功
redis 127.0.0.1:6379> auth “你的密码”
配置序列化规则RedisCofig
4.最后需要设置Redis序列化规则,增加如下类代码
/**
* 开源版本请务必保留此注释头信息,若删除gemframe官方保留所有法律责任追究!
* 本软件受国家版权局知识产权以及国家计算机软件著作权保护(登记号:2018SR503328)
* 不得恶意分享产品源代码、二次转售等,违者必究。
* Copyright (c) 2020 gemframework all rights reserved.
* http://www.gemframework.com
* 版权所有,侵权必究!
*/
package com.gemframework.common.config.redis;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.*;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializationContext;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import javax.annotation.Resource;
import java.time.Duration;
@Configuration
@EnableCaching
public class GemRedisConfig {
@Resource
private RedisConnectionFactory factory;
@Bean
public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
// 设置value的序列化规则和 key的序列化规则
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setDefaultSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setConnectionFactory(factory);
return redisTemplate;
}
public CacheManager cacheManager(RedisConnectionFactory factory) {
RedisSerializer<String> redisSerializer = new StringRedisSerializer();
// 配置序列化(解决乱码的问题),过期时间30秒
RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofSeconds(1800000))
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer))
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()))
.disableCachingNullValues();
RedisCacheManager cacheManager = RedisCacheManager.builder(factory)
.cacheDefaults(config)
.build();
return cacheManager;
}
@Bean
public HashOperations<String, String, Object> hashOperations(RedisTemplate<String, Object> redisTemplate) {
return redisTemplate.opsForHash();
}
@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) {
return redisTemplate.opsForSet();
}
@Bean
public ZSetOperations<String, Object> zSetOperations(RedisTemplate<String, Object> redisTemplate) {
return redisTemplate.opsForZSet();
}
}
欢迎关注白羊🐏,感谢观看ヾ(◍°∇°◍)ノ゙