当前位置: 首页 > 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.dtcms.com/a/276188.html

相关文章:

  • JavaScript加强篇——第六章 定时器(延时函数)与JS执行机制
  • matplotlib:散点图
  • CCF CSP第一轮认证一本通
  • 【Fargo】发送一个rtp包的过程3:为什么媒体包发送端检测到扩展,接收端检测不到
  • Rail开发日志_7
  • 9.3 快速调用与标准调用
  • 串口连接工控机
  • Gameplay - 独立游戏Celeste的Player源码
  • 失败的面试经历二(ʘ̥∧ʘ̥)
  • 【赵渝强老师】国产数据库TiDB的代理路由:TiProxy
  • K3S滚动发布Jar
  • TCP详解——各标志位
  • 字母异位词分组
  • 闲庭信步使用图像验证平台加速FPGA的开发:第十一课——图像均值滤波的FPGA实现
  • 家用智能摄像机PRV文件删除的恢复方法
  • 牛客网50题
  • word转pdf、pdf转word在线工具分享
  • C#调用Matlab生成的DLL
  • C#枚举:从基础到高级的全方位解析
  • NLP分词notes
  • 用一张“冰裂纹”石墨烯薄膜,让被动散热也能做 AI 推理——基于亚波长裂纹等离激元的零功耗温度-逻辑门
  • 深度学习图像分类数据集—铜片划痕识别分类
  • 创客匠人:解析创始人 IP 打造对知识变现的深层赋能
  • position: fixed和sticky的区别
  • 子数组最大平均数 I
  • Dataset类代码实战
  • 【LeetCode 热题 100】25. K 个一组翻转链表——迭代+哨兵
  • Spring AOP 是如何生效的(入口源码级解析)?
  • SpringBootloggers未授权访问漏洞处理
  • Flink创建执行环境的三种方式,也是Flink搭建程序的第一步