一个redis服务器又可以被称作数据结构服务器,主要是它基本上都是用各种数据结构式的存储数据。本篇使用一个篇幅来说一个list也主要是因为它包含了数据结构中比较重要的两个概念:栈和队列。(其实主要是我大学时对栈和队列没学好的缘故啦)。
OK,为了表达清晰本篇的这两个数据结构概念,本文作者(就是我)请到了国际著名素描大师jeyson先生(还是我)为本文特意做的素描图,如下:
咱们默认都是从头那边出东西,栈式先进后出,队列式先进先出。嗯,接下来我再说头和尾,就按照图上的说法就可以了。
以下又到了ctrl+v的摘抄我的学习笔记了,嗯:
List:链表类型 push,pop操作,双向链表,可以操作头部也可以尾部(所以可以作为队列也可以做栈)
命令:
lpush mylist "jeyson" 向mylist中压入一个jeyson的元素(栈式压入)(从头部压入)
rpush mylist "jeyson" 向 mylist中压入一个jsyon的元素(队列式压入)(从尾部压入)
lpop mylist 从头部删除一个元素,并返回该删除的元素
rpop mylist 从尾部删除一个元素,并返回该删除的元素
lrange mylist 0 -1 获取链表中所有元素(从头部出来)
linsert mylist before "jeyson" "Kim" 往jeyson前面压一个元素Kim(在jeyson的靠头部位置,出来早)
linsert mylist after "jeyson" "Kim" 往jeyson后面压一个元素Kim(在jeyson的靠尾部位置,出来晚)
lset mylist 1 "sky" 将mylist中下标为1的元素替换为sky
lrem mylist n "key" 从mylist中删除n个和key相同的元素(从头部开始删,n=0删全部,n<0从尾部开始)
ltrim mylist 1 3 保留下标为1-3的元素,其余全删掉,全部是(0 -1)
rpoplpush mylist1 mylist2 从第一个链表的尾部删除一个元素把该元素压入第二个链表头部
lindex mylist1 2 获取mylist1中索引(下标)为2的元素
llen mylist 获取mylist中元素个数