redis資料結構之List

2021-08-15 03:24:08 字數 1598 閱讀 5498

在redis中,list型別是按照插入順序排序的字串鍊錶。和資料結構中的普通鍊錶一樣,我們可以在其頭部(left)和尾部(right)新增新的元素。在插入時,如果該鍵並不存在,redis將為該鍵建立乙個新的鍊錶。與此相反,如果鍊錶中所有的元素均被移除,那麼該鍵也將會被從資料庫中刪除。list中可以包含的最大元素數量是4294967295。從元素插入和刪除的效率視角來看,如果我們是在鍊錶的兩頭插入或刪除元素,這將會是非常高效的操作,即使鍊錶中已經儲存了百萬條記錄,該操作也可以在常量時間內完成。然而需要說明的是,如果元素插入或刪除操作是作用於鍊錶中間,那將會是非常低效的。相信對於有良好資料結構基礎的開發者而言,這一點並不難理解。

在指定的key所關聯的list的頭部插入所有的values,如果該key不存在,該命令在插入的之前建立乙個與該key關聯的空鍊錶,之後再向該鍊錶的頭部插入資料。插入成功,返回元素的個數。

在指定的元素前或者後插入元素

獲取鍊錶中從start到end的元素的值,start、end可為負數,若為-1則表示鍊錶尾部的元素,-2則表示倒數第二個,依次類推

僅當引數中指定的key存在時(如果與key管理的list中沒有值時,則該key是不存在的)在指定的key所關聯的list的頭部插入value

在該list的尾部新增元素

返回並彈出指定的key關聯的鍊錶中的第乙個元素,即頭部元素。

從尾部彈出元素。

將鍊錶中的尾部元素彈出並新增到頭部

返回指定的key關聯的鍊錶中的元素的數量。

設定鍊錶中的index的腳標的元素值,0代表鍊錶的頭元素,-1代表鍊錶的尾元素。

刪除count個值為value的元素,如果count大於0,從頭向尾遍歷並刪除count個值為value的元素,如果count小於0,則從尾向頭遍歷並刪除。如果count等於0,則刪除鍊錶中所有等於value的元素。

在pivot元素前或者後插入value這個元素。

/**

*list型別資料的api測試

*/@test

public void testlist()

//在鍊錶的中間插入新元素

// jedis.linsert("jedis-l-key-01", binaryclient.list_position.before,"lisi","田七");

// system.out

.println("插入新元素之後的鍊錶中的元素為:");

// listkeylist2 = jedis.lrange("jedis-l-key-01", 0, -1);

// for(string s:keylist2)

long count = jedis.lrem("jedis-l-key-01", 3, "zhangsan");

system.out

.println("成功刪除了:"+count+"個zhangsan");

listkeylist3 = jedis.lrange("jedis-l-key-01", 0, -1);

system.out

.println("建立的鍊錶中的元素為:");

for(string s:keylist3)

}

Redis資料結構之list

lpush rpush 從左邊 右邊插入乙個或多個值,類似推箱子。lpop rpop 從左邊 右邊吐出乙個值。值在鍵在,值光鍵亡 rpoplpush 從列表右邊吐出乙個值,插到列表左邊 lrange 按照索引下標獲得元素 從左到右 lindex 按照索引下標獲得元素 從左到右 llen 獲得列表長度...

Redis資料結構詳解之List(二)

1 redis中list列表的資料插入命令 lpush,rpush,linsert 127.0.0.1 6379 rpush mylist 1 結果為 integer 1 127.0.0.1 6379 rpush mylist 2 結果為 integer 2 127.0.0.1 6379 rpush...

Redis資料結構詳解之List(二)

思來想去感覺redis中的list沒什麼好寫的,如果單寫幾個命令的操作過於乏味,所以本篇最後我會根據redis中list資料型別的特殊屬性,同時對比成熟的訊息佇列產品rabbitmq,使用redis實現乙個訊息佇列。為啦讓本篇更有魅力,我再介紹下redis中list的基本屬性,以及為什麼使用redi...