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

Redis的5大常见数据类型的用法

上一篇文章我们讲了Redis的10大应用场景,这一篇文章就针对Redis的常用数据结构进行一个说明,通过示例的形式演示每一种数据结构如何使用。

当涉及Redis的数据操作时,不同数据类型对应的不同数据结构,如下就对5大常用的数据类型进行演示。

1、字符串(String)

  • SET key value:适用于设置单个值,比如设置用户的姓名或者用户的年龄等。

    SET username "John"
    
  • GET key:适用于获取单个值,比如获取用户的姓名或者用户的年龄等。

    GET username
    
  • DEL key:适用于删除单个键值对,比如删除用户的姓名或者用户的年龄等。

    DEL username
    

2、哈希(Hash)

  • HSET key field value:适用于存储对象的属性,比如存储用户对象的各个属性。

    HSET user:id:1001 name "John"
    
  • HGET key field:适用于获取对象的指定属性,比如获取用户对象的姓名属性。

    HGET user:id:1001 name
    
  • HDEL key field1 field2 ...:适用于删除对象的指定属性,比如删除用户对象的姓名属性。

    HDEL user:id:1001 name
    

3、列表(List)

3.1、创建列表

可以使用LPUSHRPUSH等命令向列表的头部或尾部添加元素,从而创建一个新的列表。

LPUSH mylist value1 value2 value3   # 向列表头部添加元素
RPUSH mylist value4 value5 value6   # 向列表尾部添加元素

3.2、获取列表元素

通过LRANGE命令可以获取列表指定范围内的元素,其中0表示列表的第一个元素,-1表示列表的最后一个元素。

LRANGE mylist 0 -1   # 获取列表中所有元素
LRANGE mylist 0 2    # 获取列表中前三个元素

3.3、弹出列表元素

通过LPOPRPOP命令可以从列表头部或尾部弹出一个元素,并返回弹出的元素。

LPOP mylist    # 从列表头部弹出一个元素
RPOP mylist    # 从列表尾部弹出一个元素

3.4、获取列表长度

通过LLEN命令可以获取列表的长度,即列表中元素的个数。

LLEN mylist    # 获取列表的长度

3.5、示例

假设我们有一个任务队列,需要将任务按顺序添加到队列中,并且按照顺序处理。

LPUSH task_queue task1     # 添加任务1到任务队列头部
LPUSH task_queue task2     # 添加任务2到任务队列头部
LPUSH task_queue task3     # 添加任务3到任务队列头部LRANGE task_queue 0 -1     # 获取任务队列中的所有任务RPOP task_queue            # 从任务队列尾部弹出一个任务,表示任务被处理

4、集合(Set)

4.1、创建集合

在Redis中,可以使用SADD命令向集合中添加元素,从而创建一个新的集合。

SADD myset member1 member2 member3   # 向集合中添加多个成员

4.2、获取集合成员

通过SMEMBERS命令可以获取集合中的所有成员。

SMEMBERS myset    # 获取集合中所有成员

4.3、判断成员是否存在

通过SISMEMBER命令可以判断指定成员是否存在于集合中。

SISMEMBER myset member1    # 判断成员1是否存在于集合中

4.4、移除集合成员

通过SREM命令可以从集合中移除一个或多个成员。

SREM myset member1 member2    # 从集合中移除成员1和成员2

4.5、获取集合基数

通过SCARD命令可以获取集合的基数,即集合中成员的数量。

SCARD myset    # 获取集合的基数

4.6、获取集合交集

通过SINTER命令可以获取多个集合的交集。

SADD set1 a b c    # 集合1包含元素a、b、c
SADD set2 b c d    # 集合2包含元素b、c、dSINTER set1 set2   # 获取集合1和集合2的交集

4.7、示例

假设我们有一个社交网络应用,需要存储用户的好友列表,并且要求好友列表中不能有重复的用户。

SADD user:1001:friends user:1002    # 用户1001的好友列表中添加用户1002
SADD user:1001:friends user:1003    # 用户1001的好友列表中添加用户1003
SADD user:1001:friends user:1004    # 用户1001的好友列表中添加用户1004SMEMBERS user:1001:friends          # 获取用户1001的好友列表中的所有好友

5、有序集合(Sorted Set)

