四、Redis基礎命令--列表,redis基礎--列表

來源:互聯網
上載者:User

四、Redis基礎命令--列表,redis基礎--列表
1、清單類型內部是使用雙向鏈表(double linked list)實現的,所以想兩端添加元素特快,時間複雜度是O(1),擷取越接近兩端的元素速度越快。不過代價是通過索引訪問元素的速度會比較慢。
2、每個鍵最多能容納的欄位數量與列表相同都是 2^32 - 1 個元素。內部用來儲存欄位數量的變數類型應該是Integer,因為一個整形是4個位元組,每個位元組8位,剛好32位,最大數字就是 2^32-1 個(包括0)。
2.1、索引是從0開始
3、LPUSH key value 在隊列的左邊添加元素,返回隊列元素的長度。          127.0.0.1:6379> lpush list 123
               (integer) 3
          127.0.0.1:6379> lpush list 123
               (integer) 4     一次性添加多個元素     127.0.0.1:6379> LPUSH list 11 12 13
4、LRANGE key start end 返回隊列中[start ,end] 之間的元素,和素組一樣從0開始,包含end位。     如果start > end 則返回空列表          127.0.0.1:6379> LRANGE list 3  2
               (empty list or set)     如果end > LLEN key 則返回所有列表          127.0.0.1:6379> LLEN list               (integer) 4
          127.0.0.1:6379> LRANGE list 0 8
               1) "4"
               2) "3"
               3) "2"
               4) "1"     如果end=-1  LRANGE key 0 -1 返回所有列表         127.0.0.1:6379> LRANGE list 0 -1
               1) "4"
               2) "3"
               3) "2"
               4) "1"     倒序取資料,start end 都小於0          127.0.0.1:6379> LRANGE list 0 -1

1) "7"
2) "6"
3) "5"
4) "4"
5) "3"
6) "2"
7) "1"
         127.0.0.1:6379> LRANGE list -1 -1
               1) "1"
          127.0.0.1:6379> LRANGE list -2 -1
               1) "2"
               2) "1"

5、LLEN key 擷取列表的長度          127.0.0.1:6379> LLEN list               (integer) 4
6、RPUSH key value 在隊列的右邊添加元素,返回元素長度          127.0.0.1:6379> RPUSH list -1
               (integer) 5
127.0.0.1:6379> LRANGE list 0 -1
1) "4"
2) "3"
3) "2"
4) "1"
                5) "-1"
7、LPOP/RPOP 彈出左/右邊的元素
127.0.0.1:6379> LPOP list     "4"127.0.0.1:6379> LRANGE list 0 -1        1) "3"
2) "2"
3) "1"
4) "-1"
127.0.0.1:6379> RPOP list          "-1"127.0.0.1:6379> LRANGE list 0 -1
1) "3"
2) "2"
                3) "1"
8、LREM key count value 刪除 count 個值為value的元素          當count > 0 從左邊刪除count個值value的元素          當count<0  從右邊刪除 |count|  個值value的元素          當count = 0 刪除所有值為 value 的元素          127.0.0.1:6379> LRANGE list 0 -1
1) "1"
2) "1"
3) "1"
4) "1"
5) "1"
6) "3"
7) "2"
127.0.0.1:6379> LREM list 0 1     (integer) 5127.0.0.1:6379> LRANGE list 0 -1
                 1) "3"                 2) "2"
9、LSET key index value 在索引index處添加值value          127.0.0.1:6379> LRANGE list 0 -1
1) "13"
2) "12"
3) "11"
4) "7"
5) "6"
6) "5"
7) "4"
8) "3"
9) "2"
               10) "1"          127.0.0.1:6379> LSET list  3 8 9 10 不能同時設定多個值
          (error) ERR wrong number of arguments for 'lset' command  127.0.0.1:6379> LSET list  3 8            OK  127.0.0.1:6379> LRANGE list 0 -1
1) "13"
2) "12"
3) "11"
4) "8"
5) "6"
6) "5"
7) "4"
8) "3"
9) "2"
               10) "1"
10、LINDEX list 0根據索引擷取值          127.0.0.1:6379> LINDEX list 0               "13"
12、LTRIM key start end 移掉除(start,end)之外的資料。保留[start,end]資料,包括start,end     127.0.0.1:6379> LRANGE list 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
     127.0.0.1:6379> LTRIM list 1 3
               OK
     127.0.0.1:6379> LRANGE list 0 -1
1) "4"
2) "3"
                3) "2"
13、LINSET key BEFORE | AFTER pivot value 插入資料
127.0.0.1:6379> LRANGE list 0 -1
1) "4"
2) "3"
3) "2"
127.0.0.1:6379> LINSERT list before 4 5     (integer) 4127.0.0.1:6379> LRANGE list 0 -1
1) "5"
2) "4"
3) "3"
               4) "2"
127.0.0.1:6379> LINSERT list after 2 0     (integer) 5127.0.0.1:6379> LRANGE list 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
                5) "0"     如果有多個相同的pivot,則從左邊數第一個開始          127.0.0.1:6379> LRANGE list 0 -1
1) "4"
2) "5"
3) "4"
4) "3"
5) "2"
6) "0"
127.0.0.1:6379> LINSERT list after 4 3          (integer) 7127.0.0.1:6379> LRANGE list 0 -1        1) "4"
2) "3"
3) "5"
4) "4"
5) "3"
6) "2"
                7) "0"        BEFORE 也是從左邊第一個開始
127.0.0.1:6379> LINSERT list Before 3 9     (integer) 8127.0.0.1:6379> LRANGE list 0 -1
1) "4"
2) "9"
3) "3"
4) "5"
5) "4"
6) "3"
7) "2"
               8) "0"
14、RPOPLPUSH source destination --清單類型,將元素從一個列錶轉移到另一個列表         從source右邊彈出一個元素,再LPUSH到destination進去          RPOPLPUSH source destination     內部實現:          def rpoplpush( source , destination)               value = RPOP source               LPUSH destination value               return value

15、匯總          A、列表可以作為棧使用,LPUSH/LPOP 或者 RPUSH/RPOP     B、作為list使用,LPUSH/RPOP 或者 RPUSH/LPOP













相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.