欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > 尚硅谷redis7 17redis10大类型之list

尚硅谷redis7 17redis10大类型之list

2025/5/30 11:59:19 来源:https://blog.csdn.net/feiyinjiu/article/details/148176275  浏览:    关键词:尚硅谷redis7 17redis10大类型之list

底层数据结构:

一个取端链表的结构,容量是2的32次方减1个元素,大概40多亿,主要功能有push/pop等,一般用在栈、队列、消息队列等场景。left、right都可以插入添加:

  • 如果键不存在,创建新的链表;
  • 如果键已存在,新增内容;
  • 如果值全移除,对应的键也就消失了。

 它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差。

lpush/rpush/lrange

lpush:从列表的左侧插入元素(头部插入)。

rpush:从列表的右侧插入元素(尾部插入)。

lrange:获取列表中指定区间的元素(索引从 0 开始,支持负数)。

LPUSH mylist "a"
LPUSH mylist "b"
LPUSH mylist "c"
// 得到["c", "b", "a"]

RPUSH mylist "1"
RPUSH mylist "2"
RPUSH mylist "3"
//得到["1", "2", "3"]

LRANGE mylist 0 -1  // 得到整个列表

注意:没有rrange

lpop/rpop 

lpop: 从左边(头部)弹出并返回列表的第一个元素。

LPUSH mylist "a" "b" "c"  # 列表变为 ["c", "b", "a"]
LPOP mylist               # 返回 "c"

 rpop:从右边(尾部)弹出并返回列表的最后一个元素。

RPUSH mylist "1" "2" "3"  # 列表变为 ["1", "2", "3"]
RPOP mylist               # 返回 "3"

lindex key index

按照索引下标获得元素【从上到下】

127. 0. 0. 1:6379> LRANGE list1 0 - 1
1) "4"
2) "3"
3) *2"
127.0. 0. 1: 6379> LINDEX list1 0

127. 0. 0. 1: 6379> LINDEX list1 2
"2"

llen

获取列表中元素的个数

llen list1 //返回3

lrem key 数字N 给定值v1

删除n个值等于v1的元素

从left往right删除2个值等于v1的元素,返回的值为实际删除的数量
LREM list3 0 给定值    表示删除全部给定的值。零个就是全部值

LREM list3 2 v1 //删除list3中2个值等于v1的元素

Itrim key 开始index 结束index

截取指定范围的值后再赋值给Key

127.0.0.1:6379> 1push list1 0 1 2 3 4 5 6 789
(integer) 10
127.0.0.1:6379> LRANGE list1 0 -1
1) "9"
2) "8"
3) "7"
4) "6"
5) "5"
6) "4"
7) "3"
8) "2"
9) "1"
10) "0"
127.0.0.1:6379:LTRIM list1 3 5
OK

127.0.0.1:6379:LTRIM list1 0 -1

1) "6"
2) "5"
3) "4"

rpoplpush 源列表 目的列表

从源列表右侧弹出一个元素,并 从左侧压入 目的列表返回弹出的元素

127.0. 0. 1:6379> LRANGE list1 0 - 1
1) "2"
2) "2"
3) *2"
4) 11"
127.0. 0. 1:6379> LRANGE list2 0 -1
1) "11"
2) "22"
3) "33"
4) "44"
5) "55"
127. 0. 0. 1: 6379> RPOPLPUSH list1 list2
"1"
127.0. 0. 1: 6379> LRANGE list1 0 - 1
1) "2"
2) "2"
3) "2"

Iset key index value

设置列表中指定索引位置的元素值

127.0. 0. 1:6379> LRANGE list1 0 - 1
1) "2"
2) "2"
3) "2"
127. 0. 0.1:6379> LSET list1 1 mysql
OK
127.0. 0.1:6379> LRANGE list1 0-1
1) "2"
2) "mysql"
3) "2"

Iinsert key befor/after 已有值 插入的新值

  • key:列表的 key(必须已存在)

  • BEFOREAFTER:表示将新值插入在已有值的前面或后面

RPUSH mylist "one" "two" "three"
LINSERT mylist BEFORE "two" "1.5"

// 列表变为 ["one", "1.5", "two", "three"]

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词