<!--导入自己的工具包--><!-- 连接redis --><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.9.0</version></dependency><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-redis</artifactId><version>2.1.5.RELEASE</version></dependency>
2)spring引入spring-redis
1.当系统启动时,调用业务类,把要缓存的数据从数据库中查询出来,一次性的存入redis中
2.运用程序再次访问缓存数据时,就不再查询数据库,而是直接访问redis。从而供应页面相应速率,减轻数据库的压力
1.1. 什么数据适宜放入redis缓存中
常常访问,但是不常常改变
1.2 创建初始化类package com.niuhaocheng.init;import com.niuhaocheng.pojo.Style;import com.niuhaocheng.service.MenuService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.stereotype.Component;import javax.annotation.PostConstruct;import java.util.List;/ @ClassName: @Description: @Author:bobo @Date:2021/12/15 9:26/@Componentpublic class InitStyle {@AutowiredMenuService menuService;@AutowiredRedisTemplate redisTemplate;@PostConstructpublic void iniStyle(){//从数据库中获取所有的菜系List<Style> style = menuService.getStyle();//存入redis中redisTemplate.opsForList().rightPushAll("STYLE_LIST",style);System.out.println("菜系数据已缓存到redis中。。。");}}
1.3 菜系从redis获取
@ResponseBody@RequestMapping("getStyle")public List<Style> getStyle(){//从redis 获取菜系return redisTemplate.opsForList().range("STYLE_LIST", 0, -1);}
2.案例二2.1.为什么要防止表单重复提交
在我们业务系统开拓过程中,当用户点击提交按钮提交表单时,正常情形下,后台吸收提交的内容,然后再进行增编削查等操作。但是,我们也得考虑非正常的情形,比如:前台提交内容后,由于网络颠簸或者后台逻辑处理较慢,而前台又没有做禁止点击提交按钮的掌握,难免涌现用户猖獗点击提交按钮的情形。这种情形就很有可能导致用户的数据多次提交、入库,产生脏数据、冗余数据等情形。
禁止重复提交的目的便是担保数据的准确性及安全性。
2.2 案例需求:
同一个页面数据,用户只能提交一次,多次提交,则认为重复提交;
利用ssm+redis实现防止重复提交功能
实现掌握设计:
2.3 controller-产生token
//进入增加页面 @RequestMapping("toAdd") public String toAdd(Model model){ UUID token = UUID.randomUUID();//产生token model.addAttribute("token",token);//存入model return "menu_add"; }
2.4 jsp
@RequestMapping("add") public String add(Menu menu,String token) throws InterruptedException { //判断token是否存在,如果是第一次,则能保存并返回true boolean b = redisTemplate.opsForValue().setIfAbsent(token, token, 1, TimeUnit.HOURS); if(b) {//有,则表示正常要求。实行业务 menuService.addMenu(menu); redisTemplate.opsForSet().remove("FORM_TOKEN",token);//删除token } return "redirect:list"; }