5.1、创建有序集合

可以使用ZADD命令向有序集合中添加成员,同时为每个成员指定一个分数,从而创建一个新的有序集合。

ZADD mysortedset 1 member1    # 向有序集合中添加成员1,并设置其分数为1
ZADD mysortedset 2 member2    # 向有序集合中添加成员2,并设置其分数为2
ZADD mysortedset 3 member3    # 向有序集合中添加成员3,并设置其分数为3

5.2、获取有序集合成员

通过ZRANGE命令可以按照分数从小到大的顺序获取有序集合中指定范围内的成员。

ZRANGE mysortedset 0 -1 WITHSCORES    # 获取有序集合中所有成员及其分数
ZRANGE mysortedset 0 2 WITHSCORES     # 获取有序集合中前三个成员及其分数

5.3、获取有序集合成员分数

通过ZSCORE命令可以获取有序集合中指定成员的分数。

ZSCORE mysortedset member1    # 获取成员1在有序集合中的分数

5.4、移除有序集合成员

通过ZREM命令可以从有序集合中移除一个或多个成员。

ZREM mysortedset member1 member2    # 从有序集合中移除成员1和成员2

5.5、获取有序集合基数

通过ZCARD命令可以获取有序集合的基数,即有序集合中成员的数量。

ZCARD mysortedset    # 获取有序集合的基数

5.6、示例

假设我们有一个学生成绩单,需要存储学生的成绩,并按照成绩从高到低进行排名。

ZADD student_scores 90 alice    # 学生Alice的成绩为90
ZADD student_scores 85 bob      # 学生Bob的成绩为85
ZADD student_scores 95 charlie  # 学生Charlie的成绩为95ZRANGE student_scores 0 -1 WITHSCORES   # 获取学生成绩单中所有学生及其成绩

感觉整理的可以,《醉鱼Java》你懂的😏

相关文章:

Redis的5大常见数据类型的用法

上一篇文章我们讲了Redis的10大应用场景,这一篇文章就针对Redis的常用数据结构进行一个说明,通过示例的形式演示每一种数据结构如何使用。 当涉及Redis的数据操作时,不同数据类型对应的不同数据结构,如下就对5大常用的数据类型进行…...

刘小光本就疑心赵本山与他媳妇李琳有染,赵本山为证实清白便想起蛋糕上的字,结果呢?

刘小光本就疑心赵本山与他媳妇李琳有染,赵本山为证实清白便想起蛋糕上的字,结果呢? ——小品《生日快乐》(中5)的台词 (接上) 赵本山:噢!对对!那谁,老四,是…...

Unity之PUN实现多人联机射击游戏的优化(Section 2)

目录 🎮一、准备工作 🎮二、实现手雷投掷动作 🎮三、手雷投掷同步 💤3.1 photonView.RPC 🎮四、同步手雷伤害 这几周都给我布置任务了,最近可忙。现在终于有机会更新了,也谢谢大家的阅读&a…...

多叉树题目:N 叉树的层序遍历

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题:N 叉树的层序遍历 出处:429. N 叉树的层序遍历 难度 4 级 题目描述 要求 给定一个 N 叉树的根结点 root \texttt{root} root&#xf…...

时序数据库IoTDB:功能详解与行业应用

一文读懂时序数据库 IoTDB。 01 为什么需要时序数据库 解释时序数据库前,先了解一下何谓时序数据。 时序数据,也称为时间序列数据,是指按时间顺序记录的同一统计指标的数据集合。这类数据的来源主要是能源、工程、交通等工业物联网强关联行业…...

信息系统项目管理师——第18章项目绩效域管理(一)

本章节内容属于第四版新增知识,为PMBOK第七版专有,选择、案例、论文都会考,属于比较重要的章节。 选择题,稳定考3分左右,新教材基本考课本原话,需要多读课本,多刷题。 案例题,考的概…...

WebSocket用户验证

在WebSocket中,如何携带用户的验证信息 一、在OnMessage中进行验证 客户端在连接到服务器后,客户端通过发送消息,服务器端在OnMessage方法中,进行信息验证,这种方式需要将用户身份验证及接收用户消息进行混合处理&am…...

NOSQL(非关系型数据库)的优缺点有哪些?

