【苍穹外卖】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

相关文章

Spring Boot基于 JWT 优化 Spring Security 无状态登录实战指南

《SpringBoot基于JWT优化SpringSecurity无状态登录实战指南》本文介绍如何使用JWT优化SpringSecurity实现无状态登录,提高接口安全性,并通过实际操作步骤... 目录Spring Boot 实战:基于 JWT 优化 Spring Security 无状态登录一、先搞懂:为什

requests处理token鉴权接口和jsonpath使用方式

《requests处理token鉴权接口和jsonpath使用方式》文章介绍了如何使用requests库进行token鉴权接口的处理,包括登录提取token并保存,还详述了如何使用jsonpath表达... 目录requests处理token鉴权接口和jsonpath使用json数据提取工具总结reques

Redis 命令详解与实战案例

《Redis命令详解与实战案例》本文详细介绍了Redis的基础知识、核心数据结构与命令、高级功能与命令、最佳实践与性能优化,以及实战应用场景,通过实战案例,展示了如何使用Redis构建高性能应用系统... 目录Redis 命令详解与实战案例一、Redis 基础介绍二、Redis 核心数据结构与命令1. 字符

python调用dubbo接口的实现步骤

《python调用dubbo接口的实现步骤》本文主要介绍了python调用dubbo接口的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编... 目录 ​​其他实现方式与注意事项​​ ​​高级技巧与集成​​用 python 提供 Dubbo 接口

SpringBoot18 redis的配置方法

《SpringBoot18redis的配置方法》本文介绍在SpringBoot项目中集成和使用Redis的方法,包括添加依赖、配置文件、自定义序列化方式、使用方式、实际使用示例、常见操作总结以及注意... 目录一、Spring Boot 中使用 Redis1. 添加依赖2. 配置文件3. Redis 配置类

Redis中群集三种模式的实现

《Redis中群集三种模式的实现》Redis群集有三种模式,分别是主从同步/复制、哨兵模式、Cluster,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1. Redis三种模式概述2、Redis 主从复制2.1 主从复制的作用2.2 主从复制流程2

Java中接口和抽象类的异同以及具体的使用场景

《Java中接口和抽象类的异同以及具体的使用场景》文章主要介绍了Java中接口(Interface)和抽象类(AbstractClass)的区别和联系,包括相同点和不同点,以及它们在实际开发中的具体使... 目录一、接口和抽象类的 “相同点”二、接口和抽象类的 “核心区别”关键区别详解(避免踩坑)三、具体使

Redis的安全机制详细介绍及配置方法

《Redis的安全机制详细介绍及配置方法》本文介绍Redis安全机制的配置方法,包括绑定IP地址、设置密码、保护模式、禁用危险命令、防火墙限制、TLS加密、客户端连接限制、最大内存使用和日志审计等,通... 目录1. 绑定 IP 地址2. 设置密码3. 保护模式4. 禁用危险命令5. 通过防火墙限制访问6.

深入理解Redis线程模型的原理及使用

《深入理解Redis线程模型的原理及使用》Redis的线程模型整体还是多线程的,只是后台执行指令的核心线程是单线程的,整个线程模型可以理解为还是以单线程为主,基于这种单线程为主的线程模型,不同客户端的... 目录1 Redis是单线程www.chinasem.cn还是多线程2 Redis如何保证指令原子性2.

Docker + Redis 部署集群的实现步骤

《Docker+Redis部署集群的实现步骤》本文详细介绍了在三台服务器上部署高可用Redis集群的完整流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录一、环境准备1. 服务器规划(3 台服务器)2. 防火墙配置(三台服务器均执行)3. 安装 docke