当前位置: 首页 > 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常用接口 互斥量改造抢票系统 互斥量的原…...

基于GA - XGBoost的时间序列预测:抑制过拟合与参数优化

基于遗传算法优化算法优化XGBoost(GA-XGBoost)的时间序列预测 GA-XGBoost时间序列 采用交叉验证抑制过拟合问题 优化参数为迭代次数、最大深度和学习率 matlab代码&#xff0c;注&#xff1a;暂无Matlab版本要求 -- 推荐 2016B 版本及以上 注&#xff1a;采用 XGBoost 工具箱&a…...

N_m3u8DL-CLI-SimpleG:快速下载M3U8视频的终极指南

N_m3u8DL-CLI-SimpleG&#xff1a;快速下载M3U8视频的终极指南 【免费下载链接】N_m3u8DL-CLI-SimpleG N_m3u8DL-CLIs simple GUI 项目地址: https://gitcode.com/gh_mirrors/nm3/N_m3u8DL-CLI-SimpleG N_m3u8DL-CLI-SimpleG是一个专门用于下载M3U8流媒体视频的开源工具…...

Phi-3 Forest Laboratory操作系统知识问答系统:从进程管理到文件系统详解

Phi-3 Forest Laboratory操作系统知识问答系统&#xff1a;从进程管理到文件系统详解 你有没有过这样的经历&#xff1f;翻开一本厚厚的操作系统教材&#xff0c;满篇都是“进程调度算法”、“虚拟内存”、“文件系统结构”这些抽象概念&#xff0c;看得人头晕眼花。或者&…...

多个source、多个sink

关键配置&#xff1a;sink的&#xff1a;plugin_input ["source_data1", "source_data2"]对应模型┌──────────┐│ Source A │──┐└──────────┘ │├──▶ Sink┌──────────┐ ││ Source B │──┘└──────…...

SEO和SEM对于中小企业的意义是什么_SEO 和 SEM 的报告指标有哪些

SEO和SEM对于中小企业的意义是什么 在当今的数字化时代&#xff0c;中小企业如何在竞争激烈的市场中脱颖而出&#xff0c;已成为每一个企业家关注的焦点。搜索引擎优化&#xff08;SEO&#xff09;和搜索引擎营销&#xff08;SEM&#xff09;作为两种重要的数字营销手段&#…...

机器学习在医疗诊断中的应用

机器学习在医疗诊断中的应用 【免费下载链接】Zettlr Your One-Stop Publication Workbench 项目地址: https://gitcode.com/GitHub_Trending/ze/Zettlr 背景 [[医疗诊断现状分析]]显示当前诊断方法的局限性。 方法 基于[[机器学习基础概念]]中的监督学习方法。 应用…...

在wsl中利用快马平台五分钟搭建flask博客后端原型

最近在Windows系统下折腾WSL&#xff08;Windows Subsystem for Linux&#xff09;时&#xff0c;发现结合InsCode(快马)平台可以快速搭建项目原型&#xff0c;特别适合需要Linux环境特性的开发验证。就拿搭建一个Flask博客后端来说&#xff0c;传统方式从零开始配置环境、编写…...

大模型RL算法梳理:从全量词元到部分词元的路径演化

一、 引言&#xff1a;大模型强化学习算法的演化格局 近年来&#xff0c;以 OpenAI 的 o1 系列、DeepSeek 的 R1&#xff0c;以及 Qwen 系列模型为代表&#xff0c;大语言模型在数学证明、代码生成等长链路推理任务中展现出更强的稳定性与推理深度。 在这一背景下&#xff0c;面…...

掌握5个核心配置技巧:OpenCore-Configurator从入门到专家

掌握5个核心配置技巧&#xff1a;OpenCore-Configurator从入门到专家 【免费下载链接】OpenCore-Configurator A configurator for the OpenCore Bootloader 项目地址: https://gitcode.com/gh_mirrors/op/OpenCore-Configurator OpenCore-Configurator&#xff08;简称…...

Mermaid Live Editor:5分钟快速创建专业图表的终极免费工具

Mermaid Live Editor&#xff1a;5分钟快速创建专业图表的终极免费工具 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-live-e…...