redis -List
一,List(列表)
1,所应用场景
list实际上是一个链表,before Node after , left, right 都可以插入值如果key不存在,则创建新的链表如果key存在,新增内容如果移除了所有值,空链表,也代表不存在在两边插入或者改动值,效率最高!修改中间元素,效率相对较低应用:消息排队!消息队列(Lpush Rpop),栈(Lpush Lpop)
2,命令
LPUSH/RPUSH key value1[value2..] 从左边/右边向列表中PUSH值(一个或者多个)。
LRANGE key start end 获取list 起止元素==(索引从左往右 递增)==
LPUSHX/RPUSHX key value 向已存在的列名中push值(一个或者多个)
LINSERT key BEFORE|AFTER pivot value 在指定列表元素的前/后 插入value
LLEN key 查看列表长度
LINDEX key index 通过索引获取列表元素
LSET key index value 通过索引为元素设值
LPOP/RPOP key 从最左边/最右边移除值 并返回
RPOPLPUSH source destination 将列表的尾部(右)最后一个值弹出,并返回,然后加到另一个列表的头部
LTRIM key start end 通过下标截取指定范围内的列表
LREM key count value List中是允许value重复的 count > 0:从头部开始搜索 然后删除指定的value 至多删除count个 count < 0:从尾部开始搜索… count = 0:删除列表中所有的指定value。
BLPOP/BRPOP key1[key2] timout 移出并获取列表的第一个/最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
BRPOPLPUSH source destination timeout 和RPOPLPUSH功能相同,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
3,案例
---------------------------LPUSH---RPUSH---LRANGE--------------------------------127.0.0.1:6379> LPUSH mylist k1 # LPUSH mylist=>{1}
(integer) 1
127.0.0.1:6379> LPUSH mylist k2 # LPUSH mylist=>{2,1}
(integer) 2
127.0.0.1:6379> RPUSH mylist k3 # RPUSH mylist=>{2,1,3}
(integer) 3
127.0.0.1:6379> get mylist # 普通的get是无法获取list值的
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379> LRANGE mylist 0 4 # LRANGE 获取起止位置范围内的元素
1) "k2"
2) "k1"
3) "k3"
127.0.0.1:6379> LRANGE mylist 0 2
1) "k2"
2) "k1"
3) "k3"
127.0.0.1:6379> LRANGE mylist 0 1
1) "k2"
2) "k1"
127.0.0.1:6379> LRANGE mylist 0 -1 # 获取全部元素
1) "k2"
2) "k1"
3) "k3"---------------------------LPUSHX---RPUSHX-----------------------------------127.0.0.1:6379> LPUSHX list v1 # list不存在 LPUSHX失败
(integer) 0
127.0.0.1:6379> LPUSHX list v1 v2
(integer) 0
127.0.0.1:6379> LPUSHX mylist k4 k5 # 向mylist中 左边 PUSH k4 k5
(integer) 5
127.0.0.1:6379> LRANGE mylist 0 -1
1) "k5"
2) "k4"
3) "k2"
4) "k1"
5) "k3"---------------------------LINSERT--LLEN--LINDEX--LSET----------------------------127.0.0.1:6379> LINSERT mylist after k2 ins_key1 # 在k2元素后 插入ins_key1
(integer) 6
127.0.0.1:6379> LRANGE mylist 0 -1
1) "k5"
2) "k4"
3) "k2"
4) "ins_key1"
5) "k1"
6) "k3"
127.0.0.1:6379> LLEN mylist # 查看mylist的长度
(integer) 6
127.0.0.1:6379> LINDEX mylist 3 # 获取下标为3的元素
"ins_key1"
127.0.0.1:6379> LINDEX mylist 0
"k5"
127.0.0.1:6379> LSET mylist 3 k6 # 将下标3的元素 set值为k6
OK
127.0.0.1:6379> LRANGE mylist 0 -1
1) "k5"
2) "k4"
3) "k2"
4) "k6"
5) "k1"
6) "k3"---------------------------LPOP--RPOP--------------------------127.0.0.1:6379> LPOP mylist # 左侧(头部)弹出
"k5"
127.0.0.1:6379> RPOP mylist # 右侧(尾部)弹出
"k3"---------------------------RPOPLPUSH--------------------------127.0.0.1:6379> LRANGE mylist 0 -1
1) "k4"
2) "k2"
3) "k6"
4) "k1"
127.0.0.1:6379> RPOPLPUSH mylist newlist # 将mylist的最后一个值(k1)弹出,加入到newlist的头部
"k1"
127.0.0.1:6379> LRANGE newlist 0 -1
1) "k1"
127.0.0.1:6379> LRANGE mylist 0 -1
1) "k4"
2) "k2"
3) "k6"---------------------------LTRIM--------------------------127.0.0.1:6379> LTRIM mylist 0 1 # 截取mylist中的 0~1部分
OK
127.0.0.1:6379> LRANGE mylist 0 -1
1) "k4"
2) "k2"# 初始 mylist: k2,k2,k2,k2,k2,k2,k4,k2,k2,k2,k2
---------------------------LREM--------------------------127.0.0.1:6379> LREM mylist 3 k2 # 从头部开始搜索 至多删除3个 k2
(integer) 3
# 删除后:mylist: k2,k2,k2,k4,k2,k2,k2,k2127.0.0.1:6379> LREM mylist -2 k2 #从尾部开始搜索 至多删除2个 k2
(integer) 2
# 删除后:mylist: k2,k2,k2,k4,k2,k2---------------------------BLPOP--BRPOP--------------------------mylist: k2,k2,k2,k4,k2,k2
newlist: k1127.0.0.1:6379> BLPOP newlist mylist 30 # 从newlist中弹出第一个值,mylist作为候选
1) "newlist" # 弹出
2) "k1"
127.0.0.1:6379> BLPOP newlist mylist 30
1) "mylist" # 由于newlist空了 从mylist中弹出
2) "k2"
127.0.0.1:6379> BLPOP newlist 30
(30.10s) # 超时了127.0.0.1:6379> BLPOP newlist 30 # 我们连接另一个客户端向newlist中push了test, 阻塞被解决。
1) "newlist"
2) "test"
(12.54s)
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。
相关文章:
redis -List
一,List(列表) 1,所应用场景 list实际上是一个链表,before Node after , left, right 都可以插入值如果key不存在,则创建新的链表如果key存在,新增内容如果移除了所有值,空链表,也代表不存在在…...
ARMv8-A架构下的外部debug模型(external debug)简介
Armv8-A external debug Armv8-A debug模型一,外部调试 External debug 简介二,Debug state2.1 Debug state的进入与退出 三,DAP,Debug Access Port3.1 EDSCR, External Debug Status and Control Register调试状态标识࿰…...
DevOps入门
DevOps入门 1. 基础概念和原则 了解DevOps的定义、历史和主要目标 DevOps是一种将软件开发(Dev)与信息技术运维(Ops)结合起来的文化、运动或实践,旨在缩短系统开发生命周期,同时提供高质量的持续交付。DevOps的历史可以追溯到敏捷软件开发的兴起,它强调了开发和运维团队之…...
Docker搭建私有镜像仓库
1.Docker镜像仓库 搭建镜像仓库可以基于Docker官方提供的DockerRegistry来实现。 官网地址:https://hub.docker.com/_/registry 1.1.简化版镜像仓库 Docker官方的Docker Registry是一个基础版本的Docker镜像仓库,具备仓库管理的完整功能,…...
流行的API架构学习
几种流行的API架构风格图 SOAP(Simple Object Access Protocol) 优点:SOAP 是一种基于 XML 的通信协议,具有良好的跨平台和跨语言支持。它提供了丰富的安全性和事务管理功能,并支持复杂的消息交换模式。 缺点…...
问题解决:Fatal Python error: initfsencoding: unable to load the file system codec
问题: "D:\...Climb_C_site\venv\Scripts\python.exe" "D:\...\Small_Case\change_suffix.py" Fatal Python error: initfsencoding: unable to load the file system codec ModuleNotFoundError: No module named encodingsCurrent thread 0x…...
WPF —— TreeView树形控件
1 TreeView简介 TreeView 表示一个控件,该控件在树结构(其中的项可以展开和折叠)中显示分层数据。 TreeView 是一个 ItemsControl,这意味着它可以包含任何类型的对象的集合 (,例如字符串、图像或面板) 。 2 Tree Vie…...
2024.2.20力扣每日一题——从前序和中序遍历序列构建二叉树
2024.2.20 题目来源我的题解方法一 递归方法二 迭代 题目来源 力扣每日一题;题序:105 我的题解 方法一 递归 前序特点:[ 根节点, [左子树的前序遍历结果], [右子树的前序遍历结果] ]中序特点:[ [左子树的中序遍历结果], 根节点…...
c++ 小游戏(2种)
目录 介绍 游戏1 游戏2 介绍 因为DEV C的编译环境较小,所以大部分的游戏代码都无法在此上运行,我收集了一部分摸鱼小游戏的源码,在此呈现,如果有能在DEV C上运行的我会先作声明: 游戏1 扫雷 #include<stdio.…...
电阻详解:定义、公式、影响因素及电阻器类型解析
电阻定义 电阻是指当电流通过导体时,导体对电流流动所呈现的阻碍作用的物理量。它是电路元件的一个基本参数,用于量化导体阻止电荷定向移动的能力。#电阻#的大小决定了通过导体的电流与两端电压之间的关系,遵循欧姆定律,即在恒定…...
LabVIEW动车组谐波分析与检测系统
LabVIEW动车组谐波分析与检测系统 随着中国高速铁路网络的快速发展,动车组数量和运行速度的不断提升,其产生的谐波问题对电网产生了不小的影响。基于图形化编程语言LabVIEW,开发了一套动车组谐波分析与检测系统,旨在实时监控与分…...
H5移动端 Vue3 + vue-virtual-scroller 实现长列表性能优化
文章目录 安装 vue-virtual-scroller引入📢注意事项使用基础使用上拉加载下拉刷新 移动端在渲染长列表时 大量dom节点的渲染和重绘重排会导致页面卡顿、滚动不流畅、设备耗电加快、影响移动设备电池寿命等性能问题 这里分享使用【虚拟滚动】方案进行长列表优化&…...
第20章-IP路由原理
目录 1. 概述 2. 路由表 3. 查表规则 4. 路由来源类型 5. 路由优先级 6. 路由的度量值 7. 路由器写表规则 1. 概述 1. 定义 路由器:异构网络互联机制; 路由:指导路由器如何进行数据发送的路径信息; 路由表:目的地址、下一跳、出接口等; 2. IP连通的条件 沿途的每…...
SBCFormer:能够在单板计算机上以每秒1帧的速度进行全尺寸ImageNet分类的轻量级网络
文章目录 摘要1、引言2、 相关工作2.1、用于移动设备的卷积网络2.2、移动设备上的ViT和CNN-ViT混合模型2.3、评估指标 3、CNN-ViT 混合模型在低端CPU上的应用3.1、设计原则3.2、SBCFormer的整体设计3.3、SBCFormer块3.4、改进的注意力机制 4、实验结果4.1、实验设置4.2、ImageN…...
【opencv】教程代码 —features2D(8)AKAZE 特征点匹配和图像拼接
graf1.png graf3.png <?xml version"1.0"?> <opencv_storage> <H13 type_id"opencv-matrix"><rows>3</rows><cols>3</cols><dt>d</dt><data>7.6285898e-01 -2.9922929e-01 2.2567123e02…...
ssm基于springboot的数字家庭亲子视频分享网站java+vue
本网站的模块主要分为前台展示模块和后台管理模块。 前台展示模块功能如下: 1)家庭照片模块 主要功能是对家庭照片的分类显示,如旅游、运动、生活、工作、学习等,每一类中的照片按时间轴展示出来。 2)家庭亲子视频模块…...
产品经理功法修炼(1)之自我管理
点击下载《产品经理功法修炼(1)之自我管理》 1. 前言 产品经理的能力修炼并非局限于某一技能的速成,而是需要全面参与到产品的整个生命周期中,通过不断的实践来逐步提升自己的各项能力。尽管在企业的日常运作中,我们不可能身兼数职去扮演每一个角色,但作为产品的核心负…...
2024年04月IDE流行度最新排名
点击查看最新IDE流行度最新排名(每月更新) 2024年04月IDE流行度最新排名 顶级IDE排名是通过分析在谷歌上搜索IDE下载页面的频率而创建的 一个IDE被搜索的次数越多,这个IDE就被认为越受欢迎。原始数据来自谷歌Trends 如果您相信集体智慧&am…...
17.应用负载压力测试
早些点,下午题考,最近几年出现的少; 备考较为简单;历年真题相似度高; 主要议题: 1.负载压力测试概述 注意这些测试细微的差别; 负载测试和压力测试的方法比较相似,但是目的不同&a…...
Gauss到底是不是国产数据库
华为GaussDB数据库深度解析 引言 在数字化转型的浪潮中,数据成为企业最宝贵的资产之一。如何高效地管理和利用这些数据,成为企业面临的一大挑战。数据库作为数据存储和管理的核心系统,其性能、安全性、可用性和扩展性等特性直接影响到企业的…...
spark sql执行引擎原理及配置
如果我们想要给上层开发人员配置好一个统一的sql开发界面,让他们统一通过sql开发即可,可通过spark中的thriftserver服务实现,与hive中的thriftserver类似,配置好该服务后,上层通过db client或者代码中通过jdbc连接即可…...
【C语言基础】:自定义类型(二) -->联合和枚举
文章目录 一、联合体1.1 联合体类型的声明1.2 联合体的特点1.3 相同成员的结构体和联合体对比1.4 联合体大小的计算1.5 联合体练习 二、枚举类型2.1 枚举类型的声明2.2 枚举的优点 书山有路勤为径,学海无涯苦作舟。 创作不易,宝子们!如果这篇…...
【授时防火墙】GPS北斗卫星授时信号安全防护装置系统
【授时防火墙】GPS北斗卫星授时信号安全防护装置系统 【授时防火墙】GPS北斗卫星授时信号安全防护装置系统 1、装置概述 卫星信号安全防护装置(以下简称“防护装置”)是一款专门针对卫星导航授时安全的设备。该设备能接收 BD 系统和 GPS 系统卫星信号&am…...
关于 MySQL 优化(详解)
文章目录 关于 MySQL 优化一、硬件方面的优化1、关于 CPU2、关于内存3、关于磁盘 二、MySQL 配置文件1、 default-time-zone8:002、interactive_timeout 1203、wait_timeout 1204、open_files_limit 102405、group_concat_max_len 1024006、usermysql7、character-set-serv…...
Hive详解(5)
Hive 窗口函数 案例 需求:连续三天登陆的用户数据 步骤: -- 建表 create table logins (username string,log_date string ) row format delimited fields terminated by ; -- 加载数据 load data local inpath /opt/hive_data/login into table log…...
阿里云效codeup如何执行github flow工作流
在阿里云效中执行 GitHub 工作流,实质上是在使用 Git 进行版本控制的过程中遵循 GitHub Flow 的原则。GitHub Flow 是一种简洁高效的工作流程,特别适用于追求快速迭代的团队。下面是在阿里云效中执行 GitHub 工作流的基本步骤: 1. 准备工作 …...
node.js的模块化 与 CommonJS规范
一、node.js的模块化 (1)什么是模块化? 将一个复杂的程序文件依据一定的规则拆分成为多个文件的过程就是模块化 在node.js中,模块化是指把一个大文件拆分成独立并且相互依赖的多个小模块,将每个js文件被认为单独的一个模块;模块…...
RK3588平台开发系列讲解(PWM开发篇)
目录 前⾔ 驱动文件 DTS 节点配置 PWM 流程 PWM 使⽤ 常⻅问题 PWM 在 U-Boot 与 kernel 之间的衔接问题 PWM Regulator 时 PWM pin 脚上下拉配置问题 前⾔ 脉宽调制( PWM , Pulse Width Modulation )功能在嵌⼊式系统中是⾮常常⻅的…...
宝塔面板操作一个服务器域名部署多个网站
此处记录IP一样,端口不一样的操作方式: 宝塔面板操作: 1、创建第一个网站: 网站名用IP地址,默认80端口。 创建好后,直接IP访问就可以了。看到自带的默认首页 2、接下来部署第二个网站: 仍然是…...
surfer绘制等值线图
surfer介绍 Surfer软件,是美国Golden Software公司编制的一款以画三维图的软件。该软件具有强大的插值功能和绘制图件能力,可用来处理XYZ数据,是地质工作者常用的专业成图软件(来源于百度百科)。 surfer可以用来绘制…...
wordpress 大图主题/网站制作app
Rational Jazz Team Serve这个IBM的项目管理工具貌似很强大。但是从2.0升级到3.0后配置方式有所不同,总结一下: 1、离线安装版本需要自己下载IBM Installation Manager。 2、Linux需要设置BROWSER导出变量。 3、由于java安装的问题,需要修改i…...
北京网站建公司新闻/站外推广方式
考虑到有时需要由速度时程计算加速度时程,或者由位移时程计算速度时程,采用Matlab编写了由速度时程计算加速度时程函数,采用了五点中心差分方法。函数说明如下:%% Main information% Developed by Decaihfut 2014/11/15% Calcula…...
锦州网站优化/百度产品推广
中新网1月28日电 哪个城市春节迁徙人口最多?春运期间最易拥堵的高速路段有哪些?人们春运出行最爱去哪里?近日,百度地图联合交通运输部科学研究院综合交通大数据应用技术行业重点实验室、 KuWeather、易到用车撰写发布《2019年春运…...
织梦可以做视频网站么/企业宣传方式有哪些
最近在优化公司CRM报表系统时发现一个有趣的问题。对学校分组聚合统计后,一旦查询的范围超过一定时长,这个SQL的执行耗时就和原来差10倍以上。线上数据差不多几百万。下面给出一个脱敏后的表结构和存储过程用来模拟。模拟的截图均出自我的虚拟机(2核2G内…...
做网站一般把宽度做多少/全媒体运营师培训
FPGA学习笔记 1. FPGA实现千兆以太网_数据链路层(MAC) 数据链路层(MAC) 通过物理网络链路,提供数据传输。不同的数据链路层定义了不同的网络和协议特征,其中包括物理编址,网络拓扑结构,错误校验,数据帧序列以及流控&…...
公司管理系统有哪些/宁波seo如何做推广平台
网上各种配置方法,用的都是他们私人的源地址,我不喜欢用人家的,用自己的多舒服呢。 [Docker 1.1] - CentOS7配置Docker阿里镜像源-图文教程1. 获取阿里云个人镜像源加速器地址1.1 进入阿里云-容器镜像服务1.2 设置 Registry 密码1.3 获取个人…...