Redis中LIST列表的相关命令
Redis中LIST列表的相关命令
添加
lpush
将一个或多个value插入到key的表头,如果存在多个value,那么各个value按从左到右的顺序依次插入表头
插入表头:意味着新插入的值在最前列
如果list之前不存在,则会创建一个新的list,如果list已存在,则追加,返回值是list的元素数量,也可以理解位最后插入的元素的相对位置
127.0.0.1:6379> lpush list2 zhangsan lisi wangwu
(integer) 3
127.0.0.1:6379>
rpush
和lpush功能一样,只不过是从从右往左插入(尾部)
语法:rpush key value1 value2 value3.....
rpush插入时value的顺序就是元素在list中的顺序
rpushx
在指定list的尾部插入元素,如果该list不存在,则操作无效
127.0.0.1:6379> rpush list4 hello
(integer) 1
127.0.0.1:6379> rpushx list5 hello
(integer) 0
lpushx
和rpushx一样,只不过是从头部插入
linsert
语法:linsert key before|alter value1 value2
在list中的value1元素之前或之后位置插入value2,如果value1不存在list key中,那么不执行任何操作
#在list2中的c元素之前插入一个new元素
127.0.0.1:6379> linsert list2 before c new
(integer) 7
127.0.0.1:6379> lrange list2 0 -1
1) "a"
2) "b"
3) "new"
4) "c"
5) "d"
6) "e"
7) "f"
修改
ltrim
对一个list进行裁剪,即让列表值保留指定期间的元素,其余删除
127.0.0.1:6379> lrange list2 0 -1
1) "chenqi"
2) "zhaoliu"
3) "wangwu"
4) "lisi"
127.0.0.1:6379> ltrim list2 -2 -1
OK
127.0.0.1:6379> lrange list2 0 -1
1) "wangwu"
2) "lisi"
127.0.0.1:6379>
lset
设置指定下标位置元素的值(把原来的值修改了),如果下标不存在则报错
127.0.0.1:6379> lset list2 2 redis
OK
127.0.0.1:6379> lrange list2 0 -1
1) "a"
2) "b"
3) "redis"
4) "c"
5) "d"
6) "e"
7) "f"
删除
rpop
从list的尾部弹出一个元素
127.0.0.1:6379> lrange list2 0 -1
1) "chenqi"
2) "zhaoliu"
3) "wangwu"
4) "lisi"
5) "zhangsan"
127.0.0.1:6379> rpop list2
"zhangsan"
127.0.0.1:6379> lrange list2 0 -1
1) "chenqi"
2) "zhaoliu"
3) "wangwu"
4) "lisi"
127.0.0.1:6379>
弹出的意思就是移除
lpop
从list的同步弹出一个元素
语法:lpop key
blpop
和lpop一样是弹出语句,不过是阻塞式列表弹出.
同样依次弹出list中的元素,但是如果list没有可供弹出的元素,那么这个操作(连接)将等待,直到list中有可供弹出的元素或者连接等待超时直接gg
127.0.0.1:6379> blpop list2 10
1) "list2"
2) "wangwu"
127.0.0.1:6379> blpop list2 10
1) "list2"
2) "lisi"
127.0.0.1:6379> blpop list2 10
(nil)
(10.09s) #超时
注意,这个
10代表操作超时时间,该命令返回两个结果,第一个是操作的list的key名称.第二个结果是弹出的具体元素
还有brpop,brpoplpush都是对应命令的阻塞版本
查询
lrange
返回列表key中指定区间之内的元素,区间偏移量start和stop指定,下标start和stop都是以0开始
注意,偏移量也可以是负数,-1表示列表的最后一个元素,-2表示列表的倒数第二个元素
127.0.0.1:6379> lrange list2 2 4
1) "wangwu"
2) "lisi"
3) "zhangsan"
在偏移量位负数的时候,我们应该把
list的顺序倒过来看
tip:lrange key 0 -1就是获取所有元素
在start位负数时,它的起点位置从后面开始数,所以说,start确定了值的时候,lrange可以输出的最大范围已经决定了,不管stop的值是什么,输出的元素范围绝对是start开始往后的元素最大范围.
所以Redis中的range相关命令其实最重要要看start参数的值,stop只是决定了尾部在哪里
在
lrange中,stop的值绝对不能在start的前面
lindex
返回list中指定下标的元素,0是开始下标,如果下标位负数,那么顺序从后往前,-1是开始位置也是列表中的最后元素
127.0.0.1:6379> lindex list2 -3
"zhaoliu"
127.0.0.1:6379> lindex list2 1
"zhaoliu"
考虑到下标可以负数,所以每个元素是有俩个下标代表位置
llen
返回列表的长度
语法:llen key
如果key不存在,则key被解释位一个空列表,返回0
那么,如果返回值是0,不一定是list内部元素为空,还有可能key不存在
特殊操作
rpoplpush
语法:rpoplpush key1 key2
从key1中的尾部弹出一个元素并插入到key2的头部
127.0.0.1:6379> rpush list2 a b c d e f g
(integer) 7
127.0.0.1:6379> rpoplpush list2 list3
"g"
127.0.0.1:6379> lrange list2 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
6) "f"
127.0.0.1:6379> lrange list3 0 -1
1) "g"
127.0.0.1:6379>
Redis中LIST列表的相关命令的更多相关文章
- Redis中有序列表(ZSet)相关命令
redis语序集合和集合set是一样内部value为string类型的集合,有序不允许重复元素 但是,zset的每个元素有一个double类型的分数(score).redis正是靠这个分数对元素从小到 ...
- Redis中String类型的相关命令操作
String append 如果key已存在,则直接在value追加值,如果key不存在,则会插件一个新的value为空的key,然后在追加 127.0.0.1:6379> set name l ...
- Redis中的原子操作(2)-redis中使用Lua脚本保证命令原子性
Redis 如何应对并发访问 使用 Lua 脚本 Redis 中如何使用 Lua 脚本 EVAL EVALSHA SCRIPT 命令 SCRIPT LOAD SCRIPT EXISTS SCRIPT ...
- Redis中的数据结构与常用命令
开发系统:Ubuntu 17.04Redis驱动:StackExchange.Redis 1.2.3Redis版本:3.2.1开发平台:.NET Core 对于Redis的介绍这里只写一句:Redis ...
- python学习(7)关于列表操作相关命令以及浅复制深复制
在python中,[]表示的是列表.列表有各种操作命令. 1.append()方法,添加一个元素到列表尾部. 注意append()方法与extend()方法有区别:list.append(object ...
- Redis散列(Hash)的相关命令
散列 就像一个减配的Redis 内部及其类似Java的Map 内容就是key:value结构 hash类型在面向对象编程的运用中及其适合,因为它可以直接保存编程语言中的实体类关系 增 hset hse ...
- 『学了就忘』Linux基础命令 — 37、Linux中挂载操作的相关命令
目录 1.mount命令介绍 (1)mount命令说明 (2)mount命令格式 2.mount命令示例 3.mount -a命令说明 4.-o特殊选项说明 5.exec/noexec选项说明 挂载就 ...
- Redis 中的原子操作(1)-Redis 中命令的原子性
Redis 如何应对并发访问 Redis 中处理并发的方案 原子性 Redis 的编程模型 Unix 中的 I/O 模型 thread-based architecture(基于线程的架构) even ...
- redis对键进行的相关操作
redis对键操作的相关命令以及如何在python使用这些命令 redis对键操作的命令: 命令 语法 概述 返回值 Redis DEL 命令 del key [key ...] 该命令用于在 key ...
随机推荐
- 算法-图(1)Dijkstra求最短路径
数组dist[],是当前求到的顶点v到顶点j的最短路径长度 数组path[]存放求到的最短路径,如path[4]=2,path[2]=3,path[3]=0,则路径{0,3,2,4}就是0到4的最短路 ...
- 如何加速github下载速度
第一步 魔法 第二步 git config --global http.proxy http://127.0.0.1:1080 git config --global https.proxy http ...
- 个人项目WC.exe Node.js+electron实现
前言 实现语言:Javascript 编译工具:webstorm GitHub:https://github.com/NPjuan/WC.git 项目要求 wc.exe 是一个常见的工具,它能统计文本 ...
- jQuery 事件操作
入口函数 使用$(document).ready(()=>{})作为jQuery入口函数,与window.onload(()=>{})类似,但它不会等待图片等外部资源的加载完毕,而是在HT ...
- 看视频常见的 720p、1080p、4k,这些分辨率到底包含了什么
从早期的420p,到后来的720p,到现在的非1080p不看.视频的清晰度飞快提升,但是在看到色彩越来越丰富清晰度越来越高的画面时,你有关注过他们的到底是怎么做到的么?我们一起来了解一下吧. 想必大家 ...
- 深入了解Redis(3)-对象
Redis主要的数据结构有简单动态字符串(SDS).双端链表.字典.压缩列表.整数集合,等等.但Redis并没有直接使用这些数据结构来实现键值对数据库, 而是基于这些数据结构创建了一个对象系统, 这个 ...
- seo成功案例的背后秘密
http://www.wocaoseo.com/thread-319-1-1.html 刚刚在seo群内一个企业主告诉我,他在淘宝找了做seo排名的,在交了首付后,对方却跑路了.对方刚刚在淘宝开店,然 ...
- py_冒泡排序
import random """ 排序:将一组无序记录序列调整为有序记录序列 列表排序:将无序列表调整为有序列表 输入:列表 输出:有序列表 升序与降序 内置函数sor ...
- Docker 私有镜像仓库的搭建及认证
DockerHub 为我们提供了很多官方镜像和个人上传的镜像,我们可以下载机构或个人提供的镜像,也可以上传我们自己的本地镜像,但缺点是: 由于网络的原因,从 DockerHub 下载和上传镜像速度可能 ...
- vue 中PDF实现在线浏览,禁止下载,打印
需求:在线浏览pdf文件,并且禁止掉用户下载打印的效果. 分析:普通的iframe.embed标签都只能实现在线浏览pdf的功能,无法禁止掉工具栏的下载打印功能.只能尝试使用插件,pdfobject. ...