package com.answer.config;
import java.lang.reflect.Method;
import java.time.Duration;
import java.util.HashMap;
import java.util.Map;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.interceptor.KeyGenerator;
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.cache.RedisCacheWriter;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
/**
* <p>redis缓存配置</p>
* Created by zhezhiyong@163.com on 2017/9/21.
*/
@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport {
@Bean
public KeyGenerator KeyGenerator() {
return new KeyGenerator() {
@Override
public Object generate(Object target, Method method, Object... params) {
StringBuilder sb = new StringBuilder();
sb.append(target.getClass().getName());
sb.append(method.getName());
for (Object obj : params) {
sb.append(obj.toString());
}
return sb.toString();
}
};
}
/* @Bean
public CacheManager cacheManager(RedisTemplate redisTemplate) {
RedisCacheManager manager = new RedisCacheManager(redisTemplate);
manager.setUsePrefix(true);
RedisCachePrefix cachePrefix = new RedisPrefix("prefix");
manager.setCachePrefix(cachePrefix);
// 整体缓存过期时间
manager.setDefaultExpiration(3600L);
// 设置缓存过期时间。key和缓存过期时间,单位秒
Map<String, Long> expiresMap = new HashMap<>();
expiresMap.put("user", 1000L);
manager.setExpires(expiresMap);
return manager;
}*/
@Bean
CacheManager cacheManager(RedisConnectionFactory connectionFactory) {
//user信息缓存配置
//RedisCacheConfiguration userCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofMinutes(30)).disableCachingNullValues().prefixKeysWith("user");
//product信息缓存配置
// RedisCacheConfiguration productCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofMinutes(10)).disableCachingNullValues().prefixKeysWith("product");
// Map<String, RedisCacheConfiguration> redisCacheConfigurationMap = new HashMap<>();
// redisCacheConfigurationMap.put("user", userCacheConfiguration);
///redisCacheConfigurationMap.put("product", productCacheConfiguration);
//初始化一个RedisCacheWriter
RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(connectionFactory);
//设置CacheManager的值序列化方式为JdkSerializationRedisSerializer,但其实RedisCacheConfiguration默认就是使用StringRedisSerializer序列化key,JdkSerializationRedisSerializer序列化value,所以以下注释代码为默认实现
//ClassLoader loader = this.getClass().getClassLoader();
//JdkSerializationRedisSerializer jdkSerializer = new JdkSerializationRedisSerializer(loader);
//RedisSerializationContext.SerializationPair<Object> pair = RedisSerializationContext.SerializationPair.fromSerializer(jdkSerializer);
//RedisCacheConfiguration defaultCacheConfig=RedisCacheConfiguration.defaultCacheConfig().serializeValuesWith(pair);
RedisCacheConfiguration defaultCacheConfig = RedisCacheConfiguration.defaultCacheConfig();
//设置默认超过期时间是30秒
defaultCacheConfig.entryTtl(Duration.ofSeconds(30));
//初始化RedisCacheManager
RedisCacheManager cacheManager = new RedisCacheManager(redisCacheWriter, defaultCacheConfig);
return cacheManager;
}
@Bean
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {
StringRedisTemplate template = new StringRedisTemplate(factory);
Jackson2JsonRedisSerializer 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;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Springboot 2.X中Spring-cache与redis整合
共55个文件
class:11个
java:10个
properties:6个
4星 · 超过85%的资源 需积分: 36 149 下载量 156 浏览量
2018-04-02
16:21:19
上传
评论 2
收藏 133KB ZIP 举报
温馨提示
Springboot中Spring-cache与redis整合。这也是一个不错的框架,与spring的事务使用类似,只要添加一些注解方法,就可以动态的去操作缓存了,减少代码的操作。
资源推荐
资源详情
资源评论
收起资源包目录
SpringBoot-Redis-cache.zip (55个子文件)
SpringBoot-Redis-cache
king-cache
.gitignore 261B
.mvn
wrapper
maven-wrapper.jar 46KB
maven-wrapper.properties 110B
src
main
resources
application.yml 282B
java
com
answer
KingCacheApplication.java 325B
config
RedisConfig.java 5KB
test
java
com
answer
KingCacheApplicationTests.java 330B
.classpath 1KB
mvnw 6KB
.settings
org.eclipse.wst.common.project.facet.core.xml 145B
org.eclipse.m2e.core.prefs 97B
org.eclipse.core.resources.prefs 155B
org.eclipse.jdt.core.prefs 243B
pom.xml 2KB
mvnw.cmd 5KB
target
classes
META-INF
MANIFEST.MF 320B
maven
com.answer
king-cache
pom.properties 235B
pom.xml 2KB
com
answer
KingCacheApplication.class 706B
config
RedisConfig.class 4KB
RedisConfig$1.class 1KB
application.yml 282B
test-classes
com
answer
KingCacheApplicationTests.class 625B
.project 1KB
king-cache-1
.gitignore 261B
.mvn
wrapper
maven-wrapper.jar 46KB
maven-wrapper.properties 110B
src
main
resources
application.properties 0B
java
com
answer
KingCache1Application.java 310B
entity
Info.java 795B
User.java 848B
service
UserService.java 358B
impl
UserServiceImpl.java 3KB
web
IndexController.java 2KB
test
java
com
answer
KingCache1ApplicationTests.java 331B
.classpath 1KB
mvnw 6KB
.settings
org.eclipse.wst.common.project.facet.core.xml 145B
org.eclipse.m2e.core.prefs 97B
org.eclipse.core.resources.prefs 155B
org.eclipse.jdt.core.prefs 243B
pom.xml 2KB
mvnw.cmd 5KB
target
classes
META-INF
MANIFEST.MF 324B
maven
com.answer
king-cache-1
pom.properties 241B
pom.xml 2KB
com
answer
entity
User.class 1KB
Info.class 894B
service
UserService.class 419B
impl
UserServiceImpl.class 3KB
web
IndexController.class 2KB
KingCache1Application.class 709B
application.properties 0B
test-classes
com
answer
KingCache1ApplicationTests.class 628B
.project 1KB
共 55 条
- 1
资源评论
- liulu54682021-06-16下载不下来,浪费心情
- 苦涩20142020-12-07参考参考,自己搭配了
- as8859212018-04-12对我有帮助,有用
果壳中de宇宙
- 粉丝: 39
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功