一、首先,启动Redis
二、新建一个Springboot项目
勾选常用的依赖,然后点击Finish
三、在配置文件application.properties中添加redis和Myssql连接配置
四、在测试类中添加下面的代码:
@SpringBootTest class RedisDemoApplicationTests { @Autowired private RedisTemplate redisTemplate; @Test void contextLoads() { redisTemplate.opsForValue().set("testKey","testValue"); System.out.println(redisTemplate.opsForValue().get("testKey")); } }
五、运行测试方法,就会在控制台输出:
上面我们往Redis里面存放了一个字符串,下面我们看看如何从数据库中查询一个对象放到Redis中。
一、在MySQL中新建一个表,并添加测试数据。
二、Redis工具包类
@Component public class RedisUtils { @Resource RedisTemplate redisTemplate; //key-value是对象的 //判断是否存在key public boolean hasKey(String key){ return redisTemplate.hasKey(key); } //从redis中获取值 public Object get(String key){ return redisTemplate.opsForValue().get(key); } //向redis插入值 public boolean set(final String key,Object value){ boolean result = false; try{ redisTemplate.opsForValue().set(key,value); result = true; } catch (Exception e){ e.printStackTrace(); } return result; } }
三、vo类ProductType
productrType需要实现序列化的接口Serializable
public class ProductType implements Serializable { private Integer id; private String title; private Integer sort; private Boolean enable; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public Integer getSort() { return sort; } public void setSort(Integer sort) { this.sort = sort; } public Boolean getEnable() { return enable; } public void setEnable(Boolean enable) { this.enable = enable; } }
四、ProductTypeMapper类
使用注解的方法操作数据库
@Mapper public interface ProductTypeMapper { @Select("select * from product_type where id=#{id}") ProductType findById(int id); }
五、service包
ProductTypeService接口:
public interface ProductTypeService { ProductType findById(int id); }
接口实现类 ProductTypeServiceImpl:
第一次从数据库查询数据,查询出来之后就放到Redis,后面查询都从Redis查询。减少数据库访问的压力。
@Service public class ProductTypeServiceImpl implements ProductTypeService { @Resource private ProductTypeMapper productTypeMapper; @Resource private RedisUtils redisUtils; @Override public ProductType findById(int id) { ProductType productType; String key="productType"+id; if(redisUtils.hasKey(key)){ productType=(ProductType) redisUtils.get(key); System.out.println("查询的是缓存"); } else{ productType=productTypeMapper.findById(id); redisUtils.set(key,productType); System.out.println("查询的是数据库"); } return productType; } }
六、控制器 ProductTypeController
@RestController @RequestMapping("/productType") public class ProductTypeController { @Resource private ProductTypeService productTypeService; @RequestMapping("get/{id}") public ProductType get(@PathVariable("id") Integer id){ ProductType productType=productTypeService.findById(id); return productType; } }
启动运行,可以发现,第一次查询的是数据库,后面查询的都是缓存
0条评论
点击登录参与评论