优点: 高度灵活且可扩展:NoSQL数据库不受固定数据模型的限制,可以根据应用需求灵活设计数据结构,轻松应对大规模数据集。此外,它支持分布式架构,具有出色的水平扩展能力,能够高效地处理大量数据…...

个人推荐Redis比较好的一种使用规范

随着对个人项目的不断开发、迭代和重构,博主在这个过程中总结出了一套使用redis的较好的规范。主要包含Redis的key命名规范和Redis代码规范。 主要内容 主要包含以下几个内容: 同一应用的key在最前面添加统一的前缀,如应用名; 案…...

【教程】宝塔default.db占用空间几十g解决方法|宝塔占用磁盘空间特别大解决方法|宝塔磁盘被占满怎么清理

目录 一、前言二、排查问题三、解决方法 一、前言 用过宝塔创建网站,大家应该都非常熟悉,但是用随着用的时间越来越多,宝塔所占用的空间也越来越多,不停的加大数据盘都没有用,我原先买了30G够用了,随着时间…...

Unity类银河恶魔城学习记录11-15 p117 Ice and Fire item Effect源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili IceAndFire_Controller.cs using System.Collections; using System.Coll…...

Qt QML的枚举浅用

QML的枚举用法 序言概念命名规则在QML定义枚举的规范 用法QML的枚举定义方法供QML调用的,C的枚举定义方法 序言 概念 QML的枚举和C的其实差不多,但是呢,局限比较多,首先不能在main.qml里定义,也不能在子项中定义。 …...

设计模式:单例模式六种实现

单例模式有多种实现方式,每种方式都有其设计思想、优缺点以及适用的使用场景。以下是一些常见的单例实现方式: 1. 懒汉式(线程不安全) 设计思想 这种实现方式采用了类加载的懒加载机制来保证单例只在第一次使用时被创建。 实现代码 public class Singleton {private s…...

Mybatis-Plus05(分页插件)

分页插件 MyBatis Plus自带分页插件,只要简单的配置即可实现分页功能 1. 添加配置类 Configuration MapperScan("com.atguigu.mybatisplus.mapper") //可以将主类中的注解移到此处 public class MybatisPlusConfig {Bean public MybatisPlusIntercepto…...

python爬取B站视频

参考:https://cloud.tencent.com/developer/article/1768680 参考的代码有点问题,请求头需要修改,上代码: import requests import re # 正则表达式 import pprint import json from moviepy.editor import AudioFileClip, Vid…...

深度学习500问——Chapter05: 卷积神经网络(CNN)(2)

文章目录 5.6 有哪些池化方法 5.7 1x1卷积作用 5.8 卷积层和池化层有什么区别 5.9 卷积核是否一定越大越好 5.10 每层卷积是否只能用一种尺寸的卷积核 5.11 怎样才能减少卷积层参数量 5.12 在进行卷积操作时,必须同时考虑通道和区域吗 5.13 采用宽卷积的好处有什么 …...

基于单片机的测时仪系统设计

**单片机设计介绍,基于单片机的测时仪系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的测时仪系统设计是一个结合了单片机技术与测时技术的综合性项目。该设计的目标是创建一款精度高、稳定性强且…...

鸿蒙原生应用开发-网络管理Socket连接(三)

应用通过TLS Socket进行加密数据传输 开发步骤 客户端TLS Socket流程: 1.import需要的socket模块。 2.绑定服务器IP和端口号。 3.双向认证上传客户端CA证书及数字证书;单向认证只上传CA证书,无需上传客户端证书。 4.创建一个TLSSocket连接…...

【Java EE】关于Maven

文章目录 🎍什么是Maven🌴为什么要学Maven🌲创建⼀个Maven项目🌳Maven核心功能🌸项目构建🌸依赖管理 🍀Maven Help插件🎄Maven 仓库🌸本地仓库🌸私服 ⭕总结 …...

每日一题:C语言经典例题之反转数

题目描述 给定一个整数,请将该数各个数位上的数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零。 题目描述 给定一个整数,请将该数各个数位上的数字反转得到一个…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层&#xf…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

大数据学习(132)-HIve数据分析

​​​​🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言&#x1f4…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...

【生成模型】视频生成论文调研

工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...