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 ...
随机推荐
- jdk1.8学习、jdk1.9学习、jdk10.0学习和总结
由于中文参考资料很少,参考链接: https://www.oschina.net/translate/109-new-features-in-jdk-10 http://chuansong.me/n/ ...
- CentOS6.9安装HDFS
1.安装依赖包 yum install -y gcc openssh-clients 2.升级glib2.14 升级glibc-2.14用到的rpm 下载地址:https://pan.baidu.co ...
- [转] Javascript 原型链
1. 类 在C或者Java里,int a;定义了一个int类型的变量a.其中int是类型的名字,a是具体的变量. Javascript 模仿自 Java, 有一部分面向对象编程的部分.在面向对象的编程 ...
- 最小生成树模板【kruskal & prim】
CDOJ 1966 Kruskal 解法 时间复杂度O(mlogm) m为边数,这里主要是边排序占时间,后面并查集还好 #include <cstdio> #include <cst ...
- Python hasattr,getattr,setattr,delattr
#!/usr/bin/env python # -*- coding:utf-8 -*- # 作者:Presley # 邮箱:1209989516@qq.com # 时间:2018-11-04 # 反 ...
- Docker 二进制安装docker
https://blog.csdn.net/bruce_yds/article/details/80035714
- 关于appium-doctor运行时提示不是内部或外部的命令
1.一定要单独配置android_home (我之前是直接将D:\SDK\platform-tools;D:\SDK\tools;加到path里面会导致appnium-doctor运行时失败,原因为A ...
- 修改注册表.exe的文件目录
文件打开方式不能选择默认打开文件 cmd >regedit 以sublime_text为例 HKEY_CLASSES_ROOT/Applications/sublime_text.exe/she ...
- 2018牛客网暑假ACM多校训练赛(第四场)C Chiaki Sequence Reloaded (组合+计数) 或 数位dp
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round4-C.html 题目传送门 - https://www.no ...
- 查出了a表,然后对a表进行自查询,a表的别名t1,t2如同两张表,因为t1,t2查询的条件不一样,真的如同两张表,关联两张表,可以将两行或者多行数据合并成一行,不必使用wm_concat()函数。为了将t2表的数据全部查出来使用了右连接。
with a as( select nsr.zgswj_dm, count(distinct nsr.djxh) cnt, 1 z from hx_fp.fp_ly fp, hx_dj.dj_nsrx ...