Redis 基础 -- Redis数据类型(list、string、hash、set、sorted_set)、redis的key的设置约定

发布于:2023-01-09 ⋅ 阅读:(645) ⋅ 点赞:(0)

文章目录

1. Redis数据类型


1.1 业务数据的特殊性

作为缓存使用:

  1. 原始业务功能设计
    • 秒杀
    • 618活动
    • 双11活动
    • 排队购票
  2. 运营平台监控到的突发高频访问数据
    • 突发时政要闻,被强势关注围观
  3. 高频、复杂的统计数据
    • 在线人数
    • 投票排行榜

附加功能:

系统功能优化或升级

  • 单服务器升级集群
  • Session 管理
  • Token 管理

1.3 redis 数据存储格式

在这里插入图片描述


1.3 Redis 数据类型(5种常用)

在这里插入图片描述

在这里插入图片描述


2. string


2.1 string 类型

在这里插入图片描述


2.2 string 类型基本操作

基本操作01:

在这里插入图片描述

实操:

在这里插入图片描述

基本操作02:

在这里插入图片描述
append指令的返回值为当前操作原生的长度。

实操:

在这里插入图片描述


2.3 单指令操作与多指令操作的抉择!

你可能会有疑问,为什么同样的功能出现了2个指令,下面来说一下这2者的区别。
在这里插入图片描述

答疑时间:

在一次性操作大量数据的时候,适当分割数据量(mset,mget…)可以提升效率!
在这里插入图片描述


2.4 string类型数据的扩展操作:充当数值

业务场景:

在这里插入图片描述

解决方案:

在这里插入图片描述

string作为数值操作:

在这里插入图片描述


2.5 string类型数据的扩展操作:生命周期

业务场景:

在这里插入图片描述

解决方案:

在这里插入图片描述
在这里插入图片描述


2.6 string类型数据的扩展操作:高频访问信息

业务场景:

在这里插入图片描述

解决办法:

在这里插入图片描述
在这里插入图片描述


2.7 string类型数据操作的注意事项

在这里插入图片描述

redis数据库重新设置值会覆盖之前的值。


2.8 redis的key的设置约定

redis里面的数据大部分还是来源于其他关系型数据库
在这里插入图片描述

3. hash数据类型


3.1 hash类型简介

在这里插入图片描述


3.2 hash类型数据的基本操作

基本操作01:

在这里插入图片描述

示例:

在这里插入图片描述

基本操作02:

在这里插入图片描述

示例:

在这里插入图片描述


3.3 hash类型数据扩展操作

在这里插入图片描述

演示:

在这里插入图片描述


3.4 hash类型数据操作的注意事项

在这里插入图片描述


3.5 hash类型应用场景:电商网站购物车设计与实现(买家)

业务场景:

在这里插入图片描述

解决方案:

在这里插入图片描述
在这里插入图片描述

思考:上面的设计是否加速了购物车的呈现,错误!

在这里插入图片描述
hsetnx可以保证在原来字段有值得情况下不会去修改它,相当于在修改之前做了一次判断,提升了redis的性能。
在这里插入图片描述


3.7 hash类型应用场景:双11活动日(卖家)

业务场景:

在这里插入图片描述

解决方案:

在这里插入图片描述

在这里插入图片描述


3.8 redis原则

redis只负责数据的提供和保存,尽量不要把业务逻辑压到redis上面来,像判断值存不存在这种指令就应当谨慎使用,因为他已经带有业务逻辑的性质了。


3.9 string存储对象和hash存储对象对比

在这里插入图片描述

  • string存数据注重的是整体性,要么一次性更新,要么一次性获取。以读为主。
  • hash可以把属性隔离开,他讲究的是更新操作会比较灵活一些。更新操作会遍历一些。
  • 注意灵活运用(可以在hash里面存储string json格式)。

4. Redis数据类型之list


4.1 list类型介绍

在这里插入图片描述
在这里插入图片描述


4.2 list 类型数据基本操作

在这里插入图片描述

  • 如果你想按照push的顺序获取数据,那么你需要从push相反的方向去获取数据。

  • 索引这里,-1表示倒数第一个元素,-2表示倒数第二个元素,以此类推。

示例:

在这里插入图片描述


4.3 list 类型数据扩展操作:规定时间内获取并移除数据

b表示阻塞的意思:block
在这里插入图片描述

  • Redis Blpop 命令移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
  • Redis Brpop 命令移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
  • Redis Brpoplpush 命令从列表中取出最后一个元素,并插入到另外一个列表的头部; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

示例:

在这里插入图片描述
在这里插入图片描述


4.4 list 类型数据扩展操作:微信朋友圈点赞

业务场景:

在这里插入图片描述

解决方案:

