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

Redis数据结构

 Redis 支持的数据结构的列表


1、String:字符串,是 Redis 最基本的数据类型,可以存储字符串、整数和浮点数。
2、Hash:哈希表,由多个键值对组成,可以储存多个字段和值。
3、List:列表,是由多个字符串组成的有序集合,可以进行插入、删除和查找等操作。
4、Set:集合,是由多个字符串组成的无序集合,支持集合的交、并、差等操作。
5、Sorted Set:有序集合,与 Set 类似,但是每个元素有一个分数,可以根据分数进行排序。
6、Bitmaps:位图,可以用来表示某个对象的状态,例如某个用户是否在线等。
7、HyperLogLog:基数统计算法,用于统计一个集合中不重复元素的个数。

String类型的基本命令


Redis 的 String 类型是最常用的数据类型之一,它可以存储字符串、整数和浮点数等类型的数据。下面是 Redis 中 String 类型支持的常用命令:

SET:设置指定键的值,可以设置过期时间。
GET:获取指定键的值。
MSET:同时设置多个键值对。
MGET:同时获取多个键的值。
INCR:将指定键的值加一,如果值不存在,则将其设置为1。
INCRBY:将指定键的值加上指定的整数。
DECR:将指定键的值减一,如果值不存在,则将其设置为-1。
DECRBY:将指定键的值减去指定的整数。
APPEND:将指定的字符串追加到指定键的值的末尾。
STRLEN:获取指定键的值的长度。
GETRANGE:获取指定键的值的子字符串。
SETRANGE:将指定键的值的指定位置替换为指定字符串。
SETNX:只有在指定键不存在时,才设置指定键的值。
GETSET:设置指定键的值,并返回其原来的值。
SETEX:设置指定键的值,并指定过期时间。
PSETEX:设置指定键的值,并指定过期时间(毫秒级别)。
SETBIT:设置指定键的值的指定位的值。
GETBIT:获取指定键的值的指定位的值。
BITCOUNT:统计指定键的值的二进制中为1的位数。
BITOP:对多个键的值进行位运算。

String类型的实际应用
1、缓存:2、计数器3、分布式锁4、会话管理 5、消息队列


Hash类型的基本命令


Hash类型的基本命令如下,可以实现对哈希表中字段的增删改查操作

HSET:设置指定字段的值。语法:HSET key field value
HGET:获取指定字段的值。语法:HGET key field
HMSET:同时设置多个字段的值。语法:HMSET key field1 value1 [field2 value2 ...]
HMGET:同时获取多个字段的值。语法:HMGET key field1 [field2 ...]
HGETALL:获取指定哈希表中所有字段和值。语法:HGETALL key
HDEL:删除指定字段。语法:HDEL key field1 [field2 ...]
HEXISTS:判断指定字段是否存在。语法:HEXISTS key field
HINCRBY:对指定字段进行加法操作。语法:HINCRBY key field increment
HKEYS:获取指定哈希表中所有字段名。语法:HKEYS key
HLEN:获取指定哈希表中字段的数量。语法:HLEN key
HSETNX:设置指定字段的值,如果字段不存在。语法:HSETNX key field value
HVALS:获取指定哈希表中所有字段的值。语法:HVALS key


Hash型的实际应用
1、客户信息,2、统计分析,3、缓存存储 4、分布式锁 5 购物车


List类型的基本命令


List类型是Redis中常用的数据类型之一,提供了一组用于处理列表数据结构的命令。以下是List类型的基本命令

LPUSH:在列表头部插入一个或多个元素。
RPUSH:在列表尾部插入一个或多个元素。
LPOP:移除并返回列表头部的元素。
RPOP:移除并返回列表尾部的元素。
LINDEX:返回列表中指定下标的元素。
LLEN:返回列表的长度。
LRANGE:返回列表中指定区间的元素。
LINSERT:在列表中指定元素之前或之后插入新元素。
LREM:移除列表中指定数量的元素。
LSET:设置列表中指定下标的元素值。
BLPOP:阻塞式地移除并返回列表头部的元素,直到有元素可供移除为止。
BRPOP:阻塞式地移除并返回列表尾部的元素,直到有元素可供移除为止。
RPOPLPUSH:移除并返回列表尾部的元素,并将其添加到另一个列表头部。

List类型的实际应用
List类型可以用于各种不同的场景,因为它是一个非常灵活和高效的数据结构。
1、消息队列 2、最新消息列表 3、记录日志 4、排行榜 5、历史记录

Set类型的基本命令


Set类型的基本命令,这些命令可以实现对集合的添加、删除、查询等操作

