IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 3. Redis(StringStreamListSetZsetHash) -> 正文阅读

[数据结构与算法]3. Redis(StringStreamListSetZsetHash)

在这里插入图片描述

常用五大数据类型

9大类型:String(字符类型)、Hash(散列类型)、List(列表类型)、Set(集合类型)、SortedSet(有序集合类型,简称zset)、Bitmap(位图)、HyperLogLog(统计)、GEO(地理)、Stream

Stream(了解即可)

  1. Redis Stream是 Redis 5.0 版本新增加的数据结构
  2. Redis Stream主要用于消息队列(MQ,Message Queue),Redis 本身是有一个 Redis 发布订阅 (pub/sub) 来实现消息队列的功能,但它有个缺点就是消息无法持久化,如果出现网络断开、Redis宕机等,消息就会被丢弃。简单来说发布订阅(pub/sub)可以分发消息,但无法记录历史消息
  3. 而Redis Stream 提供了消息的持久化和主备复制功能,可以让任何客户端访问任何时刻的数据,并且能记住每一个客户端的访问位置,还能保证消息不丢失。它算是redis自己消息功能的补充
  4. 但是,一般主流MQ都固定了(Kafka/RabbitMQ/RocketMQ/Pulsar),我们只用redis做缓存,不做mq消息的发送
  5. 命令不区分大小写,而key是区分大小写的

String

  1. String是Redis最基本的类型,一个key对应一个value。
  2. String类型是二进制安全的。意味着Redis的string可以包含任何数据。比如jpg图片或者序列化的对象
  3. String类型是Redis最基本的数据类型,一个Redis中字符串value最多可以是512M
    String的数据结构为简单动态字符串(Simple Dynamic String,缩写SDS)。是可以修改的字符串,内部结构实现上类似于Java的ArrayList
  4. 存储( set key value) 获取(get key) 删除(del key)

在这里插入图片描述

分布式锁
在这里插入图片描述

String应用场景

应用场景一: 比如抖音无限点赞某个视频或者商品,点一下加一次

应用场景二: 是否喜欢的文章(阅读数:只要点击了rest地址,直接可以使用incr key 命令增加一个数字1,完成记录数字)
在这里插入图片描述

列表 list

①. 列表list是一个单键多值的
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差
在这里插入图片描述
在这里插入图片描述

List的数据结构为快速链表quickList

  • 首先在列表元素较少的情况下会使用一块连续的内存存储,这个结构是ziplist,也即是压缩列表
  • 它将所有的元素紧挨着一起存储,分配的是一块连续的内存,当数据量比较多的时候才会改成quicklist
    在这里插入图片描述

list的场景–微信公众号订阅的消息

1 大V作者李永乐老师和CSDN发布了文章分别是 11 和 22
2 关注了他们两个,只要他们发布了新文章,就会安装进我的List
lpush likearticle:小智id 11 22
3 查看自己的号订阅的全部文章,类似分页,下面0~10就是一次显示10条
lrange likearticle:小智id 0 9
在这里插入图片描述

集合 Set

  • set是可以自动排重的,不允许元素重复
  • Set数据结构是dict字典,字典是用哈希表实现的
    在这里插入图片描述

应用场景一:微信抽奖小程序

在这里插入图片描述

应用场景二:微信朋友圈点赞

在这里插入图片描述

应用场景三:微博好友关注社交关系

共同关注的人
在这里插入图片描述
推可能认识的人
在这里插入图片描述

哈希 hash

Hash类型对应的数据结构是两种: ziplist(压缩列表),hashtable(哈希表)。当field-value长度较短且个数较少时,使用ziplist,否则使用hashtable (Map<String,Map<Object,Object>>)
在这里插入图片描述

应用场景:购物车模块

新增商品 → hset shopcar:uid1024 334488 1
新增商品 → hset shopcar:uid1024 334477 1
增加商品数量 → hincrby shopcar:uid1024 334477 1
商品总数 → hlen shopcar:uid1024
全部选择 → hgetall shopcar:uid1024

在这里插入图片描述

有序集合 Zset

Redis有序集合zset与普通集合set非常相似,是一个没有重复元素的字符串集合。不同之处是有序集合的每个成员都关联了一个评分(score),这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分可以是重复了
在这里插入图片描述

应用场景:实现一个文章访问量的排行榜

127.0.0.1:9736> zrange tops 0 -1 withscores 
1) "java"
2) "100"
3) "mysql"
4) "200"
127.0.0.1:9736> zrevrangebyscore tops   300 100 
1) "mysql"
2) "java"
127.0.0.1:9736> zrevrange tops 0 -1
1) "mysql"
2) "java"

应用场景:商品进行排序显示在这里插入图片描述

应用场景:抖音热搜

在这里插入图片描述

在这里插入图片描述

这里的值用了timestamp,实现了按照时间排序
在这里插入图片描述

持久化

  1. redis是一个内存数据库,当redis服务器重启,获取电脑重启,数据会丢失,我们可以将redis内存中的数据持久化保存到硬盘的文件中
    Redis持久化策略有哪些?(RDB、AOF)
    Rdb:定时将数据保存在硬盘中(dump.rdb)
    Aof:保存所有操作的命令
  2. RDB(持久化机制默认)
    默认方式,不需要进行配置,默认就使用这种机制
    在一定的间隔时间中,检测key的变化情况,然后持久化数据
    在这里插入图片描述

日志记录的方式,可以记录每一条命令的操作。可以每一次命令操作后,持久化数据
在这里插入图片描述

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-03-17 22:25:52  更:2022-03-17 22:29:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 12:01:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码