Springboot简单整合redis
2020-07-15 06:18
232 查看
这里使用的redisTemplate直接连接redis,没有使用lettuce
1.导入依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
2.进行配置
这里配置redis地址,端口,密码等信息
spring: redis: password: port: 6379 host: localhost
springboot的自动配置类会自动获取相关配置信息并存入到配置信息的类中,从源码中可以看到,已经自动配置了<object,object>和<string,string>类型的redisTemplate,但是多数使用<string,obeject>类型的redisTemplate,可以自己写一个配置类,注册一个string,object类型的进入容器
Redis的自动配置类
自己的配置类
在网上看了很多json序列化都是用的jackson的序列化工具,然后发现阿里的fastjson也自带一个redis的序列器,而且不用配置objectmapper,相当好用
@Configuration public class RedisConfig { @Bean public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){ RedisTemplate<String, Object> template=new RedisTemplate<>(); template.setConnectionFactory(redisConnectionFactory); //json序列化器 FastJsonRedisSerializer<Object> fastJsonRedisSerializer=new FastJsonRedisSerializer<Object>(Object.class); //设置key序列化方式 template.setKeySerializer(new StringRedisSerializer()); //设置hash的key序列化方式 template.setHashKeySerializer(new StringRedisSerializer()); //设置value的序列化方式 template.setValueSerializer(fastJsonRedisSerializer); //设置hash的value的序列化方式 template.setHashValueSerializer(fastJsonRedisSerializer); return template; } }
3.在业务层进行使用
使用redis对从数据库中查询的用户数据进行缓存,其中加入了线程锁,防止缓存中没有数据时,高并发的情况下,大量请求从数据库查找数据,造成缓存击穿
@Override public List<SysUser> selectAllUser() { //使用redis获取数据 List<SysUser> users = (List<SysUser>) redisTemplate.opsForValue().get("allUser"); //对键进行字符串序列化 redisTemplate.setKeySerializer(redisSerializer); //双重检测锁 if (users==null) { lock.lock(); try { users = (List<SysUser>) redisTemplate.opsForValue().get("allUser"); if (users == null) { users = userMapper.selectAllUser(); redisTemplate.opsForValue().set("allUser", users); } } catch (Exception e) { e.printStackTrace(); } finally { lock.unlock(); } } return users; }
并且,在插入,删除,更新数据的时候一定要同步更新缓存,不然会读取到旧数据
相关文章推荐
- 实现简单秒杀抢购,使用SpringBoot整合Spring-data-redis 、 rabbitMQ消息队列、redis缓存
- Redis使用(二):SpringBoot整合Redis 配置文件及项目种简单应用
- SpringBoot 整合 Redis 的简单案例
- SpringBoot简单整合redis 单机版
- 【spring boot】SpringBoot初学(8)– 简单整合redis
- SpringBoot2.X 整合RedisTemplate 简单实现消息队列
- SpringBoot整合Redis实现一套CRUD的简单缓存
- Spring Boot整合集成StringRedisTemplate的简单记录
- springboot 简单查询 整合redis
- SpringBoot整合redis简单实现
- Java爬虫初体验:简单抓取IT之家热评(整合Spring Boot+Elasticsearch+Redis+Mybatis)
- SpringBoot整合redis简单例子
- spring boot进阶(一) springboot整合redis,可操作java对象。最完整、简单易懂、详细的spring boot教程。
- SpringBoot 简单的整合redis+mybatis
- SpringBoot 整合 Redis 的简单案例
- springboot与redis的简单整合实例
- 简单的秒杀商品实现,SpringBoot整合redis和RabbitMQ学习笔记
- SpringBoot整合redis集群并使用StringRedisTemplate和RedisTemplate简单操作Redis集群
- SpringBoot快速整合Redis及Redis工具类撰写
- Springboot整合redis集群相关配置详解