苍穹外卖开发日志Day06——Redis及店铺营业状态设置
苍穹外卖开发日志Day06——套餐管理
2025.07.23
一、Redis入门
1.1 Redis简介
- Redis是一个基于内存的key-value结构数据库
- Redis特点:
- 基于内存存储,读写性能高
- 适合存储热点数据(热点商品、资讯、新闻)
- 企业应用广泛
- 官网:https://redis.io/
- 中文网:https://www.redis.net.cn/
1.2 Redis下载与安装
- Redis安装包分为Windows和Linux版本
- 因为Redis是绿色软件,所以不需要安装,直接解压即可。
1.3 Redis配置与启动
- Redis配置文件:redis.windows.conf
- 可以修改配置文件中的选项来调整Redis的行为
- 常用配置选项包括:
bind:绑定IP地址,默认绑定到本地IPport:Redis服务端口,默认6379requirepass:设置访问密码
- 运行:
- 在安装目录下启动cmd,并输入redis-server.exe redis.windows.conf即可

- ctrl+C可以停止Redis服务
- 在安装目录下启动cmd,并输入redis-server.exe redis.windows.conf即可
- Redis默认没有密码,可以在redis.windows.conf中设置密码
- 修改配置文件中的requirepass选项,取消注释并设置密码

- 重启Redis服务后,使用redis-cli连接时需要输入密码,格式为
-a 密码

- 修改配置文件中的requirepass选项,取消注释并设置密码
- 连接到Redis:
- 方式一:在安装目录下启动cmd,并输入redis-cli.exe即可

- 方式二:使用图形化界面Another Redis Desktop Manager链接

- 方式一:在安装目录下启动cmd,并输入redis-cli.exe即可
二、Redis数据类型
2.1 Redis数据类型概述
- Redis支存储的是key-value结构的数据,其中key是字符串类型,value可以是多种数据类型:
- 字符串(string)
- 哈希(hash)
- 列表(list)
- 集合(set)
- 有序集合(sorted set/zset)
2.2 Redis数据类型特点

- 字符串(string):普通字符串,Redis中最简单的数据类型
- 哈希(hash):也叫散列,类似于Java中的HashMap结构,可以理解为(key-(key-vaue))对的集合
- 列表(list):按照插入顺序排序,可以有重复元素,类似于Java中的LinkedList
- 集合(set):无序且唯一的元素集合,类似于Java中的HashSet
- 有序集合(sorted set/zset):有序且唯一的元素集合,每个元素都有一个分数(score)来决定顺序,类似于Java中的TreeSet
三、Redis常用命令
3.1 Redis字符串命令
SET key value:设置key的值为valueGET key:获取key的值SETEX key seconds value:设置key的值为value,并设置过期时间为seconds秒SETNX key value:如果key不存在,则设置key的值为value
示例:
操作命令:

效果:



3.2 Redis哈希命令
Redis hash是一个string类型的field和value的映射表,适合存储对象数据,常用命令:
HSET key field value:设置哈希表key中的field的值为valueHGET key field:获取哈希表key中的field的值HDEL key field:删除哈希表key中的fieldHKEYS key:获取哈希表key中的所有fieldHVALS key:获取哈希表key中的所有value
示例:
操作命令:

效果:

3.3 Redis列表命令
Redis列表是简单的字符串列表,按照插入顺序排序,常用命令:
LPUSH key value1 [value2]:将一个或多个值插入到列表key的头部LRANGE key start stop:获取列表key中指定范围的元素RPOP key:移除并返回列表key的最后一个元素LLEN key:获取列表key的长度
示例:
操作命令:

效果:


3.4 Redis集合命令
Redis set是string类型的无序集合,集合成员是唯一的,集合中不能出现重复的数据,常用命令:
SADD key member1 [member2]:向集合key添加一个或多个成员SMEMBERS key:获取集合key中的所有成员SCARD key:获取集合key的成员数量SINTER key1 [key2]:返回给定所有集合的交集SUNION key1 [key2]:返回给定所有集合的并集SREM key member1 [member2]:移除集合key中的一个或多个成员
示例:
操作命令:

效果:



3.5 Redis有序集合命令
Redis sorted set是string类型的集合,且不允许有重复成员,每个元素都会关联一个double类型的分数,常用命令:
ZADD key score1 member1 [score2 member2]:向有序集合key添加一个或多个成员,分数为score1[score2]ZRANGE key start stop [WITHSCORES]:返回有序集合key中指定范围的成员,WITHSCORES选项可以返回成员的分数ZINCRBY key increment member:为有序集合key中的成员member的分数增加incrementZREM key member1 [member2]:移除有序集合key中的一个或多个成员
示例:
操作命令:

效果:



3.6 Redis通用命令
Redis的通用命令是不分数据类型的,常用命令:
KEYS pattern:查找所有符合给定模式(pattern)的keyEXISTS key:检查key是否存在TYPE key:返回key所储存的值的类型DEL key:删除key
示例:
操作命令:

四、在Java中操作Redis
4.1 Redis的Java客户端
Redis有多种Java客户端可供选择,常用的有:
- Jedis:最常用的Redis Java客户端,简单易用
- Lettuce:基于Netty的异步Redis客户端,支持响应式编程
- Spring Data Redis:Spring框架的Redis集成,提供了更高层次的抽象
4.2 Spring Data Redis使用方式
-
操作步骤
- 在pom.xml中导入Spring Data Redis的maven坐标
1
2
3
4
5
6
7
8
9
10
11
12
13
14<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
```
2. 在application.yml中配置Redis数据源
```yml
spring:
redis:
host: localhost
port: 6379
password: 123456
database: 0- 编写配置类,创建RedisTemplate对象
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class RedisConfiguration {
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
log.info("开始创建Redis模板对象...");
RedisTemplate redisTemplate = new RedisTemplate();
// 设置连接工厂对象
redisTemplate.setConnectionFactory(redisConnectionFactory);
// 设置key的序列化器
redisTemplate.setKeySerializer(new StringRedisSerializer());
return redisTemplate;
}
}- 通过RedisTemplate对象操作Redis
测试代码:
1 | package com.sky.test; |
五、店铺营业状态设置
5.1 业务需求
产品原型:

接口设计:
- 设置营业状态
- 管理端查询营业状态
- 用户端查询营业状态



本项目约定:
- 管理端发出的请求,统一使用
/admin前缀 - 用户端发出的请求,统一使用
/user前缀 - 营业状态数据存储方式:基于Redis的字符串来进行存储
- 约定:1表示营业,0表示打烊
5.2 代码实现
5.2.1 adminShopController
1 |
|
5.2.2 userShopController
1 |
|
5.3 功能测试



前后端联调测试:

