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》你懂的😏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/296918.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

稀疏矩阵的三元组表表示法及其转置

1. 什么是稀疏矩阵 稀疏矩阵是指矩阵中大多数元素为零的矩阵。 从直观上讲,当元素个数低于总元素的30%时,这样的矩阵被称为稀疏矩阵。 由于该种矩阵的特点,我们在存储这种矩阵时,如果直接采用二维数组,就会十分浪费…

数据结构—树

树概述 树类似于现实生活中倒置的树。任何一颗非空树只有一个根节点。一棵树具有以下特点: 一棵树中的任意两个结点有且仅有唯一的一条路径连通。一棵树如果有 n 个结点,那么它一定恰好有 n-1 条边。一棵树不包含回路。 下图就是一颗树,并…

ALPHA开发板上的PHY芯片驱动:LAN8720驱动

一. 简介 前面文章了解到,Linux内核是有提供 PHY通用驱动的。 本文来简单了解一下ALPHA开发板上的 PHY网络芯片LAN8720的驱动。是 LAN8720芯片的公司提供的 PHY驱动。 二. ALPHA开发板上的PHY芯片驱动:LAN8720驱动 我 们 来 看 一 下 LAN8720A 的 …

大模型量化技术-GPTQ

大模型量化技术-GPTQ 2022年,Frantar等人发表了论文 GPTQ:Accurate Post-Training Quantization for Generative Pre-trained Transformers。 这篇论文详细介绍了一种训练后量化算法,适用于所有通用的预训练 Transformer模型,同时只有微小的性能下降。 GPTQ算法需要通过…

【随笔】Git 基础篇 -- 分支与合并 git rebase(十)

💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…

Linux提权!!!

上一篇文章讲了Windows的提权,那么这篇文章就来讲一下Linux的提权 1.SUID提权 suid权限 作用:让普通用户临时拥有该文件的属主的执行权限,suid权限只能应用在二进制可执行文件(命令)上,而且suid权限只能设置…

Vue依赖注入,详细解析

Prop 逐级透传问题​ 通常情况下,当我们需要从父组件向子组件传递数据时,会使用 props。想象一下这样的结构:有一些多层级嵌套的组件,形成了一颗巨大的组件树,而某个深层的子组件需要一个较远的祖先组件中的部分数据。…

优先队列c++

内容&#xff1a; priority_quene是一个优先队列&#xff0c;优先级别高的先入队&#xff0c;默认最大值优先 因此出队和入队的时间复杂度均为O&#xff08;logn&#xff09;,也可以自定义优先级 头文件<quene> 函数&#xff1a; 构建优先队列 priority_queue<in…

Pycharm+Neo4j红楼梦人物关系图谱

欢迎来到我的主页~【蜡笔小新..】 本篇收录于专栏【Python】 如果对你有帮助&#xff0c;希望点赞收藏加关注啦~ 目录 前言 neo4j基础知识 Pycharm及代码实现 py2neo 数据集获取 代码介绍 前言 Python实验课时&#xff0c;老师提到用知识图谱构建红楼梦的人物关系图&…

Vue.js基础指令

(在讲指令之前,可以先了解插值表达式,如果已经知道,当我没说) 一.插值表达式 1.数据绑定最常见的形式就是双大括号的文本插值,Mustache上属性的值替代。只要绑定的数据对象上属性发生了改变,插值处的内容都会更新。,message 是将数据解析成纯文本的,也就是说,就算中…

Linux之进程间通信

1.进程间通信的目的 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程 资源共享&#xff1a;多个进程之间共享同样的资源。 通知事件&#xff1a;一个进程需要向另一个或一组进程发送消息&#xff0c;通知它&#xff08;它们&#xff09;发生了某种事件&#xff…

FressRTOS_day4:2024/4/4

1.总结二进制信号量和计数型信号量的区别&#xff0c;以及他们的使用场景。 二进制信号量的数值只有0和1。&#xff08;用于共享资源的访问&#xff09;&#xff1b;而计数型信号量的值一般是大于或者等于2&#xff08;用于生产者和消费者模型&#xff09; 2.使用计数型信号量…

【linux】进程替换的应用|shell解释器的实现

当我们学过了进程替换之后&#xff0c;本篇文章可以根据进程替换的知识带你自主实现一个shell命令行 实现步骤 1.显示命令行提示 2.读取输入指令以及对应选项 3.分割第二步的指令以及选项到命令行参数表中 4.处理内建命令 5.进程替换 1.显示命令行提示 我们通过观察bash的命令行…

计算机网络:局域网的数据链路层

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

Java基础 - 代码练习

第一题&#xff1a;集合的运用&#xff08;幸存者&#xff09; public class demo1 {public static void main(String[] args) {ArrayList<Integer> array new ArrayList<>(); //一百个囚犯存放在array集合中Random r new Random();for (int i 0; i < 100; …

红黑树的性质与操作:吸收红结点及其对树结构的影响

红黑树的性质与操作&#xff1a;吸收红结点及其对树结构的影响 1.红黑树的基本性质2.吸收红结点的过程2.1黑色结点的度2.2 叶结点深度 3.伪代码实现4. C语言代码实现5. 结论 红黑树作为一种高效的自平衡二叉搜索树&#xff0c;在计算机科学中扮演着重要的角色。它通过一系列复杂…

开源软件技术社区方案

开源软件技术社区是一个由开发者、贡献者、用户和维护者组成的共享平台&#xff0c;主要目的是打造技术、软件产品良性互动、开源技术安全可控的软件生态环境&#xff0c;实现可复用应用或服务的快速部署与使用、完成资源与能力的高度共享、促进社区成员的共建共赢&#xff0c;…

电池二次利用走向可持续大循环周期的潜力和挑战(第一篇)

一、背景 当前&#xff0c;气候变化是全球可持续发展面临的重大挑战。缓解气候变化最具挑战性的目标是在本世纪中期实现碳中和&#xff08;排放量低到足以被自然系统安全吸收&#xff09;&#xff0c;其中电动汽车&#xff08;EV&#xff09;的引入是一项关键举措。电动汽车在…

CSS3新增的语法(三)【2D,3D,过渡,动画】

CSS3新增的语法&#xff08;三&#xff09;【2D,3D,过渡&#xff0c;动画】 10.2D变换10.1. 2D位移10.2. 2D缩放10.3. 2D旋转10.4. 2D扭曲&#xff08;了解&#xff09;10.5. 多重变换10.6. 变换原点 11. 3D变换11.1. 开启3D空间11.2. 设置景深11.3. 透视点位置11.4. 3D 位移11…

为 AI 而生的编程语言「GitHub 热点速览」

Mojo 是一种面向 AI 开发者的新型编程语言。它致力于将 Python 的简洁语法和 C 语言的高性能相结合&#xff0c;以填补研究和生产应用之间的差距。Mojo 自去年 5 月发布后&#xff0c;终于又有动作了。最近&#xff0c;Mojo 的标准库核心模块已在 GitHub 上开源&#xff0c;采用…