SADD:将一个或多个成员添加到集合中
SREM:从集合中移除一个或多个成员
SMEMBERS:返回集合中的所有成员
SISMEMBER:判断一个成员是否是集合的成员
SCARD:获取集合的成员数
SPOP:随机移除并返回集合中的一个成员
SRANDMEMBER:随机获取集合中一个或多个成员
SMOVE:将一个成员从一个集合移动到另一个集合
SUNION:返回多个集合的并集
SUNIONSTORE:将多个集合的并集存储到一个新集合中
SINTER:返回多个集合的交集
SINTERSTORE:将多个集合的交集存储到一个新集合中
SDIFF:返回多个集合的差集
SDIFFSTORE:将多个集合的差集存储到一个新集合中

Set型的实际应用
1、用户标签系统 2、推荐系统 3、去重 4、访问控制 5、数据分析

Sorted类型的基本命令


Sorted Set类型的基本命令,这些命令可以实现对有序集合的添加、删除、查询、排序等操作

ZADD:将一个或多个成员及其分值添加到有序集合中
ZREM:从有序集合中移除一个或多个成员
ZRANGE:按照分值从小到大顺序返回指定区间内的成员
ZREVRANGE:按照分值从大到小顺序返回指定区间内的成员
ZRANK:返回一个成员在有序集合中的排名,排名以0为底
ZREVRANK:返回一个成员在有序集合中的排名,排名以0为底,按照分值从大到小排序
ZRANGEBYSCORE:按照分值范围返回指定区间内的成员
ZCARD:获取有序集合的成员数
ZSCORE:返回一个成员在有序集合中的分值
ZINCRBY:将指定成员的分值增加一个给定的增量
ZCOUNT:统计有序集合分值在指定范围内的成员数量
ZLEXCOUNT:统计有序集合中字典序在指定范围内的成员数量
ZRANGEBYLEX:返回有序集合中字典序在指定范围内的成员
ZREMRANGEBYRANK:移除有序集合中排名在指定范围内的成员
ZREMRANGEBYSCORE:移除有序集合中分值在指定范围内的成员
ZREMRANGEBYLEX:移除有序集合中字典序在指定范围内的成员
ZINTERSTORE:对多个有序集合进行交集计算,并将结果存储在一个新的有序集合中
ZUNIONSTORE:对多个有序集合进行并集计算,并将结果存储在一个新的有序集合中


Sorted型的实际应用
Sorted Set是一种有序的集合数据结构,其中每个成员都有一个关联的分数(score),根据这个分数可以对成员进行排序。Sorted Set的成员是唯一的,但分数(score)可以重复
1、排行榜 2、时间轴 3、队列

相关文章:

Redis数据结构

Redis 支持的数据结构的列表 1、String:字符串,是 Redis 最基本的数据类型,可以存储字符串、整数和浮点数。 2、Hash:哈希表,由多个键值对组成,可以储存多个字段和值。 3、List:列表&#xff0c…...

解密Redis:应对面试中的缓存相关问题

文章目录 1. 缓存穿透问题及解决方案2. 缓存击穿问题及解决方案3. 缓存雪崩问题及解决方案4. Redis的数据持久化5. Redis的过期删除策略和数据淘汰策略6. Redis分布式锁和主从同步7. Redis集群方案8. Redis的数据一致性保障和高可用性方案 导语: 在面试过程中&#…...

读取application-dev.properties的中文乱码【bug】

读取application-dev.properties的中文编码【bug】 2023-7-30 22:37:46 版权 禁止其他平台发布时删除以下此话 本文首次发布于CSDN平台 作者是CSDN日星月云 博客主页是https://blog.csdn.net/qq_51625007 禁止其他平台发布时删除以上此话 bug 读取application-dev.propert…...

Linux(centos7)如何实现配置iscsi存储多路径 及DM-Multipath的配置文件概述

安装多路径软件(系统默认安装) #第一:安装多路径软件yum -y install device-mapper device-mapper-multipath#第二:在CentOS7中启用多路径模块,mpathconf命令及相关模块加载(可以使用mpathconf -h查看用法&…...

DK7 vs JDK8 vs JDK11特性和功能的对比

JDK7 vs JDK8 vs JDK11特性和功能的对比 Java Development Kit (JDK) 是 Java 程序员所使用的开发工具包,它提供了编译、调试和运行 Java 程序所需的一切。JDK 在不同的版本中引入了许多新的特性和功能,下面我们来比较 JDK7、JDK8 和 JDK11 之间的一些重…...

你觉得企业为什么需要数据分析?

数据对于企业的作用就好比,一位士兵作战需要手枪一样,仅仅只是作为一项工具,帮助我们提高取得胜利的几率或者概率。数据只是数据,不代表业务,所起的作用也是有限的,网上那些夸大数据作用的,没有…...

SVN学习

SVN学习 以下总结是看了一个b站up主的视频总结出来的。 1. 简介 SVN是代码版本管理工具,它能记住每次的修改、查看所有修改记录、恢复到任何历史版本和恢复已经删除的文件。 SVN比起Git的好处就是使用简单,上手快;具备目录级权限控制&…...

vim怎么使用,vim使用教程,vimtutor怎么切换中文 汉化

