Redis redis基本資料結構之List

2022-08-22 06:15:14 字數 2515 閱讀 9976

redis中的list資料結構是鏈表型的,類似於linkedlist。所以它的插入效率非常高,時間複雜度為o(1)。它的查詢效率較慢,時o(n)。

但其實redis內部,list結構又不是乙個簡單的鍊錶,因為linkedlist的每乙個節點都要儲存上乙個節點和下乙個節點的指標,相對來說比陣列型的列表更佔空間。在redis中,有一種壓縮列表的存在ziplist,它把少量的元素使用乙個連續的記憶體空間,就像時陣列一樣,可以節省記憶體,而list結構就是由多個這種ziplist串起來組成的,被稱為快速鍊錶quicklist。

當list結構中的最後乙個元素被刪除時,這個list也將被redis釋放。

從頭部加入元素:lpush listname value1

從尾部加入元素:rpush listname value1

獲取所有元素:lrange listname 0 -1  // 注意,需要遍歷列表,慎用。

刪除元素:lrem key_name count value

count 的值可以是以下幾種:

count > 0 : 從表頭開始向表尾搜尋,移除與 value 相等的元素,數量為 count 。

count < 0 : 從表尾開始向表頭搜尋,移除與 value 相等的元素,數量為 count 的絕對值。

count = 0 : 移除表中所有與 value 相等的值。

清空列表 ltrim listname 1 0:

從list頭部刪除元素,並返回該元素,lpop listname

從list尾部刪除元素,並返回該元素,rpop listname

返回元素個數llen listname:

返回指定下標的元素, lindex listname // 會遍歷整個列表,效率不高:

從上面的命令測試中,可以看出list結構支援在兩端新增和刪除元素,其實可以用來實現為佇列(先進先出)和棧(先進後出)的結構:

lpush和rpop 或者rpush和lpop的組合,就是乙個佇列的結構:

lpush和lpop或者rpush和rpop組合使用,就是乙個棧的資料結構:

然後編寫**:

}執行:

Opencv Python API 基本資料結構

本例使用python3.7 opencv環境配置方法 pip install numpy matplotlib 構造2 行 4列 全是0的uchar型別的二維陣列import numpy as np z np.zeros 2 4 np.uint8 type z zarray 0,0,0,0 0,0,...

python基本數 python基本資料型別

1.數字 int 數字又分整型和浮點型,在python中宣告變數是不用宣告所以自己就會識別 a 10 整型 a1 1.24 浮點型 支援科學計數法,將10用e來代替 2.字串 str 在python中用引號引起來的就是字串,而且單引號和雙引號並沒有什麼區別 a string a1 string a2...

mysql 基本資料型別 MySQL基本資料型別

char 和 varchar 型別 char 型別用於定長字串,並且必須在圓括號內用乙個大小修飾符來定義。這個大小修飾符的範圍從 0 255。比指定長度大的值將被截短,而比指定長度小的值將會用空格作填補。char 型別可以使用 binary 修飾符。當用於比較運算時,這個修飾符使 char 以二進位...