在这里插入图片描述
在这里插入图片描述

示例:

在这里插入图片描述


4.5 list 类型数据操作注意事项

在这里插入图片描述


4.6 list 应用场景:list实现日志消息队列

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


4. Redis数据类型之set


4.1 set类型介绍

在这里插入图片描述
在这里插入图片描述


4.2 set类型基本操作

基本操作01:

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

示例:

在这里插入图片描述

基本操作02:

在这里插入图片描述

示例:

在这里插入图片描述


4.3 set 类型数据的扩展操作:获取随机的数据

应用场景:

在这里插入图片描述

为了增加用户的粘性,今日头条会给你推送热点消息。并且有2中推送策略:一是推送过的就不再推送了,二是推送过后依然会再次推送。

解决办法:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

示例:

在这里插入图片描述


4.4 set 类型数据的扩展操作:集合的交、并、差集

业务场景:

在这里插入图片描述
在这里插入图片描述

集合的交、并、差集说明:

在这里插入图片描述

解决方案:

在这里插入图片描述

在这里插入图片描述


4.4.1 sinter命令

在这里插入图片描述


4.4.2 sunion命令

在这里插入图片描述
在这里插入图片描述


4.4.3 sdiff命令

在这里插入图片描述
在这里插入图片描述


4.4.4 sinterstore命令

在这里插入图片描述


4.4.5 sunionstore命令

在这里插入图片描述
在这里插入图片描述


4.4.6 sdiffstore命令

在这里插入图片描述


4.4.7 smove命令

在这里插入图片描述
在这里插入图片描述


4.5 set类型注意事项

  • set类型不允许数据重复,如果添加的数据在set 中已经存在,将只保留一份。
  • set虽然与hash的存储结构相同,但是无法启用hash中存储值的空间。

4.6 set类型应用场景:权限校验

业务场景:

在这里插入图片描述

解决方案:

在这里插入图片描述


4.7 set类型应用场景:网站访问量统计

业务场景:

在这里插入图片描述

解决方案:

在这里插入图片描述


4.8 set类型应用场景:实现黑白名单

应用场景:

在这里插入图片描述

解决方案:

在这里插入图片描述


5. Redis数据类型之sorted_set


5.1 sorted_set类型介绍

在这里插入图片描述


5.2 sorted_set 类型数据的基本操作:添加、获取、删除

在这里插入图片描述


5.2.1 zadd命令

在这里插入图片描述
在这里插入图片描述


5.2.2 zrange命令 和 zrevrange命令

在这里插入图片描述
zrevrange命令和zrange命令类型,只是他是逆序(大到小)展示。

示例:

在这里插入图片描述


5.2.3 zrem命令

在这里插入图片描述

示例:

在这里插入图片描述


5.3 sorted_set 类型数据的基本操作:条件获取数据和删除数据

在这里插入图片描述

示例:

在这里插入图片描述


5.5 redis索引和操作元素说明

redis里面的操作跟java有一点不同,java在操作这些数据的时候常常是[start,end),操作元素不包括end。但是redis里面是[start,end],包含satrt和end。


5.6 sorted_set 类型数据的基本操作:集合相关操作

在这里插入图片描述


5.6.1 zcard命令

在这里插入图片描述


5.6.2 zcount命令

在这里插入图片描述


5.6.3 zinterstore命令

在这里插入图片描述

示例:

在这里插入图片描述
在这里插入图片描述


5.6.4 zunionstore命令

在这里插入图片描述

示例:

在这里插入图片描述


5.7 sorted_set扩展操作:排名

业务场景:

在这里插入图片描述

解决方案:

在这里插入图片描述


5.7.1 zrank命令

在这里插入图片描述


5.7.2 zrevrank命令

在这里插入图片描述


5.7.3 zscore命令:取score

在这里插入图片描述


5.7.4 zincrby命令:先更新score再取score

在这里插入图片描述


5.8 sorted_set 类型数据操作的注意事项

  • score保存的数据存储空间是64位,如果是整数范围是-9007199254740992~9007199254740992
  • score保存的数据也可以是一个双精度的double值,基于双精度浮点数的特征,可能会丢失精度,使用时候要慎重。
  • sorted_set底层存储还是基于set结构的,因此数据不能重复,如果重复添加相同的数据,score值将被反复覆盖,保留最后一次修改的结果

5.9 sorted_set应用场景:管理过期信息

业务场景:

在这里插入图片描述

解决方案:

在这里插入图片描述


5.9.1 redis time命令

在这里插入图片描述


5.10 sorted_set应用场景:带有权重的消息队列

业务场景:

在这里插入图片描述

解决方案:

在这里插入图片描述



本文含有隐藏内容,请 开通VIP 后查看