vim 使用 在安装了 vim 的 unix 系统下可以使用 vimtutor zh_cn 开启下面的教程 序言 欢 迎 阅 读 《 V I M 教 程 》 —— 版本 1.7 Vim 是一个具有很多命令的功能非常强大的编辑器。限于篇幅,在本教程当中就不详细介绍了。本教程的…...

[golang gin框架] 43.Gin商城项目-微服务实战之后台Rbac微服务之管理员的增删改查以及管理员和角色关联

上一节讲解了后台Rbac微服务角色增删改查微服务,这里讲解权限管理Rbac微服务管理员的增删改查微服务以及管理员和角色关联微服务功能 一.实现后台权限管理Rbac之管理员增删改查微服务服务端功能 1.创建Manager模型 要实现管理员的增删改查,就需要创建对应的模型,故在server/r…...

2023-07-31力扣每日一题

链接: 143. 重排链表 题意: 将链表L0 → L1 → … → Ln - 1 → Ln变成L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … 解: 线性表法还是好写的 这边搞一下翻转法,快慢指针求翻转点(翻转后面一半然后双指针合并…...

接口自动化报告,生成本地服务并自动打开时失败

错误原因: 端口号被占用 首先可以在cmd中调出命令窗口然后执行命令netstat -ano就可以查看所有活动的链接,找到被占用的端口号 1、通过命令taskkill /f /t /im "进程名称" ,根据进程的名称杀掉所有的进程。或者taskkill /f /t /p…...

Git 的基本概念和使用方式

Git 是一种分布式版本控制系统,它能够记录文件内容的变化,并且允许用户在这些变化之间轻松地进行切换。 Git 的基本概念如下: 1. 仓库(Repository):Git 存放项目代码的地方。通常,一个仓库对应一…...

【JVM】(三) 深入理解JVM垃圾回收机制(GC)

文章目录 前言一、死亡对象的判断方法1.1 引用计数算法1.2 可达性分析算法 二、垃圾回收算法2.1 标记-清除算法2.2 复制算法2.3 标记-整理算法2.5 分代算法2.6 Minor GC 和 Major GC 前言 JVM 的垃圾回收机制(Garbage Collection)是 Java 中的重要特性之…...

Flink CEP(二) 运行源码解析

通过DemoApp学习一下&#xff0c;CEP的源码执行逻辑。为下一篇实现CEP动态Pattern奠定理论基础。 1. Pattern的定义 Pattern<Tuple3<String, Long, String>,?> pattern Pattern.<Tuple3<String, Long, String>>begin("begin").where(new…...

剑指Offer-学习计划(四)双指针(下)

剑指 Offer 57. 和为s的两个数字 剑指 Offer 58 - I. 翻转单词顺序 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 题目一&#xff1a;调整数组顺序使奇数位于偶数前面 输入一个整数数组&#xff0c;实现一个函数来调整该数组中数字的顺序&#xff0c;使得所有奇数在数组的…...

深度学习——常见注意力机制

1.SENet SENet属于通道注意力机制。2017年提出&#xff0c;是imageNet最后的冠军 SENet采用的方法是对于特征层赋予权值。 重点在于如何赋权 1.将输入信息的所有通道平均池化。 2.平均池化后进行两次全连接&#xff0c;第一次全连接链接的神经元较少&#xff0c;第二次全连…...

Python 进阶(七):高级文件操作(shutil 模块)

❤️ 博客主页&#xff1a;水滴技术 &#x1f338; 订阅专栏&#xff1a;Python 入门核心技术 &#x1f680; 支持水滴&#xff1a;点赞&#x1f44d; 收藏⭐ 留言&#x1f4ac; 文章目录 1. 简介2. 常用函数2.1 复制文件2.2 复制目录2.3 移动文件或目录2.4 删除文件或目录2.…...

保留网络:大型语言模型的Transformer继任者

原文信息 原文题目&#xff1a;《Retentive Network: A Successor to Transformer for Large Language Models》 原文引用&#xff1a;Sun Y, Dong L, Huang S, et al. Retentive Network: A Successor to Transformer for Large Language Models[J]. arXiv preprint arXiv:2…...

算法通关村第二关——反转链表青铜笔记

LeetCode 206.反转链表 建立虚拟结点辅助翻转 public ListNode reverseList(ListNode head) {ListNode ans new ListNode(-1);ListNode cur head;while(cur!null){ListNode curNext cur.next;cur.next ans.next;ans.next cur;cur curNext;}return ans.next; }不带虚拟头…...

【Linux】——线程安全

目录 关于线程进程的问题 可重入与线程安全 常见的线程安全的情况 常见的不可重入的情况 常见的可重入的情况 可重入与线程安全区别 可重入与线程安全联系 Linux线程互斥 进程线程间的互斥相关概念 互斥量mutex 互斥量mutex常用接口 互斥量改造抢票系统 互斥量的原…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...