<!--导入自己的工具包--><!-- 连接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.案例一

1.当系统启动时,调用业务类,把要缓存的数据从数据库中查询出来,一次性的存入redis中

2.运用程序再次访问缓存数据时,就不再查询数据库,而是直接访问redis。
从而供应页面相应速率,减轻数据库的压力

jsp页面访问redisRedis的两种应用场景案例 JavaScript

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

2.5 controller-校验token

@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"; }