四、Redis基础命令--列表
来源:互联网 发布:匡恩网络 面试 编辑:程序博客网 时间:2024/06/06 04:27
1、列表类型内部是使用双向链表(double linked list)实现的,所以想两端添加元素特快,时间复杂度是O(1),获取越接近两端的元素速度越快。不过代价是通过索引访问元素的速度会比较慢。
127.0.0.1:6379> LRANGE list 0 8
1) "4"
2) "3"
3) "2"
4) "1"
2、每个键最多能容纳的字段数量与列表相同都是 2^32 - 1 个元素。内部用来存储字段数量的变量类型应该是Integer,因为一个整形是4个字节,每个字节8位,刚好32位,最大数字就是 2^32-1 个(包括0)。
2.1、索引是从0开始
3、LPUSH key value 在队列的左边添加元素,返回队列元素的长度。
127.0.0.1:6379> lpush list 123
(integer) 3
127.0.0.1:6379> lpush list 123
(integer) 4
(integer) 3
127.0.0.1:6379> lpush list 123
(integer) 4
一次性添加多个元素
127.0.0.1:6379> LPUSH list 11 12 13
4、LRANGE key start end 返回队列中[start ,end] 之间的元素,和素组一样从0开始,包含end位。
如果start > end 则返回空列表
127.0.0.1:6379> LRANGE list 3 2
(empty list or set)
(empty list or set)
如果end > LLEN key 则返回所有列表
127.0.0.1:6379> LLEN list
(integer) 4127.0.0.1:6379> LRANGE list 0 8
1) "4"
2) "3"
3) "2"
4) "1"
如果end=-1 LRANGE key 0 -1 返回所有列表
127.0.0.1:6379> LRANGE list 0 -1
1) "4"
2) "3"
3) "2"
4) "1"
1) "4"
2) "3"
3) "2"
4) "1"
倒序取数据,start end 都小于0
127.0.0.1:6379> LRANGE list 0 -1
1) "7"2) "6"3) "5"4) "4"5) "3"6) "2"7) "1"
127.0.0.1:6379> LRANGE list -1 -1
1) "1"
127.0.0.1:6379> LRANGE list -2 -1
1) "2"
2) "1"
1) "1"
127.0.0.1:6379> LRANGE list -2 -1
1) "2"
2) "1"
5、LLEN key 获取列表的长度
127.0.0.1:6379> LLEN list
(integer) 46、RPUSH key value 在队列的右边添加元素,返回元素长度
127.0.0.1:6379> RPUSH list -1
(integer) 5
(integer) 5
127.0.0.1:6379> LRANGE list 0 -1
1) "4"2) "3"3) "2"4) "1"
5) "-1"
7、LPOP/RPOP 弹出左/右边的元素
127.0.0.1:6379> LPOP list"4"127.0.0.1:6379> LRANGE list 0 -11) "3"
2) "2"3) "1"4) "-1"
127.0.0.1:6379> RPOP list"-1"127.0.0.1:6379> LRANGE list 0 -1
1) "3"2) "2"
3) "1"
8、LREM key count value 删除 count 个值为value的元素
当count > 0 从左边删除count个值value的元素
当count<0 从右边删除 |count| 个值value的元素
当count = 0 删除所有值为 value 的元素
127.0.0.1:6379> LRANGE list 0 -1
1) "1"2) "1"3) "1"4) "1"5) "1"6) "3"7) "2"
127.0.0.1:6379> LREM list 0 1(integer) 5127.0.0.1:6379> LRANGE list 0 -1
1) "3"
2) "2"9、LSET key index value 在索引index处添加值value
127.0.0.1:6379> LRANGE list 0 -1
1) "13"2) "12"3) "11"4) "7"5) "6"6) "5"7) "4"8) "3"9) "2"
10) "1"
127.0.0.1:6379> LSET list 3 8 9 10 不能同时设置多个值
(error) ERR wrong number of arguments for 'lset' command127.0.0.1:6379> LSET list 3 8OK127.0.0.1:6379> LRANGE list 0 -1
1) "13"2) "12"3) "11"4) "8"5) "6"6) "5"7) "4"8) "3"9) "2"
10) "1"
10、LINDEX list 0根据索引获取值
127.0.0.1:6379> LINDEX list 0
"13"12、LTRIM key start end 移掉除(start,end)之外的数据。保留[start,end]数据,包括start,end
127.0.0.1:6379> LRANGE list 0 -1
1) "5"2) "4"3) "3"4) "2"5) "1"
127.0.0.1:6379> LTRIM list 1 3
OK
127.0.0.1:6379> LRANGE list 0 -1
OK
127.0.0.1:6379> LRANGE list 0 -1
1) "4"2) "3"
3) "2"
13、LINSET key BEFORE | AFTER pivot value 插入数据
127.0.0.1:6379> LRANGE list 0 -1
1) "4"2) "3"3) "2"
127.0.0.1:6379> LINSERT list before 4 5(integer) 4127.0.0.1:6379> LRANGE list 0 -1
1) "5"2) "4"3) "3"
4) "2"
127.0.0.1:6379> LINSERT list after 2 0(integer) 5127.0.0.1:6379> LRANGE list 0 -1
1) "5"2) "4"3) "3"4) "2"
5) "0"
如果有多个相同的pivot,则从左边数第一个开始
127.0.0.1:6379> LRANGE list 0 -1
1) "4"2) "5"3) "4"4) "3"5) "2"6) "0"
127.0.0.1:6379> LINSERT list after 4 3(integer) 7127.0.0.1:6379> LRANGE list 0 -11) "4"
2) "3"3) "5"4) "4"5) "3"6) "2"
7) "0"
BEFORE 也是从左边第一个开始
127.0.0.1:6379> LINSERT list Before 3 9(integer) 8127.0.0.1:6379> LRANGE list 0 -1
1) "4"2) "9"3) "3"4) "5"5) "4"6) "3"7) "2"
8) "0"
14、RPOPLPUSH source destination --列表类型,将元素从一个列表转移到另一个列表
从source右边弹出一个元素,再LPUSH到destination进去
RPOPLPUSH source destination
内部实现:
def rpoplpush( source , destination)
value = RPOP source
LPUSH destination value
return value
15、汇总
A、列表可以作为栈使用,LPUSH/LPOP 或者 RPUSH/RPOP
B、作为list使用,LPUSH/RPOP 或者 RPUSH/LPOP
0 0
- 四、Redis基础命令--列表
- Redis从基础命令到实战之列表类型(List)
- redis学习笔记三之基础命令—列表
- Redis List 命令列表
- redis 命令列表
- Redis 列表命令
- Redis命令精要--列表
- redis学习笔记四之基础命令—set集合
- redis命令(四)
- redis命令(四)
- redis列表(list)命令
- Redis基础命令
- redis基础命令(上)
- redis基础命令(下)
- Redis基础命令
- redis 基础命令
- redis基础命令
- redis基础命令
- 深度学习论文理解1:what is the best multi-stage architecture for Object Recognition
- [每天一个知识点]5-影响项目成败的主要问题不是技术问题而是社会学问题
- 能让你成为更优秀程序员的10个C语言资源
- InputStream 、 InputStreamReader 、 BufferedReader三者的区别
- 打印1到最大的n位数
- 四、Redis基础命令--列表
- Javascript诞生记:C语言和Self语言一夜情的产物
- Uva 442 Matrix Chain Multiplication
- 开发者应该开始学习C++吗?
- 57段让编译器崩溃的C语言代码
- 五、Redis 基础命令---无序集合
- 网络爬虫技术浅析
- 第五届蓝桥杯之扑克序列
- VS对话框按钮贴图和Static控件自定义