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

相关文章

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三

Redis中Set结构使用过程与原理说明

《Redis中Set结构使用过程与原理说明》本文解析了RedisSet数据结构,涵盖其基本操作(如添加、查找)、集合运算(交并差)、底层实现(intset与hashtable自动切换机制)、典型应用场... 目录开篇:从购物车到Redis Set一、Redis Set的基本操作1.1 编程常用命令1.2 集

Redis中的有序集合zset从使用到原理分析

《Redis中的有序集合zset从使用到原理分析》Redis有序集合(zset)是字符串与分值的有序映射,通过跳跃表和哈希表结合实现高效有序性管理,适用于排行榜、延迟队列等场景,其时间复杂度低,内存占... 目录开篇:排行榜背后的秘密一、zset的基本使用1.1 常用命令1.2 Java客户端示例二、zse

Redis中的AOF原理及分析

《Redis中的AOF原理及分析》Redis的AOF通过记录所有写操作命令实现持久化,支持always/everysec/no三种同步策略,重写机制优化文件体积,与RDB结合可平衡数据安全与恢复效率... 目录开篇:从日记本到AOF一、AOF的基本执行流程1. 命令执行与记录2. AOF重写机制二、AOF的

MySQL中C接口的实现

《MySQL中C接口的实现》本节内容介绍使用C/C++访问数据库,包括对数据库的增删查改操作,主要是学习一些接口的调用,具有一定的参考价值,感兴趣的可以了解一下... 目录准备mysql库使用mysql库编译文件官方API文档对象的创建和关闭链接数据库下达sql指令select语句前言:本节内容介绍使用C/

Java发送SNMP至交换机获取交换机状态实现方式

《Java发送SNMP至交换机获取交换机状态实现方式》文章介绍使用SNMP4J库(2.7.0)通过RCF1213-MIB协议获取交换机单/多路状态,需开启SNMP支持,重点对比SNMPv1、v2c、v... 目录交换机协议SNMP库获取交换机单路状态获取交换机多路状态总结交换机协议这里使用的交换机协议为常

Redis高性能Key-Value存储与缓存利器常见解决方案

《Redis高性能Key-Value存储与缓存利器常见解决方案》Redis是高性能内存Key-Value存储系统,支持丰富数据类型与持久化方案(RDB/AOF),本文给大家介绍Redis高性能Key-... 目录Redis:高性能Key-Value存储与缓存利器什么是Redis?为什么选择Redis?Red

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

Redis 的 SUBSCRIBE命令详解

《Redis的SUBSCRIBE命令详解》Redis的SUBSCRIBE命令用于订阅一个或多个频道,以便接收发送到这些频道的消息,本文给大家介绍Redis的SUBSCRIBE命令,感兴趣的朋友跟随... 目录基本语法工作原理示例消息格式相关命令python 示例Redis 的 SUBSCRIBE 命令用于订