redis学习笔记(四)
文章目录
- list(数组)
- (1)添加子成员
- (2)基于索引获取列表成员
- (3)获取列表的切片
- (4)获取列表的长度
- (5)按索引设置值
- (6)删除指定成员
list(数组)
队列,列表的子成员类型为string
lpush key value
rpush key value
linsert key after|before 指定元素 value
lindex key index
lrange key start stop
lset key index value
lrem key count value
127.0.0.1:6379> lpush names ww zs ls
(integer) 3
127.0.0.1:6379> type names
list
127.0.0.1:6379> lrange names 0 -1
1) "ls"
2) "zs"
3) "ww"
127.0.0.1:6379> rpush names a b c
(integer) 6
127.0.0.1:6379> lrange names 0 -1
1) "ls"
2) "zs"
3) "ww"
4) "a"
5) "b"
6) "c"
127.0.0.1:6379> lpush names x y
(integer) 8
127.0.0.1:6379> lrange names 0 -1
1) "y"
2) "x"
3) "ls"
4) "zs"
5) "ww"
6) "a"
7) "b"
8) "c"
(1)添加子成员
# 在左侧(前)添加一条或多条数据
lpush key value1 value2 ...
# 在右侧(后)添加一条或多条数据
rpush key value1 value2 ...# 在指定元素的左边(前)/右边(后)插入一个或多个数据
linsert key before 指定元素 value1 value2 ....
linsert key after 指定元素 value1 value2 ....
从键为brother的列表左侧添加一个或多个数据liubei、guanyu、zhangfei
lpush brother liubei
# [liubei]
lpush brother guanyu zhangfei xiaoming
# [xiaoming,zhangfei,guanyu,liubei]
从键为brother的列表右侧添加一个或多个数据,xiaohong,xiaobai,xiaohui
rpush brother xiaohong
# [xiaoming,zhangfei,guanyu,liubei,xiaohong]
rpush brother xiaobai xiaohui
# [xiaoming,zhangfei,guanyu,liubei,xiaohong,xiaobai,xiaohui]
从key=brother的xiaohong的列表位置左侧添加一个数据,xiaoA,xiaoB
linsert brother before xiaohong xiaoA
# [xiaoming,zhangfei,guanyu,liubei,xiaoA,xiaohong,xiaobai,xiaohui]
linsert brother before xiaohong xiaoB
# [xiaoming,zhangfei,guanyu,liubei,xiaoA,xiaoB,xiaohong,xiaobai,xiaohui]
从key=brother,key=xiaohong的列表位置右侧添加一个数据,xiaoC,xiaoD
linsert brother after xiaohong xiaoC
# [xiaoming,zhangfei,guanyu,liubei,xiaoA,xiaohong,xiaoC,xiaobai,xiaohui]
linsert brother after xiaohong xiaoD
# [xiaoming,zhangfei,guanyu,liubei,xiaoA,xiaohong,xiaoD,xiaoC,xiaobai,xiaohui]
注意:当列表如果存在多个成员值一致的情况下,默认只识别第一个。
127.0.0.1:6379> linsert brother before xiaoA xiaohong
# [xiaoming,zhangfei,guanyu,liubei,xiaohong,xiaoA,xiaohong,xiaoD,xiaoC,xiaobai,xiaohui]
127.0.0.1:6379> linsert brother before xiaohong xiaoE
# [xiaoming,zhangfei,guanyu,liubei,xiaoE,xiaohong,xiaoA,xiaohong,xiaoD,xiaoC,xiaobai,xiaohui]
127.0.0.1:6379> linsert brother after xiaohong xiaoF
# [xiaoming,zhangfei,guanyu,liubei,xiaoE,xiaohong,xiaoF,xiaoA,xiaohong,xiaoD,xiaoC,xiaobai,xiaohui]
(2)基于索引获取列表成员
根据指定的索引(下标)获取成员的值,负数下标从右边-1开始,逐个递减
lindex key index
获取brother下标为2以及-2的成员
del brother
lpush brother guanyu zhangfei xiaoming
lindex brother 2
# "guanyu"
lindex brother -2
# "zhangfei"
(3)获取列表的切片
闭区间[包括stop]
lrange key start stop
操作:
del brother
rpush brother liubei guanyu zhangfei xiaoming xaiohong
# 获取btother的全部成员
lrange brother 0 -1
# 获取brother的前2个成员
lrange brother 0 1
# 获取brother的后2个成员
lrange brother -2 -1
127.0.0.1:6379> linsert names after "y" 10
(integer) 9
127.0.0.1:6379> lrange names 0 -1
1) "y"
2) "10"
3) "x"
4) "ls"
5) "zs"
6) "ww"
7) "a"
8) "b"
9) "c"127.0.0.1:6379> linsert names before "y" 20
(integer) 10
127.0.0.1:6379> lrange names 0 -11) "20"2) "y"3) "10"4) "x"5) "ls"6) "zs"7) "ww"8) "a"9) "b"
10) "c"127.0.0.1:6379> lindex names 3
"x"
127.0.0.1:6379> lindex names 0
"20"
127.0.0.1:6379> lindex names -1
"c"127.0.0.1:6379> lrange names 0 1
1) "20"
2) "y"
127.0.0.1:6379> lrange names -2 -1
1) "b"
2) "c"
127.0.0.1:6379>
(4)获取列表的长度
llen key
获取brother列表的成员个数
llen brother
(5)按索引设置值
lset key index value
# 注意:
# redis的列表也有索引,从左往右,从0开始,逐一递增,第1个元素下标为0
# 索引可以是负数,表示尾部开始计数,如`-1`表示最后1个元素
修改键为brother的列表中下标为4的元素值为xiaohongmao
lset brother 4 xiaohonghong
(6)删除指定成员
移除并获取列表的第一个成员或最后一个成员
lpop key # 第一个成员出列
rpop key # 最后一个成员出列
获取并移除brother中的第一个成员
lpop brother
# 开发中往往使用rpush和lpop实现队列的数据结构->实现入列和出列
lrem key count value# 注意:
# count表示删除的数量,value表示要删除的成员。该命令默认表示将列表从左侧前count个value的元素移除
# count==0,表示删除列表所有值为value的成员
# count >0,表示删除列表左侧开始的前count个value成员
# count <0,表示删除列表右侧开始的前count个value成员del brother
rpush brother A B A C A
lrem brother 0 A
["B","C"]del brother
rpush brother A B A C A
lrem brother -2 A
["A","B","C"]del brother
rpush brother A B A C A
lrem brother 2 A
["B","C","A"]
127.0.0.1:6379> llen names
(integer) 10
127.0.0.1:6379> lset names 9 cc
OK
127.0.0.1:6379> lrange names 0 -11) "20"2) "y"3) "10"4) "x"5) "ls"6) "zs"7) "ww"8) "a"9) "b"
10) "cc"
127.0.0.1:6379> lpop names
"20"
127.0.0.1:6379> lrange names 0 -1
1) "y"
2) "10"
3) "x"
4) "ls"
5) "zs"
6) "ww"
7) "a"
8) "b"
9) "cc"127.0.0.1:6379> rpop names
"cc"
127.0.0.1:6379> lrange names 0 -1
1) "y"
2) "10"
3) "x"
4) "ls"
5) "zs"
6) "ww"
7) "a"
8) "b"
127.0.0.1:6379> rpush namaes x
(integer) 1
127.0.0.1:6379> lrange names 0 -1
1) "y"
2) "10"
3) "x"
4) "ls"
5) "zs"
6) "ww"
7) "a"
8) "b"
127.0.0.1:6379> rpush names x
(integer) 9
127.0.0.1:6379> lrange namaes 0 -1
1) "x"
127.0.0.1:6379> lrem names -1 x
(integer) 1
127.0.0.1:6379> lrange names 0 -1
1) "y"
2) "10"
3) "x"
4) "ls"
5) "zs"
6) "ww"
7) "a"
8) "b"
127.0.0.1:6379>
相关文章:
redis学习笔记(四)
文章目录 list(数组)(1)添加子成员(2)基于索引获取列表成员(3)获取列表的切片(4)获取列表的长度(5)按索引设置值(6&#x…...
-L和-rpath-link和-rpath
知识点 现代连接器在处理动态库时将链接时路径(Link-time path)和运行时路径(Run-time path)分开,用户可以通过-L指定连接时库的路径,通过-R(或-rpath)指定程序运行时库的路径,大大提…...
chatGPT小白快速入门培训课程-001
一、前言 本文是《chatGPT小白快速入门培训课程》的第001篇文章,全部内容采用chatGPT和chatGPT开源平替软件生成。完整内容大纲详见:《chatGPT小白快速入门课程大纲》。 本系列文章,参与: AIGC征文活动 #AIGC技术创作内容征文# …...
【Linux操作系统】深入理解Linux系统编程中的传入参数、传出参数和传入传出参数
在Linux系统编程中,函数的参数扮演着至关重要的角色。参数的传递方式可以分为传入参数、传出参数和传入传出参数。本文将详细解释这三种参数的概念、特点以及如何使用它们来实现灵活和高效的函数调用和数据传递。 文章目录 1. 解释和举例1.1 传入参数(i…...
(二)结构型模式:3、过滤器模式(Filter、Criteria Pattern)(C++示例)设计模式
目录 1、过滤器模式(Filter、Criteria Pattern)含义 2、过滤器模式应用场景 3、过滤器模式主要几个关键角色 4、C实现过滤器模式的示例 1、过滤器模式(Filter、Criteria Pattern)含义 (1)过滤器模式是…...
欧拉OS 使用 CentOS 7 yum repo
一、下载CentOS的repo的yum文件 任何基于CentOS的yum的repo 的url是这样的: 但欧拉OS输出这个变量为:openEuler 20.03 (LTS-SP3) 那明显欧拉想要使用这个yum的url找不到这个版本, 所以直接讲这个变量替换为 7, Centos 7的7 然后执行&…...
C进阶(1/7)——数据在内存中的存储
目录 前言: 一.数据类型介绍 类型基本归类: 整型家族: 浮点数家族: 构造类型: 指针类型: 空类型: 二.整型在内存中的存储 1.原码,反码,补码 2.大小端介绍 3.练…...
如何初始化Git仓库
如何将目录初始化为Git仓库 一级目录二级目录三级目录 一、准备1、安装 gh2、登录 二、初始化 Git 仓库 一级目录 二级目录 三级目录 一、准备 在这里,我们需要借助一个非常好用的工具,大家也可以参照官方文档进行阅读,下面介绍常用的…...
面试攻略,Java 基础面试 100 问(十三)
什么时候用 assert? assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。一般来说,assertion 用于保证程序最基本、关键的正确性。assertion 检查通常在开发和测试时开启。为了提高性能,在软件发布…...
将el-table中的展开列(expand)修改成slots自定义插槽
用过element-ui的有知道,展开这个箭头无法自定义,一点办法都没有,官方根本就没提供预留任何位置给你操作。 从下面图中,可以看到有两个插槽,默认插槽和表头插槽。 我们来扩展一个自定义插槽来实现我们想要的功能。…...
接入网概述
接入网概述 接入网基本概念接入网“最后一公里”解决方案数字用户线xDSL技术的发展与特点xDSL的局限性PON网络架构小结 接入网基本概念 在家里终端设备连接ONT然后进入接入网,这个接入网大概在2-20km左右,中间是通过光纤进行连接,是无源的&a…...
嵌入式要卷成下一个Java了吗?
不会! 说不会也是有自己的原因的 前几天写了一篇 Linux 和单片机的文章 不做Linux就没前途吗? 单片机容易,门槛低,无非不就是单片机技术知识点比较少,特别是面向过程式的编程也更容易掌握。嵌入式 Linux 是多任务式的&…...
项目中怎么做sql优化?
背景: 系统用着用着突然出现卡,数据加载慢。这个时候有可能是sql查询问题导致的。这个时候我们要怎么排查这个问题呢。如果排查后是sql问题的话我们应该怎么优化呢! 处理方案:第一步定位 可以开启MySQL的慢查询日志,设…...
第三章 图论 No.12欧拉回路与欧拉路径
文章目录 定义欧拉路径的性质:1123. 铲雪车边编号输出欧拉路径:1184. 欧拉回路点编号字典序最小输出欧拉路径:1124. 骑马修栅栏并查集判断有向图是否存在欧拉路径:1185. 单词游戏 定义 小学一笔画问题,每条边只经过一次…...
kubernetes(二)
文章目录 1. kubernetes常用资源1.1 deployment资源1.2 deployment升级和回滚1.3 tomcat连接mysql1.4 wordpress 2. kubernetes的附加组件2.1 kubernetes集群配置dns服务2.2 kubernetes的dns配置文件2.3 namespace命名空间2.4 kubernetes健康检查2.4.1 健康检查livenessprobo2.…...
MATLAB算法实战应用案例精讲-【深度学习】预训练模型ELECTRAPerformer
目录 ELECTRA 1.介绍 2.模型结构 2.1 Replaced Token Detection 2.2 权重共享 2.3 更小的生成器 3...
微服务05-Sentinel流量防卫兵
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以 流量 为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。 S…...
【考研数学】概率论与数理统计 | 第一章——随机事件与概率(1)
文章目录 一、随机试验与随机事件1.1 随机试验1.2 样本空间1.3 随机事件 二、事件的运算与关系2.1 事件的运算2.2 事件的关系2.3 事件运算的性质 三、概率的公理化定义与概率的基本性质3.1 概率的公理化定义3.2 概率的基本性质 写在最后 一、随机试验与随机事件 1.1 随机试验 …...
【设计模式】建造者模式
建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。 介绍 …...
网络安全---正则回溯
目录 一、题目引入 二、举出回溯例子进行分析 第一步: 正则往前匹配 第二步:匹配到头 第三步:往回匹配 第四步:直到分号结束 (匹配上) 原因: 三、进入正题一(分析题型&#…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
