【苍穹外卖】Day 5 Redis、店铺营业状态接口

2024-09-04 05:20

本文主要是介绍【苍穹外卖】Day 5 Redis、店铺营业状态接口,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 基本介绍

Redis是一个基于 内存 的 key-value 结构数据库

  • 基于内存存储,读写性能高
  • 适合存储热点数据(热点商品、资讯、新闻)
  • 企业应用广泛

运行

在cmd下

redis-server.exe redis.windows.conf

启动状态下,再

redis-cli.exe

测试:

也可以

redis-cli.exe -h localhost -p 6379

在配置文件设置密码

(4位密码不行)

改为6位

然后

发现已经需要密码

需要

简化:安装管理客户端(但是需要先启动redis)

2 常用命令

2.1 数据类型

Redis 存储的是 key-value 结构的数据,其中 key 是 字符串类型,value 有 5 种常用的数据类型:

  • 字符串 string
  • 哈希 hash
  • 列表 list
  • 集合 set
  • 有序集合 sorted set/zset


2.1 字符串 操作命令

  • SET key value     设置指定 key 的值
  • GET key     获取指定 key 的值
  • SETEX key seconds value     设置指定 key 的值,并将 key 的过期时间设为 seconds 比                                                  如存储验证码(存在 5 min)
  • SETNX key value     只有在 key 不存在时设置 key 的值

NX:No eXist

2.2 哈希 操作命令

Redis hash 是一个 string 类型的 field 和 value 的映射表

用来存储 对象

  • HSET key field value      将哈希表 key 中的字段 field 的值设为 value
  • HGET key field     获取存储在哈希表中指定字段的值
  • HDEL key field     删除存储在哈希表中的指定字段
  • HKEYS key     获取哈希表中所有字段
  • HVALS key     获取哈希表中所有值

存储员工对象

2.3 列表 操作命令

Redis 列表是简单的字符串列表,按照插入顺序排序

  • LPUSH key value1 [value2]     将一个或多个值插入到列表 头部
  • LRANGE key start stop     获取列表指定范围内的元素
  • RPOP key     移除并获取列表最后一个元素
  • LLEN key     获取列表长度

2.4 集合 操作命令

Redis set 是 string 类型的无序集合。集合成员是唯一的,集合中不能出现重复的数据

  • SADD key member1 [member2]     向集合添加一个或多个成员
  • SMEMBERS key     返回集合中的所有成员
  • SCARD key     获取集合的成员数

Cardinality 基数

  • SINTER key1 [key2]     返回给定所有集合的 交集

Intersection 交接(点或线),相交;交汇点(尤指道路);(动作)交接,交叉

  • SUNION key1 [key2]     返回给定所有集合的 并集
  • SREM key member1 [member2]     删除集合中一个或多个成员

2.5 有序集合 操作命令

        Redis 有序集合是 string 类型元素的集合,且不允许有重复成员。每个元素都会关联一个 double 类型的 分数

  • ZADD key score1 member1 [score2 member2]     向有序集合添加一个或多个成员
  • ZRANGE key start stop [WITHSCORES]     通过索引区间返回有序集合中指定区间内的成员
  • ZINCRBY key increment member     有序集合中对指定成员的分数加上增量 increment

increment 增量

  • ZREM key member [member...]     移除有序集合中的一个或多个成员

2.6 通用命令

  • KEYS pattern     查找所有符合给定模式(pattern)的 key

模式字符串可以包含以下特殊字符:

  • *:匹配任意数量的任意字符
  • ?:匹配任意单个字符
  • [...]:匹配方括号内的任意单个字符(范围)

例如,要查找所有以 "user:" 开头的键,可以使用以下命令:

KEYS user:*
  • EXISTS key     检查给定 key 是否存在
  • TYPE key     返回 key 所储存的值的类型
  • DEL key     该命令用于在 key 存在时删除 key

3 在 Java 中操作 Redis

Redis 的 Java 客户端很多,常用的几种:

  • Jedis
  • Lettuce
  • Spring Data Redis

Spring Data Redis 使用方式

第一步 引入 Maven 依赖

pom.xml

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

第二步 配置 Redis 数据源

application.yml

当前在 0 号数据库(DB)

默认是 0,可以不配置

spring:redis:host: localhostport: 6379password: 123456database: 0

第三步 编写配置类,创建 RedisTemplate 对象

Template 模板

        序列化器(Serializer)是一个将对象转换为某种特定格式的过程,以便能够将对象存储或传输的工具。相应的,反序列化器(Deserializer)则是将这种特定格式的数据重新转换为对象的过程。序列化器和反序列化器在分布式系统、网络通信、持久化存储等领域非常常见,特别是在像 Redis 这样的内存数据库中

RedisConnectionFactory 是用于创建 Redis 连接的工厂,它抽象了连接 Redis 服务器的细节

第四步 通过 RedisTemplate 对象操作 Redis

3.1 测试

3.2 字符串数据

3.3 哈希数据

在配置类设置一下序列化器

3.4 列表数据

3.5 集合数据

3.6 有序集合数据

3.7 通用命令

4 店铺营业状态设置

4.1 设计

设置营业状态 接口

管理端查询营业状态 接口

用户端查询营业状态 接口

Path:/user/shop/status

Method:GET

对于“营业状态”这个值,使用 redis 进行存储

KEY VALUE
SHOP_STATUS 1 

4.2 实现

直接使用 redis

用户端

为了防止Bean冲突,在注解 @RestController 后面加上别名

(在 客户端 和 用户端 都要加)

4.3 测试

 这里,在配置类下,不要对value进行string的序列化,否则会报错

package com.sky.config;import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;@Configuration
@Slf4j
public class RedisConfiguration {@Beanpublic RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {log.info("开始创建redis模板类");
//        RedisTemplate redisTemplate = new RedisTemplate();
//        redisTemplate.setConnectionFactory(redisConnectionFactory);
//redisTemplate.setKeySerializer(new StringRedisSerializer());
//
//        return redisTemplate;RedisTemplate redisTemplate = new RedisTemplate<>();redisTemplate.setConnectionFactory(redisConnectionFactory);// 设置Key的序列化器为StringredisTemplate.setKeySerializer(new StringRedisSerializer());// 设置Value的序列化器为StringredisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
//        // 设置Hash Key的序列化器为String
//        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
//
//        // 设置Hash Value的序列化器为String
//        redisTemplate.setHashValueSerializer(new StringRedisSerializer());return redisTemplate;}
}

5 修改一下 knife4j 接口文档

改为:

 注意包名

/*** 通过 knife4j 生成接口文档** @return*/@Beanpublic Docket docket1() {ApiInfo apiInfo = new ApiInfoBuilder().title("苍穹外卖项目接口文档").version("2.0").description("苍穹外卖项目接口文档").build();Docket docket = new Docket(DocumentationType.SWAGGER_2).groupName("管理端接口").apiInfo(apiInfo).select().apis(RequestHandlerSelectors.basePackage("com.sky.controller.admin")).paths(PathSelectors.any()).build();return docket;}public Docket docket2() {ApiInfo apiInfo = new ApiInfoBuilder().title("苍穹外卖项目接口文档").version("2.0").description("苍穹外卖项目接口文档").build();Docket docket = new Docket(DocumentationType.SWAGGER_2).groupName("用户端接口").apiInfo(apiInfo).select().apis(RequestHandlerSelectors.basePackage("com.sky.controller.user")).paths(PathSelectors.any()).build();return docket;}

这篇关于【苍穹外卖】Day 5 Redis、店铺营业状态接口的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1135107

相关文章

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

Java controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

Redis 热 key 和大 key 问题小结

《Redis热key和大key问题小结》:本文主要介绍Redis热key和大key问题小结,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、什么是 Redis 热 key?热 key(Hot Key)定义: 热 key 常见表现:热 key 的风险:二、

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

Redis Pipeline(管道) 详解

《RedisPipeline(管道)详解》Pipeline管道是Redis提供的一种批量执行命令的机制,通过将多个命令一次性发送到服务器并统一接收响应,减少网络往返次数(RTT),显著提升执行效率... 目录Redis Pipeline 详解1. Pipeline 的核心概念2. 工作原理与性能提升3. 核

redis过期key的删除策略介绍

《redis过期key的删除策略介绍》:本文主要介绍redis过期key的删除策略,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录第一种策略:被动删除第二种策略:定期删除第三种策略:强制删除关于big key的清理UNLINK命令FLUSHALL/FLUSHDB命

usb接口驱动异常问题常用解决方案

《usb接口驱动异常问题常用解决方案》当遇到USB接口驱动异常时,可以通过多种方法来解决,其中主要就包括重装USB控制器、禁用USB选择性暂停设置、更新或安装新的主板驱动等... usb接口驱动异常怎么办,USB接口驱动异常是常见问题,通常由驱动损坏、系统更新冲突、硬件故障或电源管理设置导致。以下是常用解决

Redis消息队列实现异步秒杀功能

《Redis消息队列实现异步秒杀功能》在高并发场景下,为了提高秒杀业务的性能,可将部分工作交给Redis处理,并通过异步方式执行,Redis提供了多种数据结构来实现消息队列,总结三种,本文详细介绍Re... 目录1 Redis消息队列1.1 List 结构1.2 Pub/Sub 模式1.3 Stream 结

SpringBoot中配置Redis连接池的完整指南

《SpringBoot中配置Redis连接池的完整指南》这篇文章主要为大家详细介绍了SpringBoot中配置Redis连接池的完整指南,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以... 目录一、添加依赖二、配置 Redis 连接池三、测试 Redis 操作四、完整示例代码(一)pom.