Redis學習筆記(五)——Redis常用命令入門——清單類型

來源:互聯網
上載者:User
四、清單類型

清單類型也是一個我們很長要用到的一個類型。比如我們發部落格,要用到部落格列表。如果沒有列表我們就只能遍曆鍵來擷取所有文章或一部分文章了,這個文法是keys,但是這個命令需要遍曆資料庫中的所有鍵,處於效能方面的考慮,在生產環境是不推薦使用的。

清單類型可以儲存一個有序的字串列表,常用的操作是向列表兩端添加、刪除、擷取元素,或者某個片段。在redis中,實際上是使用雙向列表的方式實現的,所以在列表兩端添加刪除元素的時間複雜度是O(1),擷取的元素越接近兩端,速度越快。但是通過索引訪問元素就會很慢,尤其是列表很長的時候。但是如果只是獲得隊列開頭或結尾的前多少個元素,這個就和隊列長度無關了。所以這裡隊列非常適合我們的評論功能,以及一些新鮮事等功能的開發,記錄日誌也很好用。

1、增加元素命令

向列表兩端添加元素: Shell redis>lpush key value [value ...] redis>rpush key value [value ...]

1 2 redis & gt ; lpush key value [ value . . . ] redis & gt ; rpush key value [ value . . . ]

這裡也很容易明白,lpush的l是left,向列表左邊添加元素,r自然就是right右邊的意思了。 Shell redis>lpush numbers 0 (integer) 1 redis>rpush numbers 1 (integer) 2 redis>lpush numbers -1 -2 (integer) 4

1 2 3 4 5 6 redis & gt ; lpush numbers 0 ( integer ) 1 redis & gt ; rpush numbers 1 ( integer ) 2 redis & gt ; lpush numbers - 1 - 2 ( integer ) 4

傳回值是列表的長度。這裡push的值可以是多個,但是有一點要說明一下。像是相面這樣左邊push了兩個值-1、-2,實際上現在列表的值是這樣排序的,-2、-1、0、1,所以就算是同時push多個,實際上也是一個一個插入列表的,只不過這些操作都會是原子的。

2、彈出元素命令 Shell redis>lpop key redis>rpop key

1 2 redis & gt ; lpop key redis & gt ; rpop key

這裡就很好理解了,分別是從左彈出,從右彈出,傳回值是彈出的值。(彈出的意思就是把值移除並傳回值)

綜合上面四條命令,可以實現棧和隊列了。

棧:lpush和lpop或者使用rpush和rpop。

隊列:lpush和rpop或者使用rpush和lpop。

3、擷取列表中元素的個數 Shell redis>llen key

1 redis & gt ; llen key

當鍵不存在是返回0,這個如果一路學下來都可以猜到了。這裡redis執行這條命令的時間複雜度是O(1),不像關係型資料庫中的O(N)。

4、擷取列表片段 Shell redis>lrange key start stop

1 redis & gt ; lrange key start stop

lrange命令比較常用,返回從start到stop的所有元素的列表,start和stop都是從0開始。 Shell redis>lrange numbers 0 2 1) "-2" 2) "-1" 3) "0"

1 2 3 4 redis & gt ; lrange numbers 0 2 1 ) "-2" 2 ) "-1" 3 ) "0"

lrange還支援負值索引,這裡是負值大家可以把負號加值直接理解成從從右數第多少個。

例如現在numbers的值是-2、-1、0、1,我們要是執行lrange numbers -2 -1,就會得到最後兩個值。還有lrange numbers 0 -1是我們常用的用來擷取全部列表的命令。

這裡有兩點要注意一下:

(1)如果start索引比stop索引位置靠後(這裡說的是位置,不是索引值的大小),則會返回空列表(empty list or set)。

(2)如果stop大於實際的索引範圍,則會返回列表最後變的元素。

5、刪除列表中指定值 Shell redis>lrem key count value

1 redis & gt ; lrem key count value

lrem命令會刪除列表中前count個值為value的元素,返回實際刪除的元素個數。實際count大小不同,執行方式不同。

(1)count > 0:從列表左邊開始刪除前count個值為value的元素

(2)count < 0:從右邊開始刪除

(3)count = 0:刪除所有

傳回值是刪除值的個數。

6、獲得/設定指定索引的元素值 Shell redis&gt;lindex key index redis&gt;lset key index value

1 2 redis & gt ; lindex key index redis & gt ; lset key index value

這裡應該很好理解了,特殊說明一下index如果是負值的話就是從右邊開始計算索引,和lrange的負值是一個意思。

7、只保留列表中指定的片段 Shell redis&gt;ltrim key start end

1 redis & gt ; ltrim key start end

這裡也不做特殊說明了。

8、向列表中插入元素
現在我們列表中的值是-2、-1、0、1 Shell

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.