Redis List类型命令 - Set类型命令 - SortedSet类型命令

news2024/10/6 20:36:54

目录

List类型

什么是双向链表呢?

List类型的特征:

List的常用命令

LPUSH和RPUSH的区别:

LPOP和RPOP的区别:

LPUSH和RPUSH的使用

LPOP和RPOP的使用

LRANGE key star end:返回一段距离范围内所有的元素

BLPOP和BRPOP:它在没有该元素的时候会等待一段时间,而不是直接返回nil

问题1:如何利用List结构模拟一个栈?

问题2:如何利用List结构模拟一个队列?

问题3:如何利用List结构模拟一个阻塞队列?

Set类型

Set类型的常用命令(member代表着元素)

SADD key member:向set中添加一个或者多个元素

SREM key member:删除set中的指定元素

SCARD key:返回set中元素的个数

SISMEMBER key member:判断元素是否存在在key中

SMEMBERL key:获取set中的所有元素

SINTER 和 SDIFF 和 SUNION 是实现Set类型的交集、差集、并集操作

Set类型交集、差集、并集命令的练习

SortedSet类型

SortedSet类型的特征:

SortedSet类型的常用命令:

SortedSet类型命令练习

插入学生得分数据:

删除Tom同学:

获取Amy同学的分数:

获取Rose同学的排名:

查询80分以下有几个同学:

给Amy同学添加2分:

查出成绩前3名的同学:(倒序查询)

查出成绩在80分以下的所有同学:


List类型

什么是双向链表呢?

双向链表(Doubly Linked List)是一种常见的链表数据结构,与单向链表不同,它的每个节点除了包含指向下一个节点的指针外,还包含一个指向前一个节点的指针。这使得双向链表可以在两个方向上遍历链表,从头部到尾部,或者从尾部到头部。

跟java中的Linkedlist十分的类似: 

List类型的特征:

List的常用命令

LPUSH和RPUSH的区别:

一个是从列表的左侧开始插入,一个是从列表的右侧开始插入

LPOP和RPOP的区别:

一个是从列表的左侧开始取出,一个是从列表的右侧开始取出

LPUSH和RPUSH的使用

192.168.1.209:6379> LPUSH users 1 2 3
(integer) 3
192.168.1.209:6379> RPUSH users 4 5 6
(integer) 6
192.168.1.209:6379> 

LPOP和RPOP的使用

192.168.1.209:6379> LPOP users 1
1) "3"
192.168.1.209:6379> RPOP users 1
1) "6"
192.168.1.209:6379> 

LRANGE key star end:返回一段距离范围内所有的元素

192.168.1.209:6379> LRANGE users 1 2
1) "1"
2) "4"
192.168.1.209:6379> LRANGE users 2 3
1) "4"
2) "5"
192.168.1.209:6379> LRANGE users 0 3
1) "2"
2) "1"
3) "4"
4) "5"
192.168.1.209:6379> 

BLPOP和BRPOP:它在没有该元素的时候会等待一段时间,而不是直接返回nil

192.168.1.209:6379> BLPOP users2 100     # 等待了18.5秒,当从其他机器上插入后,出现数据
1) "users2"
2) "clay"
(18.50s)

127.0.0.1:6379> LPUSH users2 clay     # 添加了users2这个key
(integer) 1
127.0.0.1:6379> 


192.168.1.209:6379> BLPOP users3 10     # 不存在该key(users3)
(nil)
(10.06s)
192.168.1.209:6379> 

问题1:如何利用List结构模拟一个栈?

栈的入口和出口都在同一边,而且必须先进入数据,才能输出数据

因此需要我们的入口和出口都在同一边,只用LPUSH和LPOP来输入输出数据,或者是只使用RPUSH和RPOP来输入输出数据

问题2:如何利用List结构模拟一个队列?

队列的入口和出口不在同一边

因此需要我们的入口和出口不在同一边,只用LPUSH和RPOP来输入输出数据,或者是只使用RPUSH和LPOP来输入输出数据

问题3:如何利用List结构模拟一个阻塞队列?

首先它是队列,因此入口和出口不在同一边

而且出队的时候必须采用BLPOP和BRPOP来输出,形成阻塞的效果

Set类型

Set类型的常用命令(member代表着元素)

SADD key member:向set中添加一个或者多个元素

192.168.1.209:6379> SADD s1 a b c
(integer) 3
192.168.1.209:6379> 

