標籤:
Redis之lists類型以及操作
list是一個鏈表結構,主要功能是push、pop,擷取一個範圍的所有值等等。操作中key理解為鏈表的名字。Redis的list類型其實就是一個每個子項目都是string類型的雙向鏈表。可以通過push、pop操作從鏈表的頭部或者尾部添加刪除元素,這樣list既可以作為棧,也可以作為隊列。
棧和隊列的特性 棧:先進後出;隊列:先進先出。
1. lpush 為鏈表的頭部添加字串元素
格式: lpush mylist1 "allen"
含義:在鏈表mylist1中,從頭部添加一個元素allen
2. lrange 列出鏈表中的元素
格式: lrange mylist1 0 -1
含義: 列出鏈表mylist1中,從第一個到最後一個元素。0,表示從頭開始的第一個元素。-1,表示尾部的第一個元素,整個的意思就是從頭取到尾。
3. rpush 從尾部壓入元素
格式: rpush mylist1 “age”
含義: 為鏈表mylist1,從尾部壓入一個元素age。
ps:切記一點,指向頭的方向為前。
4. lset 設定list中指定下標的元素值。
格式: lset mylist1 0 “frank”
含義: 為鏈表mylist1,下標為0的元素,值修改為frank。
注意: 下標是從頭開始的。成功返回OK,下標不存在:(error) ERR index out of range
5. lrem 從鏈表中刪除N個和給定值一樣的元素。
格式: lrem mylist1 2 allen
含義: 從鏈表mylist1中,刪掉2個值為allen的元素。
注意: 是從頭部依次往下刪除的。刪除成功:返回刪除掉的個數;刪除失敗返回0。
注意的注意: 如果n小於0,表示從尾部開始刪除;n=0,代表全部刪除。
6. ltrim 保留指定key的值範圍內的資料。
格式: ltrim mylist1 1 2
含義: 保留鏈表mylist1中下標1到下標2之間的所有元素,這個區間之外的元素都刪掉了。
注意: 這是保留其中的資料,不在其中的就會刪掉。刪除成功返回OK。如果下標不存在,就會把整個鏈表清空。
7. lpop 從頭部彈出一個元素
格式: lpop mylist1
含義: 從鏈表mylist1的頭部彈出一個元素。傳回值是彈出元素的值。
8. rpop 從尾部彈出一個元素
格式: rpop mylist1
含義: 從鏈表mylist1的尾部彈出一個元素。傳回值是彈出元素的值。
9. rpoplpush 從第一個list的尾部彈出一個元素,然後添加到第二個list的頭部。
格式: rpoplpush mylist1 mylist2
含義: 從鏈表mylist1的尾部彈出一個元素,然後添加到第二個鏈表mylist2的頭部。
舉例:
127.0.0.1:6379> LRANGE mylist1 0 -1
1) "age"
2) "allen"
127.0.0.1:6379> LRANGE mylist2 0 -1
1) "sex"
127.0.0.1:6379> rpoplpush mylist1 mylist2
"allen"
127.0.0.1:6379> LRANGE mylist1 0 -1
1) "age"
127.0.0.1:6379> LRANGE mylist2 0 -1
1) "allen"
2) "sex"
由例子同時可以知道,傳回值是彈出的那個值。
10. lindex 指定下標,返回對應的元素。
格式: lindex mylist2 2
含義: 把鏈表2中下標為2的元素返回。
11. llen 返回鏈表中元素的個數。
格式: llen mylist2
含義: 查看鏈表mylist2中的元素個數。
學PHP的小螞蟻 原創部落格 http://my.oschina.net/woshixiaomayi/blog
小螞蟻學習Redis筆記(5)——Redis資料類型之list類型