Redis之list类型

文章目录

  • Redis之list类型
  • 1. 列表添加/弹出元素
  • 2. 查看列表
  • 3. 获取列表中元素的个数
  • 4. 删除列表中指定的值
  • 5. 获取/指定元素的值
  • 6. 向列表中插入元素
  • 7. 删除指定索引范围之外的所有元素
  • 8. 将元素从一个列表转移到另一个列表
  • 9. 应用场景
    • 9.1 队列
    • 9.2 类似微信上订阅公众号(或者喜欢的文章)

Redis之list类型

在这里插入图片描述

1. 列表添加/弹出元素

  • 向列表左边添加元素:LPUSH key value [value …]
  • 向列表右边添加元素:RPUSH key value [value…]
  • 从列表左边弹出元素:LPOP key
  • 从列表右边弹出元素:RPOP key
127.0.0.1:6379> lpush books C
(integer) 1
127.0.0.1:6379> lpush books C++ JAVA
(integer) 3
127.0.0.1:6379> lrange books 0 -1
1) "JAVA"
2) "C++"
3) "C"
127.0.0.1:6379> rpush books Python Golang
(integer) 5
127.0.0.1:6379> lrange books 0 -1
1) "JAVA"
2) "C++"
3) "C"
4) "Python"
5) "Golang"
127.0.0.1:6379> rpop books
"Golang"
127.0.0.1:6379> lrange books 0 -1
1) "JAVA"
2) "C++"
3) "C"
4) "Python"
127.0.0.1:6379> lpop books
"JAVA"
127.0.0.1:6379> lrange books 0 -1
1) "C++"
2) "C"
3) "Python"

2. 查看列表

LRANGE key start end
end为负数时候,-1是倒数第一个,-2是倒数第二个...

127.0.0.1:6379> lrange books 0 -1
1) "C++"
2) "C"
3) "Python"
127.0.0.1:6379> lrange books 0 -2
1) "C++"
2) "C"
127.0.0.1:6379> lrange books 0 1
1) "C++"
2) "C"
127.0.0.1:6379> lrange books 0 2
1) "C++"
2) "C"
3) "Python"
127.0.0.1:6379> lrange books 0 3
1) "C++"
2) "C"
3) "Python"

3. 获取列表中元素的个数

LLEN key

127.0.0.1:6379> lrange books 0 -1
1) "C++"
2) "C"
3) "Python"
127.0.0.1:6379> llen books
(integer) 3

4. 删除列表中指定的值

LREM key count value

  • count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
  • count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
  • count = 0 : 移除表中所有与 VALUE 相等的值。
127.0.0.1:6379> lrange books 0 -1
1) "C++"
2) "C"
3) "Python"
127.0.0.1:6379> rpush books Java C C Python
(integer) 7
127.0.0.1:6379> lrange books 0 -1
1) "C++"
2) "C"
3) "Python"
4) "Java"
5) "C"
6) "C"
7) "Python"
127.0.0.1:6379> lrem books 2 C
(integer) 2
127.0.0.1:6379> lrange books 0 -1
1) "C++"
2) "Python"
3) "Java"
4) "C"
5) "Python"
127.0.0.1:6379> lrem books 0 Python
(integer) 2
127.0.0.1:6379> lrange books 0 -1
1) "C++"
2) "Java"
3) "C"
127.0.0.1:6379> lpush books Java
(integer) 4
127.0.0.1:6379> lrange books 0 -1
1) "Java"
2) "C++"
3) "Java"
4) "C"
127.0.0.1:6379> lrem books -1 Java
(integer) 1
127.0.0.1:6379> lrange books 0 -1
1) "Java"
2) "C++"
3) "C"

5. 获取/指定元素的值

获取索引元素的值:LINDEX key index
指定索引元素的值:LSET key index value

127.0.0.1:6379> lrange books 0 -1
1) "Java"
2) "C++"
3) "C"
127.0.0.1:6379> lindex books 0
"Java"
127.0.0.1:6379> lindex books 1
"C++"
127.0.0.1:6379> lset books 1 Python
OK
127.0.0.1:6379> lindex books 1
"Python"
127.0.0.1:6379> lrange books 0 -1
1) "Java"
2) "Python"
3) "C"

6. 向列表中插入元素

LINSERT key BEFORE|AFTER pivot value

127.0.0.1:6379> lrange books 0 -1
1) "Java"
2) "Python"
3) "C"
127.0.0.1:6379> linsert books before C Golang
(integer) 4
127.0.0.1:6379> lrange books 0 -1
1) "Java"
2) "Python"
3) "Golang"
4) "C"
127.0.0.1:6379> linsert books after C Java
(integer) 5
127.0.0.1:6379> lrange books 0 -1
1) "Java"
2) "Python"
3) "Golang"
4) "C"
5) "Java"