SREM key member:删除set中的指定元素

192.168.1.209:6379> SREM s1 b
(integer) 1
192.168.1.209:6379> 

SCARD key:返回set中元素的个数

192.168.1.209:6379> SCARD s1
(integer) 2
192.168.1.209:6379> 

SISMEMBER key member:判断元素是否存在在key中

192.168.1.209:6379> SISMEMBER s1 a
(integer) 1
192.168.1.209:6379> SISMEMBER s1 b
(integer) 0
192.168.1.209:6379> 

SMEMBERL key:获取set中的所有元素

192.168.1.209:6379> SMEMBERS s1
1) "a"
2) "c"
192.168.1.209:6379> 

SINTER 和 SDIFF 和 SUNION 是实现Set类型的交集、差集、并集操作

Set类型交集、差集、并集命令的练习

SortedSet类型

SortedSet类型的特征:

SortedSet类型的常用命令:

 注:详细的SortedSet类型命令我们能通过命令行的help @sortedset来查看

SortedSet类型命令练习

插入学生得分数据:

192.168.1.209:6379> ZADD stus 85 Jack 89 Lucy 82 Rose 95 Tom 78 Jerry 92 Amy 76 Miles
(integer) 7
192.168.1.209:6379> 

删除Tom同学:

192.168.1.209:6379> ZREM stus Tom
(integer) 1
192.168.1.209:6379> 

获取Amy同学的分数:

192.168.1.209:6379> ZSCORE stus Amy
"92"
192.168.1.209:6379> 

获取Rose同学的排名:

192.168.1.209:6379> ZRANK stus Rose
(integer) 2
192.168.1.209:6379> 

查询80分以下有几个同学:

192.168.1.209:6379> ZCOUNT stus 0 80
(integer) 2
192.168.1.209:6379> 

给Amy同学添加2分:

192.168.1.209:6379> ZINCRBY stus 2 Amy
"94"
192.168.1.209:6379> 

查出成绩前3名的同学:(倒序查询)

192.168.1.209:6379> ZREVRANGE stus 0 2
1) "Amy"
2) "Lucy"
3) "Jack"
192.168.1.209:6379> 

查出成绩在80分以下的所有同学:

192.168.1.209:6379> ZRANGEBYSCORE stus 0 80
1) "Miles"
2) "Jerry"
192.168.1.209:6379> 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kotlin(五) 循环语句

目录 For循环 关键字 until step downTo Java中主要有两种循环语句:while循环和for循环。而Kotlin也提供了while循环和for循环,其中while循环不管是在语法还是使用技巧上都和Java中的while循环没有任何区别,因此我们就直接跳过不进行讲解…

winserver 2012 R2 部署记录

记一次winserver2012 R2 环境部署,程序要求 framework4.6.1 安装好之后发现报错,提示运行环境没有 4.6.1 支持,需要安装 于是先装了 chs 版本,发现报错。 再次打开卸载,重新安装enu版本,发现程序正常。

GPT引领前沿热点、AI绘图

GPT对于每个科研人员已经成为不可或缺的辅助工具,不同的研究领域和项目具有不同的需求。如在科研编程、绘图领域: 1、编程建议和示例代码: 无论你使用的编程语言是Python、R、MATLAB还是其他语言,都可以为你提供相关的代码示例。 2、数据可…

ubuntu 22.04 深度学习环境配置

第一步 安装驱动 网址:https://www.nvidia.com/download/index.aspx 根据硬件选择,我这里是 ubuntu 服务器,显卡是v100 sudo su root chmod ax NVIDIA //按 TAB 即可 加运行权限 # 禁用原显卡驱动 vim /etc/modprobe.d/blacklist.conf # 在最后一行…

服装商城小程序制作:打造便捷购物体验和提升销售额的利器

随着移动互联网的发展,服装商城小程序成为各大服装品牌推广销售的重要工具。它不仅能够为用户提供便捷的购物体验,还能帮助服装商城实现更高效的销售和管理。下面给大家介绍下服装商城小程序的优点以及制作流程,让您了解并充分利用这一利器。…

【视觉系统】电容正负极角度机器视觉测量软硬件方案-康耐德智能

电容正负极角度测量  客户的需求  检测内容 电容的正负极角度测量。  检测要求 判断电容的正负极,无精度要求,速度越快越好。  凯瑞斯评估  视觉可行性分析 对贵司的样品进行了光学实验,并进行图像处理,…

数据链路层中多路复用详解

MAC协调节点间信号的传输,经历避免节点间相互干扰 因此出现了两种信道划分方式,分别是:静态划分信道、动态划分信道 一、什么是多路复用 多路复用技术是把多个低速信道合成一个高速信道的技术,使得一条高速的主干链路同时为多条…

STM32 硬件IIC 控制OLED I2C卡死问题

1. STM32L151C8T6 硬件IIC 控制OLED 屏,OLED 驱动IC CH1116G, 查阅OLED 数据手册 2. STM32 硬件IIC 初始化,用的标准库,固件库 // stm32l151c8t6 as master, oled control ic (CH1116G) as slave, and communicate by master iic2 void STM3…

基于FPGA的ECG心电信号峰值检测和心率计算,包括testbench测试文件和ECG数据转换为coe文件程序

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 vivado2019.2 matlab2022a 3.部分核心程序 timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 202…

联想M7600D激光打印机墨粉盒清零方法

粉盒没有墨粉了,加粉后回来安装回打印机里还是会显示请更换墨粉盒;这个时候你就需要将粉盒的计数归一下零,好让机器重新计数;那么怎么清零呢?用什么方法清零呢?在哪里操作呢?下面我就告诉你一个…

Android中的view绘制流程,简单理解

简单理解 Android中的View类代表用户界面中基本的构建块。一个View在屏幕中占据一个矩形区域、并且负责绘制和事件处理。View是所有widgets的基础类,widgets是我们通常用于创建和用户交互的组件,比如按钮、文本输入框等等。子类ViewGroup是所有布局&…

Facebook 广告:如何为移动设备投放广告

图片来源于:SaleSmartly官网 如果您希望目标受众发现并看到您的企业,那么广告是至关重要的,但是哪些是宣传您的品牌的最佳方式呢?当今最常用的平台(手机)上的广告怎么样?能够回答这些问题很重要…

el-select数据过多的解决(纯前端)

前言 el-select数据过多这个问题应该很多人都遇到过,在生产环境中数据几百、几千条是比较常见的。当数据过多时,就会造成浏览器卡顿,如果客户电脑性能不行,浏览器直接卡死也有可能。 解决 先说一下现在项目中遇到的两种解决方案…

Activiti基础入门

文章目录 Activiti项目搭建引用依赖项Activiti服务初始化数据库配置配置文件测试demo Activiti功能服务RepositoryService:RuntimeService:TaskService:HistoryService:ManagementService:DynamicBpmnService&#xff…

使用【宝塔+docker】在云服务器上部署基于SpringBoot 和 Dubbo RPC 的项目:踩坑记录

待部署的项目包括:前端front,服务提供者backend,服务消费者gateway,注册中心nacos 服务器信息:腾讯云入门级服务器2核2G(后续有对服务器进行升级) 部署工具:前端使用宝塔部署&#x…

【python】logging报错KeyError: ‘formatters‘

报错 Traceback (most recent call last):File "E:\Python\lib\runpy.py", line 194, in _run_module_as_main return _run_code(code, main_globals, None, File &qu…

免费电脑清理工具:清除垃圾文件,提升性能表现

当电脑使用一段时间后,许多已安装的应用程序、文件或其他项目会在硬盘上积累起来。这会导致电脑运行速度变慢,或Windows提示你硬盘空间不足。在这个时候,你需要使用电脑清理工具来清理电脑。 电脑清理软件为用户提供了一种简单的方法…

【计组】2.3浮点数表示和运算

一、浮点数的表示 浮点数尾数的规格化 注:进行左规和右规仅移动数值位符号位不变 解释:尾数的最高数值位必须是一个有效位即算术意义上的1 规格化应用(与双符号位结合) 规格化浮点数的特点: 其中首位为符号位&#…

Linux之autofs自动挂载服务

目录 Linux之autofs自动挂载服务 产生原因 安装 配置文件分析 文件路径 作用 etc/auto.master文件内容格式 挂载参数 案例 案例1 --- 服务器创建共享目录,客户端实现自动挂载 案例2 --- 自动挂载光盘 Linux之autofs自动挂载服务 产生原因 在一般NFS文件系…

算法训练营day42|动态规划 part04(01背包问题基础(两种解决方案)、416.分割等和子集)

文章目录 01背包----二维dp数组01背包----滚动数组416.分割等和子集思路分析背包解法思考总结 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最…