苍穹外卖项目第五天

今天课不多,然后下午体育课直接润,待在寝室写代码,这一周的课都不多,所以这一周加上清明节,就准备完成苍穹外卖这个项目

今日收获

1.完成了菜品修改的接口

2.简单了解并学习了redis基本操作

首先我们要知道redis也是一个数据库,那它和我们所知道的MySQL数据库有什么区别呢?

1.数据模型

redis数据库:它是一个基于内存的key——value结构数据库。适合存储热点数据(热点商品,资讯,新闻)。

mysql数据库:它是一个关系型表结构的数据库。

2.存储机制

  • Redis

    • 内存优先:数据默认存储在内存中,读写速度极快(微秒级响应)。

    • 持久化可选:支持快照(RDB)和日志追加(AOF)两种持久化方式,但持久化是次要目标。

  • MySQL

    • 磁盘存储:数据以文件形式持久化到磁盘,保证数据安全。

    • 事务日志:通过 Redo Log、Undo Log 等机制确保数据一致性和持久性。

3.性能特点

  • Redis

    • 超高吞吐量:适合高并发、低延迟场景(如缓存、计数器、实时排行榜)。

    • 单线程模型:避免锁竞争,但复杂操作可能阻塞其他请求。

  • MySQL

    • 适合复杂查询:支持 SQL 语法、多表 JOIN、聚合函数等,但复杂查询可能较慢(毫秒级响应)。

    • 事务支持:通过 ACID 特性保证数据一致性,适合需要强一致性的场景(如支付、订单)。

简而言之:Redis的读写效率高,适合存储热点数据,而MySQL的读写效率低但是存储能力好,适合存储普遍数据。

4.Redis的数据类型和常用命令

1.五种常用数据类型

redis存储的是key——value结构的数据,其中key是字符串类型,value有五种常用数据类型

1. String(字符串)

  • 存储结构:二进制安全的字符串,可存储文本、数字、二进制数据(如图片、序列化对象)。

  • 常用命令

    • SET key value(设置值)

    • GET key(获取值)

    • INCR key(原子递增)

    • APPEND key value(追加字符串)


2. Hash(哈希表)

  • 存储结构:键值对的集合,类似编程语言中的 Map 或 字典

  • 常用命令

    • HSET key field value(设置字段值)

    • HGET key field(获取字段值)

    • HGETALL key(获取所有字段和值)

    • HDEL key field(删除字段)


3. List(列表)

  • 存储结构:双向链表,支持在头部或尾部快速插入/删除元素。

  • 常用命令

    • LPUSH key value(头部插入)

    • RPUSH key value(尾部插入)

    • LPOP key(头部弹出)

    • LRANGE key start end(范围查询)


4. Set(集合)

  • 存储结构:无序且元素唯一的集合,支持交并差运算。

  • 常用命令

    • SADD key member(添加元素)

    • SMEMBERS key(获取所有元素)

    • SINTER key1 key2(求交集)

    • SISMEMBER key member(判断元素是否存在)


5. Sorted Set(有序集合)

  • 存储结构:元素唯一且按 score(分值)排序的集合,类似排行榜。

  • 常用命令

    • ZADD key score member(添加元素及分值)

    • ZRANGE key start end [WITHSCORES](按分值升序查询)

    • ZREVRANGE key start end(按分值降序查询)

    • ZRANK key member(获取排名)

在操作redis数据库的时候它和mysql一样不区分操作语句大小写

3.在java中操作redis数据库

Spring Data Redis

它是spring的一部分,对redis的底层开发包进行了高度封装,在spring项目中,可以使用它来简化操作。

操作步骤

1.导入maven坐标

2.配置Redis数据源

3.编写配置类

4.通过RedisTemplate操作数据库

连接工厂setConnectionFactory

  • 连接 Redis 的基础设施
    Redis 操作需要与 Redis 服务器建立网络连接,RedisConnectionFactory 是 Spring Data Redis 中创建和管理这些连接的核心组件。
    如果不设置连接工厂,RedisTemplate 不知道如何连接到 Redis 服务器(如地址、端口、密码等)。

设置键序列化器setKeySerializer

Redis 本身只接受二进制数据,因此需要将 Java 对象序列化为字节流才能存储。
如果不设置序列化器,Spring 会使用默认的 JdkSerializationRedisSerializer,但这种方式可能导致以下问题:

  • 键的可读性差:默认序列化器会在键前添加类信息(如 \xac\xed\x00\x05t\x00\x04user)。

  • 兼容性问题:不同 JVM 环境可能导致反序列化失败。

  • 存储冗余:默认序列化器生成的字节流较大。

4.完成了店铺状态的接口

5.随笔

我对我的要求就是每天都有收获就行,然后今天课上背了单词,明天就是四月份,然后买的题也快到了,就要开始刷题了,软考的话,就等四月份报名了在说,因为上学期我其实学过,但是没学完还剩了一点,虽然现在可能已经忘了,但是内容并不难,所以可以报名后在规划,我考软考就是因为下学期可以少修一门课,然后下学期大三了,我不准备呆在学校混日子了,还是要找个日常实习要是现在是大一就好了,哈哈哈我大一在玩的时候其实就对自己说过,以后要是感觉没时间了肯定会后悔,其实我也说不上后悔,就要是我大一每天学一点就好了,别纯玩,当然这些都是没意义的想法,种一棵树最好是十年前,其次就是现在,继续加油吧小菜!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值