標籤:redis 資料結構 list
redis中的list集合資料類型,是一種雙向鏈表的結構,list存在的元素是任意的string類型。那麼redis是如何管理和操作list集合資料的呢,下文將闡述redis list集合的基本文法使用:
1、添加/建立一個list對象
# 分為棧式和隊列兩種添加文法1:lpush [list集合] [元素] # 棧式添加元素,將list集合看成是一個棧類型,先進後出;範例:lpush list1 hello lpush list1 world闡述:遍曆集合結果為:world, hello;也就是先進後出文法2:rpush [list集合] [元素] # 隊列式添加元素,先進先出範例:rpush list2 hello rpush list2 world闡述:遍曆集合結果為:hello, world,先進先出,保持插入的順序
2、遍曆list集合元素
# 遍曆都是從頭部到尾部的過程文法:lrange [集合] [開始索引] [結束索引]範例:lrange list1 0 -1 # 結果為world,hello lrange list2 0 -1 # 結果為hello, world闡述:索引位置是從0開始,-1表示最後一個元素索引
3、擷取某個索引的集合元素
文法:lindex [list集合] [索引]範例:lindex list3 0 # 如果不存在,返回nil,否則返回該索引位置的元素
4、修改某個索引位置的集合元素
# 修改指定索引位置的元素文法:lset [list集合] [索引] [新元素]範例:lset list1 0 Hello lrange list1 0 -1 # 之前0的位置是world,現在變成Hello
5、擷取list集合的大小
文法:llen [list集合]範例:llen list1 # 返回集合大小,2
6、插入某個元素
#插入元素不是通過索引來完成的,而是通過指定某個元素值的前,後插入文法:linsert [list集合] [before | after] [元素] [待插入的元素]# 假設list4={‘hello‘,‘world‘,‘hello‘}範例:linsert list4 before hello wang1 linsert list4 after hello wang2闡述:list4集合中有兩個hello元素,每次僅僅匹配一個,從list開頭匹配。在執行before時,得到結果為{‘wang1‘,‘hello‘,‘world‘,‘hello‘};執行after時,{‘wang1‘,‘hello‘,‘wang2‘,‘world‘,‘hello‘}.
7、擷取某個區間的元素列表
# 截取結合指定索引區間的元素,區間外的元素刪除文法:ltrim [list集合] [開始索引] [結束索引]範例:ltrim list4 0 1 闡述:返回截取後的集合元素大小,遍曆結果為{‘wang1‘,‘hello‘}
8、輔助方法
文法:rpoplpush [list集合1] [list集合2]範例:rpoplpush list1 list2闡述:從尾部刪除list1中的一個元素,將其棧式插入到list2中,並返回list1刪除的元素。相當於執行rpop list1,lpush list2
9、整體結構分析
由於list結構是雙向鏈表結構,那麼充頭部插入或者從尾部差多都是OK的,lpush頭部插入、lpop頭部刪除、rpush尾部插入、rpop尾部刪除、lrange都是頭部到尾部的遍曆方式。
結構圖如下:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/48/67/wKiom1QHxWaiGmiEAADBLxhKA4Y187.jpg" title="redis.png" alt="wKiom1QHxWaiGmiEAADBLxhKA4Y187.jpg" />
本文出自 “java程式冥” 部落格,請務必保留此出處http://793404905.blog.51cto.com/6179428/1548586
[redis資料結構]之 list類型