*–记录自己学习过程,一直想写属于自己的博客,却迟迟没有行动,今天终于开始了。。。 –*技术比较菜,小白一枚
本文是基于mybatis数据库已经实现查询等功能后,使用redis作为缓存数据库
1.引入maven依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>2.配置application.yml文件,或者使用application.properties配置文件也是可以的
spring: redis: # Redis数据库索引(默认为 0) database: 0 # Redis服务器地址 host: 127.0.0.1 # Redis服务器连接端口 port: 6379 # Redis 密码 password:3.修改serviceImp文件,以查询所有书籍为例
@Service("bookService") public class BookServiceImpl implements BookService { @Resource private BookDao bookDao; @Autowired private RedisTemplate<Object,Object> redisTemplate; /** * 查询所有书籍 * @return 返回书籍列表 */ @Override public List<Book> queryList() { //redis序列化,序列化能够使java的对象在传输和存储的过程中,能够成功的传输和读取 //不实现序列化的话,存储的key字段会出现很多未识别字符 RedisSerializer redisSerializer = new StringRedisSerializer(); redisTemplate.setKeySerializer(redisSerializer); //获取key所对应的值,并放入list中 List<Book> list = (List<Book>) redisTemplate.opsForValue().get("allbook"); //第一次查询时,redis肯定为空,从数据库获取 if(list == null){ list = bookDao.queryList(); //将获取的值放入redis,key设置为allbook,value为获取的list redisTemplate.opsForValue().set("allbook",list); System.out.println("查询mysql数据库"); } //不是第一次查询,则直接从redis获取 System.out.println("查询redis数据库"); return list; }使用redis缓存实体信息的时候,实体必须序列化 也就是让实体类继承Serializable public class Book implements Serializable { }
若不序列化,获取的key会无法识别 序列化后的数据 控制台打印输出结果,第一次查询数据库,后面就直接查询redis,redis作为缓存数据库