redis数据类型:
list链表类型
list类型其实就是一个双向链表。通过push,pop操作从链表的头部或者尾部添加删除元素。这使得list即可以用作栈,也可以用作队列。
该list链表类型应用场合:获得最新的5个登录用户信息:
select * from user order by logintime desc limit 5;
以上sql语句可以实现用户需求,但是数据多的时候,全部数据都要受到影响,对数据库的负载比较高,必要情况还需要给关键字段(id或logintime)设置索引,索引也比较耗费系统资源,如果通过list链表实现以上功能,可以在list链表中只保留最新的5个数据,每进来一个新数据就删除一个旧数据,每次就可以从链表中直接获得需要的数据,极大节省各方面资源消耗。
通过list链表保存登录系统的最新5个用户信息:
lpush向链表的头部放入数据
rpush向链表的尾部放入数据
lrange获取链表里面的数据
lpop在链表的左侧弹出第一个数据
rpop在链表的右侧弹出最后一个数据
一个实际的应用:获取最新登录的5个用户
先来选择索引为1号的数据库:
设置一个list链表,其key为newlogin,内部有目前较新的5个用户:
Jack xiaoming linken mary tom
又来一个用户,咱们这个列表只能保存5个用户,那该链表每增加一个新元素,就删除一个旧元素:
查看现在链表中的人员情况:
也可以下面这样查看:
再来一个新用户:
llen key:返回key对应list的长度,key不存在返回0,如果key对应类型不是list返回错误。
ltrim key start end:截取list,保留指定区间内的元素
上进上出:栈
上进下出:队列