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

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

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

SpringSecurity JWT基于令牌的无状态认证实现

《SpringSecurityJWT基于令牌的无状态认证实现》SpringSecurity中实现基于JWT的无状态认证是一种常见的做法,本文就来介绍一下SpringSecurityJWT基于令牌的无... 目录引言一、JWT基本原理与结构二、Spring Security JWT依赖配置三、JWT令牌生成与

Redis在windows环境下如何启动

《Redis在windows环境下如何启动》:本文主要介绍Redis在windows环境下如何启动的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis在Windows环境下启动1.在redis的安装目录下2.输入·redis-server.exe

Redis实现延迟任务的三种方法详解

《Redis实现延迟任务的三种方法详解》延迟任务(DelayedTask)是指在未来的某个时间点,执行相应的任务,本文为大家整理了三种常见的实现方法,感兴趣的小伙伴可以参考一下... 目录1.前言2.Redis如何实现延迟任务3.代码实现3.1. 过期键通知事件实现3.2. 使用ZSet实现延迟任务3.3

Redis分片集群的实现

《Redis分片集群的实现》Redis分片集群是一种将Redis数据库分散到多个节点上的方式,以提供更高的性能和可伸缩性,本文主要介绍了Redis分片集群的实现,具有一定的参考价值,感兴趣的可以了解一... 目录1. Redis Cluster的核心概念哈希槽(Hash Slots)主从复制与故障转移2.

关于WebSocket协议状态码解析

《关于WebSocket协议状态码解析》:本文主要介绍关于WebSocket协议状态码的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录WebSocket协议状态码解析1. 引言2. WebSocket协议状态码概述3. WebSocket协议状态码详解3

go中空接口的具体使用

《go中空接口的具体使用》空接口是一种特殊的接口类型,它不包含任何方法,本文主要介绍了go中空接口的具体使用,具有一定的参考价值,感兴趣的可以了解一下... 目录接口-空接口1. 什么是空接口?2. 如何使用空接口?第一,第二,第三,3. 空接口几个要注意的坑坑1:坑2:坑3:接口-空接口1. 什么是空接

Redis 中的热点键和数据倾斜示例详解

《Redis中的热点键和数据倾斜示例详解》热点键是指在Redis中被频繁访问的特定键,这些键由于其高访问频率,可能导致Redis服务器的性能问题,尤其是在高并发场景下,本文给大家介绍Redis中的热... 目录Redis 中的热点键和数据倾斜热点键(Hot Key)定义特点应对策略示例数据倾斜(Data S

redis+lua实现分布式限流的示例

《redis+lua实现分布式限流的示例》本文主要介绍了redis+lua实现分布式限流的示例,可以实现复杂的限流逻辑,如滑动窗口限流,并且避免了多步操作导致的并发问题,具有一定的参考价值,感兴趣的可... 目录为什么使用Redis+Lua实现分布式限流使用ZSET也可以实现限流,为什么选择lua的方式实现