苍穹外卖day05——Redis(被病毒入侵)+店铺营业状态设置

Redis被病毒入侵了

 数据删光光然后只剩这四个玩意,乱下东西乱删东西,还好是docker部署,不然就寄了。

在服务器上部署redis记得一定要设置密码,不然被人扫肉鸡注入病毒整个服务器给你崩掉。

使用配置类的方式搭建相关程序

配置数据源:

规范的写法是通过引用的方式将东西都配置在另一个配置文件里面,将来涉及到分布式和微服务时,这个配置类就会放到nacos上了,然后项目启动都是从nacos里面取配置项了。

 被引用的配置文件。

 编写配置类:

新建一个配置类如下

@Configuration
@Slf4j
public class RedisConfiguration {@Bean  //需要注入一个工厂对象public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){log.info("开始创建redis模板对象");RedisTemplate redisTemplate = new RedisTemplate();//设置redis的连接工厂对象redisTemplate.setConnectionFactory(redisConnectionFactory);//设置Redis key的序列化器redisTemplate.setKeySerializer(new StringRedisSerializer());return redisTemplate;}
}

 操作String类型的数据

根据传进去的参数个数对应不同的Redis语句

 在这里不管传进去什么都会被转成String字符串存在Redis里面,所以这里虽说是传对象进去,但是也叫做字符串操作类型。

狗日的,连半天都连不上,原来是密码和服务器IP错了。

@SpringBootTest
public class SpringDataRedisTest {@Autowiredprivate RedisTemplate redisTemplate;@Testpublic void testRedisTemplate(){System.out.println(redisTemplate);redisTemplate.opsForValue().set("city","北京");}/*** 操作字符串类型的数据*/@Testpublic void testString(){//set get setex setnxredisTemplate.opsForValue().set("city","北京");String city = (String)redisTemplate.opsForValue().get("city");System.out.println(city);redisTemplate.opsForValue().set("code","666",3, TimeUnit.MINUTES);//设置3分钟过期redisTemplate.opsForValue().setIfAbsent("lock","1");//不存在才插入redisTemplate.opsForValue().setIfAbsent("lock","2");//插入失败}
}

执行testString后可以看见有如下数据,数据发生乱码。

 如果在序列器中不设置,就是使用默认的序列化器的话,key会如下

 然后虽然字符串存成了这种格式,但是在java代码中是可以在获取时自动转回来的。

无非就是对别的客户端不友好。

操作Hash类型的数据