7. 删除指定索引范围之外的所有元素

LTRIM key start end

127.0.0.1:6379> lrange books 0 -1
1) "Java"
2) "Python"
3) "Golang"
4) "C"
5) "Java"
127.0.0.1:6379> ltrim books 0 -2
OK
127.0.0.1:6379> lrange books 0 -1
1) "Java"
2) "Python"
3) "Golang"
4) "C"

8. 将元素从一个列表转移到另一个列表

RPOPLPUSH source destination

127.0.0.1:6379> rpoplpush books language
"C"
127.0.0.1:6379> lrange books 0 -1
1) "Java"
2) "Python"
3) "Golang"
127.0.0.1:6379> lrange language 0 -1
1) "C"
127.0.0.1:6379> rpoplpush books language
"Golang"
127.0.0.1:6379> lrange books 0 -1
1) "Java"
2) "Python"
127.0.0.1:6379> lrange language 0 -1
1) "Golang"
2) "C"

9. 应用场景

9.1 队列

使用LPUSH+RPOP或者RPOP+LPUSH可以模拟队列操作,具体请参考我之前博客

9.2 类似微信上订阅公众号(或者喜欢的文章)

看到喜欢的文章,对该订阅号点个关注,把该公众号主键放到list中去,然后点开订阅号,可以看到自己关注的所有的订阅号,也可以让一次显示10条。

具体的redis操作:

127.0.0.1:6379> lpush gzdyh:user1001 dyh1
(integer) 1
127.0.0.1:6379> lpush gzdyh:user1001 dyh2 dyh3
(integer) 3
127.0.0.1:6379> lrange gzdyh:user1001 0 -1
1) "dyh3"
2) "dyh2"
3) "dyh1"
127.0.0.1:6379> lrange gzdyh:user1001 0 10
1) "dyh3"
2) "dyh2"
3) "dyh1"

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

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

相关文章

【C++】unordered_map与unorder_set的封装(哈希桶)

文章目录 前言一、模板参数的改造二、模板的特例化操作三、仿函数的妙用四、unordered迭代器基本操作1.const迭代器注意&#xff1a;2.HashTable与HTIterator的冲突 五、迭代器的构造问题六、完整代码1.hash_bucket.h2.unordered_set.h3.unordered_map.h 前言 我们开辟一个指针…

Docker网络问题:容器无法访问外部网络

Docker网络问题&#xff1a;容器无法访问外部网络 &#x1f61f; Docker网络问题&#xff1a;容器无法访问外部网络 &#x1f61f;摘要 &#x1f914;引言 &#x1f310;正文 &#x1f913;为什么容器无法访问外部网络&#xff1f; &#x1f615;1. 网络配置错误2. 防火墙设置3…

二分类问题的解决利器:逻辑回归算法详解(一)

文章目录 &#x1f34b;引言&#x1f34b;逻辑回归的原理&#x1f34b;逻辑回归的应用场景&#x1f34b;逻辑回归的实现 &#x1f34b;引言 逻辑回归是机器学习领域中一种重要的分类算法&#xff0c;它常用于解决二分类问题。无论是垃圾邮件过滤、疾病诊断还是客户流失预测&…

中级职称评审论文重要吗?是不是必须要论文呢?

现在评中级职称职称对论文有什么要求&#xff1f;没有论文可以参与职称评审吗&#xff1f; 建筑中级职称怎么评&#xff1f;那自然是从多方面来考核人才是否具备了评中级工程师的能力&#xff0c;职称论文就是考核的标准之一。 甘建二告诉你&#xff0c;现在评职称论文是很重…

新增MariaDB数据库管理、支持多版本MySQL数据库共存,1Panel开源面板v1.6.0发布

2023年9月18日&#xff0c;现代化、开源的Linux服务器运维管理面板1Panel正式发布v1.6.0版本。 在这个版本中&#xff0c;1Panel新增MariaDB数据库管理&#xff1b;支持多版本MySQL数据库共存&#xff1b;支持定时备份系统快照和应用商店中已安装应用&#xff1b;支持为防火墙…

优维低代码实践:图片和搜索

优维低代码技术专栏&#xff0c;是一个全新的、技术为主的专栏&#xff0c;由优维技术委员会成员执笔&#xff0c;基于优维7年低代码技术研发及运维成果&#xff0c;主要介绍低代码相关的技术原理及架构逻辑&#xff0c;目的是给广大运维人提供一个技术交流与学习的平台。 优维…

字符串函数----篇章(1)

