springboot 整合 Redis 方法二
方法一请参考之前博文 spring boot 整合 redis
自己的版本 java8 + redis3.0 + springboot 2.0.0
1 spring boot已经支持集成 redis,在 mvn 中只需添加依赖即可。pom 配置片段如下
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.RELEASE</version> </parent> <!-- 添加 redis 缓存支持 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
1.2 对 redis 进行配置,修改配置文件 application.properties
## Redis 配置 ## Redis数据库索引(默认为0) spring.redis.database=0 ## Redis服务器地址 spring.redis.host=127.0.0.1 ## Redis服务器连接端口 spring.redis.port=6379 ## Redis服务器连接密码(默认为空) spring.redis.password=
2.1 创建 RedisConfig 配置类
@Configuration public class RedisConfig { @Bean public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory redisConnectionFactory){ StringRedisTemplate redisTemplate = new StringRedisTemplate(redisConnectionFactory); Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); /** * 通用的序列化和反序列化设置 * ObjectMapper类是Jackson库的主要类。它提供一些功能将转换成Java对象匹配JSON结构,反之亦然。 */ ObjectMapper objectMapper = new ObjectMapper(); objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(objectMapper); redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); redisTemplate.afterPropertiesSet(); return redisTemplate; } }
2.2 创建 RedisService 泛型服务方法
@Service public class RedisService <T> { @Autowired private RedisTemplate redisTemplate; /** * 一天有多少分钟,默认时间是一天 */ private static final long MINUTES_OF_ONE_DAY = 24 * 60; /** * 将 key,value 存放到redis数据库中,默认设置过期时间为一天 * * @param key * @param value */ public void set(String key, T value) { set(key, value, MINUTES_OF_ONE_DAY); } /** * 将 key,value 存放到redis数据库中,设置过期时间单位是分钟 * * @param key * @param value * @param expireTime 单位是秒 */ public void set(String key, T value, long expireTime) { ValueOperations<String, T> valueOperations = redisTemplate.opsForValue(); valueOperations.set(key,value,expireTime,TimeUnit.MINUTES); } /** * 判断 key 是否在 redis 数据库中 * * @param key * @return */ public boolean exists(final String key) { return redisTemplate.hasKey(key); } /** * 获取 key 对应的字符串 * @param key * @return */ public T get(String key) { ValueOperations<String, T> valueOperations = redisTemplate.opsForValue(); return valueOperations.get(key); } /** * 获得 key 对应的键值,并更新缓存时间,时间长度为默认值 * @param key * @return */ public T getAndUpdateTime(String key) { T result = get(key); if (result != null) { set(key, result); } return result; } /** * 删除 key 对应的 value * @param key */ public void delete(String key) { redisTemplate.delete(key); } }
3 接下来就可以使用 RedisService 进行缓存使用了。需要开启Redis服务,并没有设置密码
学习过程中,难免出错。如果您在阅读过程中遇到不太明白,或者有疑问。欢迎指正...联系邮箱crazyCodeLove@163.com
如果觉得有用,想赞助一下请移步赞助页面:赞助一下
分类:
java web 基础知识
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)