Redis list链表类型

list类型其实就是一个双向链表。通过push,pop操作从链表的头部或者尾部添加删除元素。这使得list既可以用作(上进上出),也可以用作队列(上进下出)。

list类型操作:

Ipush key string在key对应list的头部添加字符串元素
rpop key从list的尾部删除元素,并返回删除元素
rpush key string在key对应list的尾部添加字符串元素
Ipop key从list的头部删除元素,并返回删除元素
llen key 返回 key对应list的长度,key不存在返回0,如果key对应类型不是list返回错误
Irange key start end返回指定区间内的元素,下标从0开始
Itrim key start end截取list,保留指定区间内元素

该list链表类型应用场合:

例:获得最新的5个登录用户信息:select * from user order by logintime desc limit 5;

以上sql语句可以实现用户需求,但是数据多的时候,全部数据都要受到影响,对数据库的负载比较高。必要情况还需要给关键字段(id或logintime)设置索引,索引也比较耗费系统资源。如果通过list链表实现以上功能,可以在list链表中只保留最新的5个数据,每进来一个新数据就删除一个旧数据,每次就可以从链表中直接获得需要的数据。极大节省各方面资源消耗。

设置一个list链表key login,内部有5个元素:

127.0.0.1:6379[1]> keys *
(empty list or set)
127.0.0.1:6379[1]> lpush login xiaoming
(integer) 1
127.0.0.1:6379[1]> lpush login liqiang
(integer) 2
127.0.0.1:6379[1]> lpush login wangkai
(integer) 3
127.0.0.1:6379[1]> lpush login zhanghua
(integer) 4
127.0.0.1:6379[1]> lpush login baifei
(integer) 5
127.0.0.1:6379[1]> keys *
1) "login"
127.0.0.1:6379[1]> 

该链表每增加一个新元素,就删除一个旧元素,并且通过范围查找链表内部的全部元素信息:

127.0.0.1:6379[1]> lpush login lihong
(integer) 6
127.0.0.1:6379[1]> rpop login
"xiaoming"
127.0.0.1:6379[1]> lrange login 0 4
1) "lihong"
2) "baifei"
3) "zhanghua"
4) "wangkai"
5) "liqiang"
127.0.0.1:6379[1]> lpush login zhaoya
(integer) 6
127.0.0.1:6379[1]> rpop login 
"liqiang"
127.0.0.1:6379[1]> lrange login 0 100
1) "zhaoya"
2) "lihong"
3) "baifei"
4) "zhanghua"
5) "wangkai"
127.0.0.1:6379[1]> 

 截取list,保留指定区间内元素:

127.0.0.1:6379[1]> ltrim login 1 3
OK
127.0.0.1:6379[1]> llen login
(integer) 3
127.0.0.1:6379[1]> lrange login 0 100
1) "lihong"
2) "baifei"
3) "zhanghua"
127.0.0.1:6379[1]> 

转载请注明出处:BestEternity亲笔。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值