目录 补上章缺失的两道题 七.笔试题&#xff08;7&#xff09; 八.笔试题&#xff08;8&#xff09; 一.字符串函数 ( 1 )----strlen函数 二.字符串函数 ( 2 )----strcpy函数 2-1模拟实现strcpy 三.字符串函数 ( 3 )----strcmp函数 ​编辑 3-1模拟实现strcmp 四.字符串函…

phpstudy脚本编写 和sql注入编写

1.phpstudy编写 2.sql注入编写

C++之template可变模板参数应用总结(二百二十八)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

自动化测试:yaml结合ddt实现数据驱动!

在pythonunittestseleniumddt的框架中&#xff0c;数据驱动常见有以下几种方式实现&#xff1a; Csv/txtExcelYAML 本文主要给大家介绍测试数据存储在YAML文件中的使用场景。首先先来简单介绍一下YAML。 1. 什么是YAML 一种标记语言类似YAML&#xff0c;它实质上是一种通用…

vue若依前端项目搭建

1.项目搭建 首先进入到你需要创建的项目目录下面&#xff0c;然后输入命令vue create .创建项目 接下来选择手动搭建&#xff0c;然后把下面图片中的内容选上 再然后继续配置一些参数信息 接下来运行npm run serve项目就启动起来了 2.配置登录界面文件 首先修改src/router…

跟着官方学jnindk

安装及配置 NDK 和 CMake 如需为您的应用编译和调试原生代码&#xff0c;您需要以下组件&#xff1a; 1.Android 原生开发套件 (NDK)&#xff1a;这是一套可让您在 Android 应用中使用 C 和 C 代码的工具。 2.CMake&#xff1a;这是一款外部构建工具&#xff0c;可与…

C++之浅拷贝、深拷贝、拷贝构造函数、拷贝赋值运算符、自定义的深拷贝函数应用总结(二百二十九)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

四、数学建模之图与网络模型

1.定义 2.例题及软件代码求解 一、定义 1.图和网络是相关概念 &#xff08;1&#xff09;图&#xff08;Graph&#xff09;&#xff1a;图是数学和计算机科学中的一个抽象概念&#xff0c;它由一组节点&#xff08;顶点&#xff09;和连接这些节点的边组成。图可以是有向的&…

vector使用和模拟实现

&#x1f493;博主个人主页:不是笨小孩&#x1f440; ⏩专栏分类:数据结构与算法&#x1f440; C&#x1f440; 刷题专栏&#x1f440; C语言&#x1f440; &#x1f69a;代码仓库:笨小孩的代码库&#x1f440; ⏩社区&#xff1a;不是笨小孩&#x1f440; &#x1f339;欢迎大…

wx.getPrivacySetting 小程序隐私保护指引的使用(复制粘贴即用)

创建privacyPopup 组件 privacyPopup.js Component({properties: {},data: {wxPrivacyName: ,showAgreement: false},lifetimes: {attached() {this.init();}},methods: {async init() {if (isLogin()) {const userPrivacy await this.getPrivacy();this.setData({wxPrivacy…

C语言文件的相关操作

C语言中文件的相关操作 文件的打开 使用文件的打开函数需要引入这个头文件&#xff1a;#include <fcntl.h> open函数 int open(char const *pathname, int flags, mode_t mode) 功能&#xff1a;打开已有的文件或者创建新文件参数 pathname&#xff1a;文件路径名&…

Vue 使用vue-cli构建SPA项目(超详细)

目录 一、什么是vue-cli 二&#xff0c;构建SPA项目 三、 运行SPA项目 前言&#xff1a; 在我们搭建SPA项目时候&#xff0c;我们必须去检查我们是否搭建好NodeJS环境 cmd窗口输入以下指令&#xff1a;去检查 node -v npm -v 一、什么是vue-cli Vue CLI&#xff08;Vu…

控制台日志打印console的封装,加入美化、行显示与打印开关,支持node.js环境

控制台日志打印console的封装&#xff0c;加入美化、行显示与打印开关&#xff0c;支持node.js环境 为什么要写这个&#xff1f; 封装这个控制台日志打印工具&#xff0c;主要是在项目中自己做的SDK需要提供给其他开发人员使用&#xff0c;加入了日志美化和打印打开&#xff…

jq命令安装与使用

目录 一、简介二、下载及安装1.Linux 安装2.Windows 安装3.测试安装结果 三、jq用法1.基本语法2.常见用法1&#xff09;格式化 JSON2&#xff09;获取属性3&#xff09;属性不存在情况处理4&#xff09;数组遍历、截取、展开5&#xff09;管道、逗号、加号6&#xff09;数据构造…