Spring Cache 集成 Redis 简单实现
来源:互联网 发布:淘宝企业店铺搜索 编辑:程序博客网 时间:2024/06/05 17:38
前言
上篇文章简单配置了如何使用Spring集成cacheManager,使用的实现是spring提供的SimpleCacheManager,但是在项目中往往不采用这种实现,而是采用Redis来做缓存管理,下面是如果用java的方式在spring cache集成redis。
- 先上需要引入的jar
<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.7.8.RELEASE</version> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>
2. 重点在与JedisConnectionFactory实现链接工厂方法,使用RedisCacheManager 实现具体的CacheManager
@Configuration@EnableCaching //开启缓存注解public class SpringCacheConfig { /** * 使用Redis管理缓存 * @param redisTemplate * @return RedisCacheManager */ @Bean public CacheManager cacheManager(RedisTemplate redisTemplate){ return new RedisCacheManager(redisTemplate); } @Bean public JedisConnectionFactory redisConnectionFactory(){ JedisConnectionFactory redisConnectionFactory = new JedisConnectionFactory(); redisConnectionFactory.setHostName("127.0.0.1");//redis 地址 redisConnectionFactory.setPort(6379);//端口 return redisConnectionFactory; } @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){ RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(redisConnectionFactory); redisTemplate.afterPropertiesSet(); return redisTemplate; }
RedisTemplate支持
熟悉Spring的JdbcTemplate对象的话,应该大概能猜出来RedisTemplate的作用了,RedisTemplate对象对RedisConnection进行了封装,它提供了连接管理,序列化等功能,它对Redis的交互进行了更高层次的抽象。另外还提供了Redis操作命令的操作视图,这极大的方便和简化了Redis的操作。
注意事项
1. 要缓存的 Java 对象必须实现 Serializable 接口,因为 Spring 会将对象先序列化再存入 Redis,比如本文中的 com.defonds.bdp.city.bean.City 类,如果不实现 Serializable 的话将会遇到类似这种错误:nested exception is java.lang.IllegalArgumentException: DefaultSerializer requires a Serializable payload but received an object of type [com.defonds.bdp.city.bean.City]]。
2.缓存的生命周期我们可以配置,然后托管 Spring CacheManager,不要试图通过 redis-cli 命令行去管理缓存。比如 provinceCities 方法的缓存,某个省份的查询结果会被以 key-value 的形式存放在 Redis,key 就是我们刚才自定义生成的 key,value 是序列化后的对象,这个 key 会被放在 key 名为 provinceCities~keys key-value 存储中,参考下图”provinceCities 方法在 Redis 中的缓存情况”。可以通过 redis-cli 使用 del 命令将 provinceCities~keys 删除,但每个省份的缓存却不会被清除。
3.CacheManager 必须设置缓存过期时间,否则缓存对象将永不过期,这样做的原因如上,避免一些野数据“永久保存”。此外,设置缓存过期时间也有助于资源利用最大化,因为缓存里保留的永远是热点数据。
4. 缓存适用于读多写少的场合,查询时缓存命中率很低、写操作很频繁等场景不适宜用缓存。
- Spring Cache 集成 Redis 简单实现
- Spring Cache集成redis
- Spring Cache集成redis
- redis与spring cache集成
- Spring-Boot (四) cache/ehcache/redis-cache集成使用
- Spring Cache集成spring默认缓存实现
- Spring集成Redis缓存实现
- redis-cluster和Spring集成,基于Cache注解
- Spring Cache+Redis实现自定义注解缓存
- Redis+Spring集成使用简单介绍
- spring集成redis及简单使用
- Spring Cache集成ehcache
- Spring Cache集成memcached
- Spring Boot集成cache
- Spring集成Redis实现缓存实践
- Spring Boot集成Redis实现缓存
- Spring Boot集成Redis实现缓存机制
- spring集成redis缓存的注解实现
- doFilter如何使用
- Java中堆与栈的关系
- jsp自定义标签
- jq_ajax 简单应用
- 【web漏洞百例】1.日志伪造、堆检查
- Spring Cache 集成 Redis 简单实现
- Handle与线程
- C#设计模式--单例(Singleton)
- 【摘录】写给程序员的数据挖掘技术
- tomcat启动服务后浏览器无法显示网页
- js常识
- hibernate 与 mybits 的区别
- Dagger2学习之路(Part 1)
- 病毒