redis:list列表类型的操作
1. list列表类型的操作
1.1. lpush/rpush key value [value ...] 链表的头部(左侧)或尾部(右侧)插入值
语法:lpush key value [value ...]
作用:把值插入到列表左侧
语法:rpush key value [value ...]
作用:把值插入到列表右侧
返回值:返回列表的长度
例:
127.0.0.1:6379> lpush animal cat
(integer) 1
127.0.0.1:6379> lpush animal dog
(integer) 2
127.0.0.1:6379> rpush animal monkey
(integer) 3
1.2. lpop/rpop key
语法:lpop key
语法:rpop key
作用:返回并删除列表元素
返回值:删除的元素
例:
127.0.0.1:6379> rpush word apple banana cat dog
(integer) 4
127.0.0.1:6379> lrange word 0 -1
1) "apple"
2) "banana"
3) "cat"
4) "dog"
127.0.0.1:6379> lpop word
"apple"
127.0.0.1:6379> lrange word 0 -1
1) "banana"
2) "cat"
3) "dog"
127.0.0.1:6379> rpop word
"dog"
127.0.0.1:6379> lrange word 0 -1
1) "banana"
2) "cat"
1.3. lrange key start stop
语法:lrange key start stop
作用:返回列表中[start,stop]中的元素
注:左侧从0开始;右侧从-1开始
例:查看列表中所有的元素
127.0.0.1:6379> lrange animal 0 -1
1) "dog"
2) "cat"
3) "monkey"
127.0.0.1:6379> lpush num 1 2 3 4
(integer) 4
127.0.0.1:6379> lrange num 0 -1
1) "4"
2) "3"
3) "2"
4) "1"
127.0.0.1:6379> lrange num 2 3
1) "2"
2) "1"
127.0.0.1:6379> lrange num -2 3
1) "2"
2) "1"
127.0.0.1:6379> lrange num -1 -3 #
(empty list or set)
127.0.0.1:6379> lrange num -3 -1
1) "3"
2) "2"
3) "1"
1.4. lrem key count value
语法:lrem key count value
作用:从key列表中删除value值(从左到右)
注:删除count的绝对值个value后结束
Count>0 从左侧删除
Count<0 从右侧删除
例:
127.0.0.1:6379> lpush answer a b c a b d a
(integer) 7
127.0.0.1:6379> lrange answer 0 -1
1) "a"
2) "b"
3) "c"
4) "a"
5) "b"
6) "d"
7) "a"
127.0.0.1:6379> lrem answer 1 b #删除第1个b
(integer) 1
127.0.0.1:6379> lrange answer 0 -1
1) "a"
2) "c"
3) "a"
4) "b"
5) "d"
6) "a"
127.0.0.1:6379> lrem answer -2 a #删除最后2个a
(integer) 2
127.0.0.1:6379> lrange answer 0 -1
1) "a"
2) "c"
3) "b"
4) "d"
1.5. Itrim key start stop
语法:ltrim key start stop
作用:剪切key对应的列表,切[start,stop]一段,并把该段重新赋给key
例:
127.0.0.1:6379> rpush word apple banana cat dog
(integer) 4
127.0.0.1:6379> lrange word 0 -1
1) "apple"
2) "banana"
3) "cat"
4) "dog"
127.0.0.1:6379> ltrim word 1 3
OK
127.0.0.1:6379> lrange word 0 -1
1) "banana"
2) "cat"
3) "dog"
127.0.0.1:6379> rpush word a b c d e f
(integer) 6
127.0.0.1:6379> ltrim word 1 -2
OK
127.0.0.1:6379> lrange word 0 -1
1) "b"
2) "c"
3) "d"
4) "e"
127.0.0.1:6379> ltrim word -1 2
OK
127.0.0.1:6379> lrange word 0 -1 #
(empty list or set)
1.6. lindex key index
语法:lindex key index
作用:返回Index索引上的值
例:
127.0.0.1:6379> rpush fruit apple banana ogange pear peach
(integer) 5
127.0.0.1:6379> lindex fruit 0
"apple"
127.0.0.1:6379> lindex fruit 1
"banana"
127.0.0.1:6379> lindex fruit -1
"peach"
1.7. llen key
语法:llen key
作用:计算列表的元素个数
例:
127.0.0.1:6379> rpush fruit apple banana ogange pear peach
(integer) 5
127.0.0.1:6379> llen fruit
(integer) 5
1.8. linsert key BEFORE|AFTER pivot value
语法:linsert key BEFORE|AFTER pivot value
作用:在key列表中寻找pivot,并在pivot值之前/之后插入value
插入成功返回列表的长度
如果找不到pivot,插入失败,返回-1
注:一旦找到一个pivot后,命令就结束了,因此不会插入多个value
例:
127.0.0.1:6379> rpush num 1 3 5 7
(integer) 4
127.0.0.1:6379> lrange num 0 -1
1) "1"
2) "3"
3) "5"
4) "7"
127.0.0.1:6379> linsert num before 3 2
(integer) 5
127.0.0.1:6379> lrange num 0 -1
1) "1"
2) "2"
3) "3"
4) "5"
5) "7"
127.0.0.1:6379> linsert num after 7 8
(integer) 6
127.0.0.1:6379> lrange num 0 -1
1) "1"
2) "2"
3) "3"
4) "5"
5) "7"
6) "8"
127.0.0.1:6379> linsert num after 20 21
(integer) -1
127.0.0.1:6379> linsert num after 8 8
(integer) 7
127.0.0.1:6379> lrange num 0 -1
1) "1"
2) "2"
3) "3"
4) "5"
5) "7"
6) "8"
7) "8"
127.0.0.1:6379> linsert num after 8 10
(integer) 8
127.0.0.1:6379> lrange num 0 -1
1) "1"
2) "2"
3) "3"
4) "5"
5) "7"
6) "8"
7) "10"
8) "8"
1.9. rpoplpush source destination
语法:rpoplpush source destination
作用:把source的尾部(右侧)拿出来,放在desinationt的头部(左侧),并返回该单元值
场景:task+bak 双列表完成安全队列
业务逻辑:
rpoplpush task bak
接收返回值,并做业务处理
如果成功,rpop bak清除任务,如果不成功,下次从bak表里取任务
注:此命令实现的功能,用rpop、lpush两个命令也能实现,但是此命令是一个原子操作,如果用两个命令来实现不够原子性(如:rpop成功,lpush失败就没有rpoplpush更安全)
127.0.0.1:6379> rpush task a b c d
(integer) 4
127.0.0.1:6379> rpoplpush task job
"d"
127.0.0.1:6379> lrange task 0 -1
1) "a"
2) "b"
3) "c"
127.0.0.1:6379> lrange job 0 -1
1) "d"
redis:list列表类型的操作的更多相关文章
- redis数据类型-列表类型
列表类型 列表类型(list)可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的某一个片段. 列表类型内部是使用双向链表(double linked list)实现的,所以向 ...
- Redis之列表类型命令
Redis 列表(List) Redis列表是简单的字符串列表,按照插入顺序排序.你可以添加一个元素到列表的头部(左边)或者尾部(右边) 一个列表最多可以包含 232 - 1 个元素 (4294967 ...
- redis:set集合类型的操作(无序集合)
1. set集合类型的操作(无序集合) 集合具有无序性(没有顺序).确定性(描述是确定的).唯一性(没有重复的元素) 1.1. sadd key member [member ...] 语法:sadd ...
- 三:redis的List类型相关操作
</pre><pre name="code" class="php" style="font-size: 14px;"&g ...
- redis:string字符串类型的操作
1. string字符串类型的操作: 1.1. set 设置单个值 语法:set key value [EX seconds] [PX milliseconds] [NX|XX] 注: EX seco ...
- [redis] redis 对string类型数据操作
package com.xwolf.java.redis; import org.junit.Before; import org.junit.Test; import redis.clients.j ...
- redis之(六)redis的列表类型的命令
[一]向列表两端添加元素 -->命令:LPUSH key value [value ...] -->向列表的左侧添加元素,返回值表示增加元素后列表的长度 -->命令:RPUSH ke ...
- 二:redis 的hash类型相关操作
=====================二种:hash类型================== 介绍:redis -> hash是一个string类型的field和value的映射表 hash ...
- 一:redis 的string类型 - 相关操作
*redisclient使用: =============一类:string的方法================ 介绍:string是redis的最简单类型,一个key相应一个value,strin ...
随机推荐
- 华为设备默认console密码
admin@huawei.com Admin@huawei.com Admin@huawei huawei.com huawei@123 huawei Change_Me
- 【第一部分】01Leetcode刷题
一.二叉树的中序遍历 题目:94. 二叉树的中序遍历.94. Binary Tree Inorder Traversal 解法一: class Solution { public: vector< ...
- PHP中self和this的用法区别
PHP支持类和面向对象结构,PHP的类的静态函数和变量不与任何特定类的实例相关联(换句话说,一个对象).请看:类与对象的区别. 相反,静态函数和变量与类定义本身相关联.换言之,一个类的所有实例都共享相 ...
- 使用JDBC连接ElasticSearch6.3(ElasticSearch SQL JDBC)
使用JDBC连接ElasticSearch6.3(ElasticSearch SQL JDBC) https://blog.csdn.net/scgaliguodong123_/article/det ...
- CAS5.3.X 配置备忘
## # 普通MD5用户jdbc验证 ## #配置数据库连接 cas.authn.jdbc.query[0].driverClass=com.mysql.cj.jdbc.Driver cas.auth ...
- SignalRMvc的简单例子
1.介绍 我们知道传统的http采用的是“拉模型”,也就是每次请求,每次断开这种短请求模式,这种场景下,client是老大,server就像一个小乌龟任人摆布,很显然,只有一方主动,这事情就没那么完美 ...
- [转] UniCode编码表
Unicode编码则是采用双字节16位来进行编号,可编65536字符,基本上包含了世界上所有的语言字符,它也就成为了全世界一种通用的编码,而且用十六进制4位表示一个编码,非常简结直观,为大多数开发者所 ...
- javascript 列表定时滚动效果
HTML结构: <div style="width:200px;height:100px;overflow:hidden;border:1px solid #ddd;margin:20 ...
- python linux 源码安装Twisted
下载:1.首先找到需要的包访问:https://pypi.org/在搜索框中输入你要查找的包名,然后点击搜索2.选择要下载的包的版本,点击download files3.选择file Type为sou ...
- java读写excel文件( POI解析Excel)
package com.zhx.base.utils; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi ...