LIST
自我感悟:
redis中的list,能够做的事情是非常多的,他能过做数组,也能做队列,还能做栈,也能做链表,其实本来就是线性表的集合,对于数据结构来说。能够理解此处的list,之前学习的数据结构思维是功不可没的,还是需要对数据结构进行深刻理解
-
增
- lpush(对list操作进行添加元素操作,这里就用的是栈的操作理解),先进后出,后进先出,并且这里添加之后对应的元素序号以及变换为数组下标之后是完全相反的,注意理解,不同的思考角度对应的理解是完全不同的
127.0.0.1:6379> lpush list01 jack (integer) 1 127.0.0.1:6379> lpush list01 queen (integer) 2 127.0.0.1:6379> lpush list02 king (integer) 1 127.0.0.1:6379> lpush list01 king (integer) 3 127.0.0.1:6379> lpush list01 ace (integer) 4
-
当然了,对于队列来说,你可以从左边进行添加元素,也可以从右边来对元素进行添加
-
这里可以使用 rpush(从右边开始添加),那么就和上面左边添加就完全相反了
-
127.0.0.1:6379> lrange list01 0 -1 1) "ace" 2) "king" 3) "queen" 4) "jack" 127.0.0.1:6379> rpush list04 jack (integer) 1 127.0.0.1:6379> rpush list04 queen (integer) 2 127.0.0.1:6379> rpush list04 king (integer) 3 127.0.0.1:6379> rpush list04 ace (integer) 4 127.0.0.1:6379> lrange list04 0 -1 1) "jack" 2) "queen" 3) "king" 4) "ace" 127.0.0.1:6379>
嵌合指令
rpoplpush 加上源List集合 添加到list集合中
127.0.0.1:6379> lrange list04 0 -1 1) "jack" 2) "queen" 3) "king" 127.0.0.1:6379> rpoplpush list04 list "king" 127.0.0.1:6379> lrange list04 0 -1 1) "jack" 2) "queen" 127.0.0.1:6379> lrange list 0 -1 1) "king" 2) "king" 3) "jocker" 4) "some" 5) "jocker" 6) "queen" 7) "jack"
-
lnsert key before\after 对应元素 对应值
如何进行操作理解还是非常必要的,这就也是需要进行图形化的理解,前后对应关系还是需要理解的
-
127.0.0.1:6379> linsert list before queen jocker (integer) 2 127.0.0.1:6379> linsert list after queen king (integer) 3 127.0.0.1:6379> lrange list 0 -1 1) "jocker" 2) "queen" 3) "king" 127.0.0.1:6379>
-
删
- lrem 删除其中元素自定义次数
127.0.0.1:6379> lrange list 0 -1 1) "jocker" 2) "wang" 3) "jocker" 4) "some" 5) "jocker" 6) "queen" 7) "jack" 127.0.0.1:6379> lrem list 2 jocker (integer) 2 127.0.0.1:6379> lrange list 0 -1 1) "wang" 2) "some" 3) "jocker" 4) "queen" 5) "jack"
-
改
- lset + 数组下标 更改的元素
127.0.0.1:6379> lset list 0 wang OK 127.0.0.1:6379> lrange list 0 -1 1) "wang" 2) "king" 3) "jocker" 4) "some" 5) "jocker" 6) "queen" 7) "jack"
-
查
- 查看当前list集合中的元素
lrange list 0 -1 和之前STRNG类型的查看是完全一致的,最后一个元素的下标是-1
127.0.0.1:6379> lrange list04 0 -1 1) "jack" 2) "queen" 3) "king" 4) "ace"
-
下标还是通过数组下表来进行理解喔,就是最后结尾需要注意
-
ltrim 将一个list集合中的元素截取出来后,进行显示
127.0.0.1:6379> lrange list04 0 -1 1) "jack" 2) "queen" 3) "king" 4) "ace" 127.0.0.1:6379> ltrim list04 0 2 OK 127.0.0.1:6379> lrange list04 0 -1 1) "jack" 2) "queen" 3) "king"
还有就是关于其他的小操作
lpoplist元素弹出操作理解:
将list集合中的元素从左边进行弹出操作理解,当然也存在rpop操作形式的理解
默认弹出是一个,左右方向不限制,你还可以进行自定义操作理解,也就是在后面选择弹出多少元素操作
127.0.0.1:6379> lpop list "wang" 127.0.0.1:6379> lpop list 2\ (error) ERR value is out of range, must be positive 127.0.0.1:6379> lpop list 2 1) "some" 2) "jocker" 127.0.0.1:6379> rpop list "jack" 127.0.0.1:6379> lrange list 0 -1 1) "queen" 127.0.0.1:6379>
be positive
127.0.0.1:6379> lpop list 2
1) "some"
2) "jocker"
127.0.0.1:6379> rpop list
"jack"
127.0.0.1:6379> lrange list 0 -1
1) "queen"
127.0.0.1:6379>
``