当前位置: 首页 > news >正文

苍穹外卖项目日记(day05)

苍穹外卖|项目日记(day05)

前言: 一口气把几天的代码都给完成了, 所以更新有点慢, 现在来补上.
在这里插入图片描述

今日收获:

1.redis的基本使用

2.在java和项目中使用

一. redis的基本使用

基本特性

  1. 内存存储:数据主要存储在内存中,提供极高的读写性能
  2. 持久化:支持 RDB(快照)和 AOF(追加日志)两种持久化方式
  3. 数据结构丰富:不仅仅是简单的键值存储,支持多种数据结构
  4. 单线程模型:采用单线程处理命令,避免锁竞争
  5. 高可用:通过 Redis Sentinel 和 Redis Cluster 支持高可用和分布式

支持的数据结构

  1. 字符串(Strings):最基本的数据类型,可以存储文本或二进制数据
  2. 哈希(Hashes):键值对的集合,适合存储对象
  3. 列表(Lists):有序的字符串集合,支持从两端插入/删除
  4. 集合(Sets):无序的唯一字符串集合
  5. 有序集合(Sorted Sets):带分数的集合,按分数排序

因使用方法大体相同, 就只展示字符串的基本使用

# Redis 字符串(String)基础命令速查## 1. 基本设置与获取
SET key value                  # 设置键值对
GET key                        # 获取键对应的值
GETSET key new_value           # 设置新值并返回旧值
MSET key1 val1 key2 val2       # 批量设置多个键值
MGET key1 key2                 # 批量获取多个键的值

二.在java和项目中使用

​ 在项目中, 将店铺的状态(是否营业的值)缓存在redis中, 原因: 营业中: 1, 休息中: 0. 为这么一个数据单独设置一张表太浪费了.

1.导入Spring Data Redis的maven坐标

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

2.配置Redis数据源

// 生成环境中
sky:redis:host: localhostport: 6379password: 123456database: 10
// 基础环境中
spring:profiles:active: devredis:host: ${sky.redis.host}port: ${sky.redis.port}password: ${sky.redis.password}database: ${sky.redis.database}

3.编写配置类,创建RedisTemplate对象

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.StringRedisSerializer;@Configuration
@Slf4j
public class RedisConfiguration {@Beanpublic RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){log.info("开始创建redis模板对象...");RedisTemplate redisTemplate = new RedisTemplate();//设置redis的连接工厂对象redisTemplate.setConnectionFactory(redisConnectionFactory);//设置redis key的序列化器redisTemplate.setKeySerializer(new StringRedisSerializer());return redisTemplate;}
}

4.通过RedisTemplate对象操作Redis

	/*** 操作字符串类型的数据*/@Testpublic void testString(){// set get setex setnxredisTemplate.opsForValue().set("name","小明");String city = (String) redisTemplate.opsForValue().get("name");System.out.println(city);redisTemplate.opsForValue().set("code","1234",3, TimeUnit.MINUTES);redisTemplate.opsForValue().setIfAbsent("lock","1");redisTemplate.opsForValue().setIfAbsent("lock","2");}

5.店铺营业状态设置

/*** 设置店铺的营业状态* @param status* @return*/@PutMapping("/{status}")@ApiOperation("设置店铺的营业状态")public Result setStatus(@PathVariable Integer status){log.info("设置店铺的营业状态为:{}",status == 1 ? "营业中" : "打烊中");redisTemplate.opsForValue().set(KEY,status);return Result.success();}
	/*** 获取店铺的营业状态* @return*/@GetMapping("/status")@ApiOperation("获取店铺的营业状态")public Result<Integer> getStatus(){Integer status = (Integer) redisTemplate.opsForValue().get(KEY);log.info("获取到店铺的营业状态为:{}",status == 1 ? "营业中" : "打烊中");return Result.success(status);}
http://www.lryc.cn/news/586155.html

相关文章:

  • UI前端大数据可视化实战策略分享:如何设计符合用户认知的数据可视化流程?
  • 以数据为核心,以业务为导向,漫谈数据可视化应用
  • 上门服务APP开发源码商业模式设计与功能架构解析
  • QCustomPlot绘制交互图
  • Django母婴商城项目实践(四)
  • JavaSE 01 类和对象|继承多态
  • Java_Springboot技术框架讲解部分(一)
  • 【C/C++】迈出编译第一步——预处理
  • HCL模拟器的正确开启(Win11不兼容HCL)
  • CVPR2025 Mamba系列
  • 【读书笔记】《C++ Software Design》第二章:The Art of Building Abstractions
  • 使用python 实现一个http server
  • Elasticsearch 线程池
  • MIG_IP核的时钟系统
  • 使用 Java 开发大数据应用:Hadoop 与 Java API 的结合
  • Linux中使用快捷方式加速SSH访问
  • 让 VSCode 调试器像 PyCharm 一样显示 Tensor Shape、变量形状、变量长度、维度信息
  • 细解muduo中的每个核心类
  • pytorch深度学习—RNN-循环神经网络
  • 关于wpf的自适应
  • vue2和vue3的响应式原理
  • Java中的内存溢出详解
  • 【Python练习】039. 编写一个函数,反转一个单链表
  • Linux系统使用Verdaccio搭建Npm私服
  • 初学者关于算法复杂度的学习笔记
  • python数据分析及可视化课程介绍(01)以及统计学的应用、介绍、分类、基本概念及描述性统计
  • 【Datawhale AI 夏令营】 用AI做带货视频评论分析(二)
  • 使用Java完成下面程序
  • 13. https 是绝对安全的吗
  • Spring AOP 是如何生效的(入口源码级解析)?