springboot+redis:
pom文件:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
我的逻辑是在进入home页面自动请求需要加载的数据:
controller:
services:
传输的实体类:
z注意:因为productvo是传输对象(涉及面向对象编程的思想与各个对象各司其职的考虑,所以pojo不能用于传输,封装了一个vo传输实体类),所以需要实现序列化接口:
key也会被序列化,导致可读性差(如图):
z这是service代码:
package com.per.mybootall.service.impl;
import com.google.gson.Gson;
import com.per.mybootall.dao.ProductMapper;
import com.per.mybootall.pojo.Product;
import com.per.mybootall.service.HomeLoadInter;
import com.per.mybootall.vo.ProductVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service
public class HomeLoadimpl implements HomeLoadInter {
@Autowired
private ProductMapper productmapper;
@Autowired
private ProductVO proVO;
@Autowired
private RedisTemplate<Object,Object> redisTemplate;
@Override
public List<ProductVO> selectProductMessage(){
//字符串的序列化器
RedisSerializer redisSerializer=new StringRedisSerializer();
redisTemplate.setKeySerializer(redisSerializer);
List<ProductVO> list=new ArrayList<ProductVO>();
List<ProductVO> listredis= (List<ProductVO>)redisTemplate.opsForValue().get("HomeLoadMassage");
if(null==listredis){
System.out.println("缓存咩有的时候:"+listredis);
for(long i=1;i<2;i++){
Product pro= productmapper.selectByPrimaryKey(i);
proVO.setName(pro.getName());
proVO.setSubtitle(pro.getSubtitle());
proVO.setMainImage(pro.getMainImage());
proVO.setSubImage(pro.getSubImage());
proVO.setPrick(pro.getPrick());
proVO.setStock(pro.getStock());
list.add(proVO);
}
redisTemplate.opsForValue().set("HomeLoadMassage",list);
}
System.out.println("缓存查询有的时候:"+listredis);
System.out.println("home页面加载的数据:"+list.toString());
return list;
}
}
dao层实现:
页面请求验证:
第一次拿值均为null,第二次则拿到了相应的值:
t同时key的值也不会被序列化而导致可读性贼差:
ok,纪录完成,有不明白的可以留言问我