    /*** 操作hash类型的数据*/@Testpublic void testHash(){//hset hget hdel hkeys hvalsHashOperations hashOperations = redisTemplate.opsForHash();hashOperations.put("100","name","tom");hashOperations.put("100","age","20");String name = (String)hashOperations.get("100", "name");System.out.println(name);//获取这个哈希数据下所有的keySet keys = hashOperations.keys("100");System.out.println(keys);//获取这个哈希数据下所有的valueList values = hashOperations.values("100");System.out.println(values);//删除这个哈希数据下的一个键值对hashOperations.delete("100","age");}

 输出如下

 操作其他类型的数据

 

 

 店铺营业状态设置——需求分析与设计

产品原型 

 接口设计

 

用户端的接口 

 

 数据库设计

使用Redis来存储,高射炮打蚊子,很符合的一句形容。

 店铺营业状态设置——代码开发

管理端相关代码

@RestController("adminShopController")
@Api("店铺相关接口")
@RequestMapping("/admin/shop")
@Slf4j
public class ShopController {public static final String KEY="SHOP_STATUS";@Autowiredprivate RedisTemplate redisTemplate;/*** 设置店铺营业状态为* @param status* @return*/@PutMapping("/{status}")@ApiOperation("设置店铺营业状态")public Result setStatus(@PathVariable Integer status){log.info("设置店铺营业状态为:{}",status==1?"营业中":"打样中");redisTemplate.opsForValue().set(KEY,status);return Result.success();}/*** 获取店铺营业状态* @return*/@GetMapping("/status")@ApiOperation("获取店铺营业状态")public Result<Integer> getStatus(){Integer status = (Integer)redisTemplate.opsForValue().get(KEY);log.info("获取到店铺营业状态为:{}",status==1?"营业中":"打样中");return null;}
}

用户端的相关代码

 

@RestController("userShopController")
@Api("店铺相关接口")
@RequestMapping("/user/shop")
@Slf4j
public class ShopController {public static final String KEY="SHOP_STATUS";@Autowiredprivate RedisTemplate redisTemplate;/*** 获取店铺营业状态* @return*/@GetMapping("/status")@ApiOperation("获取店铺营业状态")public Result<Integer> getStatus(){Integer status = (Integer)redisTemplate.opsForValue().get(KEY);log.info("获取到店铺营业状态为:{}",status==1?"营业中":"打样中");return null;}
}

 店铺营业状态设置——功能测试

Swagger接口文档测试

设置状态

 

 

前后端联调测试

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/7017.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

医生出国访问交流,为什么要趁早申请访问学者?

在当前国内&#xff0c;有这样一类医生群体&#xff0c;他们四十岁上下&#xff0c;就职于国内大型三甲医院&#xff0c;受过良好教育&#xff0c;事业辉煌&#xff0c;属于是别人眼中的精英阶层&#xff0c;然而&#xff0c;随着岁月的沉淀&#xff0c;副高级别医生群体的人生…

实现简单Spring基于XML的配置程序

定义一个容器&#xff0c;使用ConcurrentHashMap 做为单例对象的容器 先解析beans.xml得到第一个bean对象的信息&#xff0c;id&#xff0c;class&#xff0c;属性和属性值使用反射生成对象&#xff0c;并赋值将创建好的bean对象放入到singletonObjects集合中提供getBean(id)方…

Java实现根据商品ID获取1688商品详情数据方法

要通过1688的API获取商品详情数据&#xff0c;您可以使用1688开放平台提供的接口来实现。以下是一种使用Java编程语言实现的示例&#xff0c;展示如何通过1688开放平台API获取商品详情&#xff1a; 首先&#xff0c;确保您已注册成为1688开放平台的开发者&#xff0c;并创建一…

【Redis】剖析RDB和AOF持久化原理

文章目录 前言1、AOF日志1.1、概述1.2、日志文件1.3、写回策略1.4、策略实现原理1.5、重写机制1.6、AOF 后台重写1.6.1、介绍1.6.2、实现原理 1.7、优缺点 2、RDB快照2.1、概述2.2、实现方式2.3、实现原理2.4、极端情况2.5、优缺点 3、混合体实现4、大Key问题4.1、何为大key4.2…

profinet 调试记录

一、 树莓派运行codesys runtime 1. 用户名称要以 root 登录 若是普通用户&#xff0c;会提示&#xff1a;脚本必须以 root 身份运行 2. codesys报错&#xff1a; 在树莓派config.txt文件添加&#xff1a;arm_64bit0 3. 扫描设备需开启PLC 图标变红&#xff0c;则开启成…

【MATLAB第58期】基于MATLAB的PCA-Kmeans、PCA-LVQ与BP神经网络分类预测模型对比

【MATLAB第58期】基于MATLAB的PCA-Kmeans、PCA-LVQ与BP神经网络分类预测模型对比 一、数据介绍 基于UCI葡萄酒数据集进行葡萄酒分类及产地预测 共包含178组样本数据&#xff0c;来源于三个葡萄酒产地&#xff0c;每组数据包含产地标签及13种化学元素含量&#xff0c;即已知类…

Python组合模式介绍、使用方法

一、Python组合模式介绍 概念&#xff1a; 组合模式(Composite Pattern)是一种结构型设计模式&#xff0c;它通过将对象组合成树状结构来表示“整体/部分”层次结构&#xff0c;让客户端可以以相同的方式处理单个对象和组合对象。 功能&#xff1a; 统一对待组合对象和叶子对…

STM32H5开发(1)----总览

STM32H5开发----1.总览 概述样品申请STM32H5-2MB 框图产品列表STM32H5-2MB 框图STM32H5-128KB框图功能对比STM32H5-128KB vs H5-2MB组员对比STM32H5 亮点 概述 STM32H5系列微控制器是意法半导体公司推出的一款高性能MCU, CortexM33内核的微控制器产品。 他和STM32F2、F4、F7、…

论文精度系列之详解图神经网络

论文地址:A Gentle Introduction to Graph Neural Networks 翻译:图表就在我们身边;现实世界的对象通常根据它们与其他事物的连接来定义。一组对象以及它们之间的连接自然地表示为图形。十多年来&#xff0c;研究人员已经开发了对图数据进行操作的神经网络&#xff08;称为图神…

CentOS 7.9 安装 mydumper(RPM方式)

链接&#xff1a;https://pan.baidu.com/s/1sGhtiKPOmJw1xj0zv-djkA?pwdtaoz 码&#xff1a;taoz 开始正文啦&#xff1a; rpm -ivh mydumper-0.14.5-3-zstd.el7.x86_64.rpm 问题如下&#xff1a; 解决&#xff1a; yum -y install epel-release yum install -y libzstd …

python 小案例

要使用Django开发一个抽奖活动的后台&#xff0c;需要进行以下步骤&#xff1a; 安装Django&#xff1a;首先确保已经安装了Python和pip&#xff0c;然后使用pip安装Django库&#xff1a; pip install django 创建Django项目&#xff1a;在命令行中执行以下命令创建一个新的Dja…

zabbix安装Grafana

一、web访问 https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.6.1-1.x86_64.rpm [rootserver ~] yum localinstall -y grafana-4.6.1-1.x86_64.rpm //yum方式安装本地rpm并自动解决依赖关系 [rootserver ~] grafana-cli plugins install alexanderzob…

elementUI 表格滚动分页加载请求数据

需求&#xff1a;elementui Table表格滚动分页&#xff08;不使用分页组件&#xff09;&#xff0c;请求数据。 1、自定义加载更多数据的指令&#xff0c;在utils文件夹中创建 loadMore.js /*** 加载更多数据的指令*/ export default {install(Vue) {Vue.mixin({directives: …

利用 trait 实现多态

我在书上看到基于 std::io::Write 的示例&#xff0c;它是一个 trait 类型&#xff0c;内部声明了一些方法。和 go 语言不同&#xff0c;rust 中类型必须明确实现 trait 类型&#xff0c;而 go 语言属于 duck 模式。 std::io::Write下面的例子中调用 write_all 方式来演示&…

【SpringBoot】SpringBoot JPA 基础操作(CURD)

SpringData JPA 基本介绍 Spirng data jpa是spring提供的一套简化JPA开发的框架&#xff0c;按照约定好的【方法命名规则】写dao层接口&#xff0c;就可以在不写接口实现的情况下&#xff0c;实现对数据库的访问和操作。 同时提供了很多除了CRUD之外的功能&#xff0c;如分页…

国标GB28181视频监控平台EasyGBS无法播放,抓包返回ICMP的排查过程

国标GB28181视频平台EasyGBS是基于国标GB/T28181协议的行业内安防视频流媒体能力平台&#xff0c;可实现的视频功能包括&#xff1a;实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。国标GB28181视频监控平台部署简单、可拓展性强&#xff0c;支持将…

ZQC的游戏 题解

前言 这题题意描述不是很清楚啊&#xff0c;所以我找了个有权限的人把题面改了改&#xff0c;应该还是比较清楚了。 感觉这道题挺妙的&#xff0c;就来写一篇题解。 思路 首先&#xff0c;根据贪心思想&#xff0c;我们会将 1 1 1 号点半径以内能吃的都吃了&#xff0c;假…

【JavaScript】正则表达式常用元字符使用方法(实例)

目录 一、基本元字符1.\d2.\D3.\s4.\S5.\w6.\W7..8.\ 二、边界符1.^2.$3.用 ^ 和 $ 限制开头和结尾 三、限定符1.*2.3.&#xff1f;4.{n}5.{n,}6.{n,m} 四、特殊符号1.()2.|3.[] 五、exec()函数实例 一、基本元字符 1.\d //表示至少包含一位数字(0-9)var reg /\d/;console.lo…

1 请使用js、css、html技术实现以下页面,表格内容根据查询条件动态变化。

1.1 创建css文件&#xff0c;用于编辑style 注意&#xff1a; 1.背景颜色用ppt的取色器来获取&#xff1a; 先点击ppt的形状轮廓&#xff0c;然后点击取色器&#xff0c;吸颜色&#xff0c;然后再点击形状轮廓的其他轮廓颜色&#xff0c;即可获取到对应颜色。 2.表格间的灰色线…

【Spring Boot】Web开发 — 数据验证

Web开发 — 数据验证 对于应用系统而言&#xff0c;任何客户端传入的数据都不是绝对安全有效的&#xff0c;这就要求我们在服务端接收到数据时也对数据的有效性进行验证&#xff0c;以确保传入的数据安全正确。接下来介绍Spring Boot是如何实现数据验证的。 1.Hibernate Vali…