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.hqwc.cn/news/588689.html

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

相关文章

三台电机的顺启逆停

1,开启按钮输入信号是 电机一开始启动,5秒回电机2启动 ,在5秒电机三启动 关闭按钮输入时电机3关闭 ,5秒后电机2关闭 最后电机一关闭 2,思路开启按钮按下接通电机1 并且接通定时器T0 定时器T0 到时候接通电机2 并且开…

【漏洞复现】WordPress Plugin LearnDash LMS 敏感信息暴漏

漏洞描述 WordPress和WordPress plugin都是WordPress基金会的产品。WordPress是一套使用PHP语言开发的博客平台。该平台支持在PHP和MySQL的服务器上架设个人博客网站。WordPress plugin是一个应用插件。 WordPress Plugin LearnDash LMS 4.10.2及之前版本存在安全漏洞&#x…

vCenter Server出现no healthy upstream的解决方法

https://blog.51cto.com/wangchunhai/4907250 访问vCenter 7.0 地址后,页面出现“no healthy upstream”,无法正常登录vCenter,重启后依旧如此,该故障的前提是没有对vCenter做过任何配置,如下图所示。 尝试登录"VMware vCen…

天龙八部_暗黑机制_人面桃花_单机架设搭建

一. 搭建成功视频演示 天龙八部_暗黑机制_人面桃花_单机架设搭建 二. 一些文件截图 完整教程和搭建文件获取: https://githubs.xyz/y24.html 三. 搭建步骤 安装虚拟机虚拟机打开一键端,然后登录root,密码:123456启动./run 脚本 &#xff0…

MATLAB 自定义均值滤波 (53)

MATLAB 自定义均值滤波 (53) 一、算法介绍二、算法实现1.原理2.代码一、算法介绍 均值滤波,是一种常见的点云平滑算法,改善原始点云的数据质量问题,MATLAB自带的工具似乎不太友好,这里提供自定义实现的点云均值滤波算法,具体效果如下所示: 均值滤波前: 均值滤波后:…

电商技术揭秘五:电商平台的个性化营销与数据分析

文章目录 引言1. 个性化营销的概念与价值1.1 个性化营销的定义1.1.1 个性化营销的基本概念1.1.2 个性化营销在电商领域的重要性 1.2 个性化营销的核心价值1.2.1 提升用户体验1.2.2 增加转化率和客户忠诚度1.2.3 优化营销资源配置 2. 用户画像与行为分析2.1 用户画像的构建2.1.1…

人人都离不开的算法:AI 时代的生存指南

文章目录 一、算法在生活中的“无处不在”二、算法在工作学习中的“智慧助力”三、算法在社会发展中的“驱动力量”四、算法带来的“双刃剑”效应五、应对算法挑战的策略《人人都离不开的算法——图解算法应用》编辑推荐1、通俗易懂2、技术科普3、贴近时代、贴近生活4、启发思考…

[C/C++] -- 二叉树

1.简介 二叉树是一种每个节点最多有两个子节点的树结构,通常包括:根节点、左子树、右子树。 满二叉树: 如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。深度为k&a…

对 NGINX、Kong 和 Amazon 的 API 管理解决方案进行基准测试:它们能否交付实时 API?

原文作者:Alessandro Fael Garcia of F5 原文链接:对 NGINX、Kong 和 Amazon 的 API 管理解决方案进行基准测试:它们能否交付实时 API? 转载来源:NGINX 开源社区 NGINX 唯一中文官方社区 ,尽在 nginx.org.c…

【Qt】使用Qt实现Web服务器(九):EventSource+JSON实现工业界面数据刷新

1、效果 效果如下,实时刷新温度、湿度 2、源码 2.1 index.html <html><body> <!-- 页面布局,本人对HTML标签不熟悉,凑合看吧 --> <div><label for

智能交通广播系统解决方案

智能交通广播系统解决方案 iP网络广播求助对讲系统在智慧交通中起至关重要的作用。本系统具备公共广播系统一般用途的日常广播(播放背景音乐、话筒寻呼广播)和紧急广播。同时具有背景音乐广播、公共广播、紧急广播、语音求助全双工双向对讲等功能。在出现突发性交通事故或恶劣…

复现黄金票据

一、具体内容 黄金票据是一种在域环境中利用 Kerberos 协议漏洞的攻击方式。 在网络安全中复现黄金票据通常包括以下步骤&#xff1a; 1. 信息收集&#xff1a;获取目标域的相关信息&#xff0c;如域名、域控制器的 IP 地址等。 2. 生成黄金票据&#xff1a;使用特定工具或脚本…