一、介绍
list类型其实就是一个双向链表,通过push , pop 操作从链表的头部或者尾部添加或者删除元素,这就使得list既可以作用栈,也可以用作队列。
该list链表类型的应用场合:
获取最新的5个登录用户信息:select * from user order by logintime desc limit 5. 这个sql语句可以实现用户需求,但是数据多的时候,全部数据都要受影响,对数据库的负载比较高。必要情况下还需要给数据库字段添加索引(id 或者 logintime),索引也是比较耗费系统资源的。
如果通过list链表实现以上的功能,可以在list链表中只保留最新的5个数据,每进来一个新数据就删除一个旧的数据,这样就可以每次从list链表中获取最新的5个数据了,极大的减少了各方面的资源消耗。
二、操作
1. lpush key value 在链表的头部添加一个元素
现在我们需要添加5个新的登录用户,依次登录的用户是:Steven, Jack, Miles, Albert, Zach
2. rpop key 从链表的尾部删除一个元素
现在我们又有第6个用户Imo登录进来了,但是我们的需求是只保存最新登录的5个用户,那么先登录的用户Steven应该被删除掉。
3. lrange key start end 返回指定区间内的元素,下标从0开始
4. llen key 返回key对应的list的长度,key不存在返回0,如果key的对应类型不是list返回错误
5. rpush key value 在key对应的list链表的尾部添加元素
6. lpop key 从list链表的头部删除元素,并返回删除的元素
7. ltrim key start end 截取list,保留指定区间的元素