標籤:new str 表示 idt 截取 16px use img alt
redis的list是一個雙向鏈表,既可以用作棧,也可以用作隊列,幸好大學學過資料結構,還有印象。
棧:先進後出,隊列:先進先出
redis鏈表操作:
應用情境學習list鏈表:要擷取最新的10個登入使用者資訊, 如果用sql的話:select * from user order by logintime desc limit 10; 但是資料量大的話,這一條sql下去,這個表全部的資料都要收到影響,對資料庫的負載比較高,必要情況還需要給關鍵字段(id或者logintime)設定索引,過多設定索引也是比較耗費系統資源的。
現在用redis的list來實現:只在list中保留5個資料,每次添加一個新的資料就刪除一箇舊的資料。每次都可以從鏈表中直接擷取到需要的資料,極大的節省了各方面的資源。
1,啟動redis的操作終端,切換到第二個資料庫,該資料庫為空白:
,
2,lpush操作:執行命令lpush(l就是left的簡寫)命令向鏈表中添加5條資料,鏈表命名為 newlogin,表示新登入的使用者,可以用type newlogin來查看newlogin的類型。
現在redis的第二個資料庫裡就有一個key 是 newlogin 的鏈表,裡邊依次儲存了xiaoming、jack、jim、zhangsan、lisi 五條資料。
3,rpop操作:現在要再添加一條新資料,就從鏈表尾部刪除一條資料,添加一個xiaoli,同時執行rpop(r是right的簡寫)從尾部刪除第一個添加進去的資料(xiaoming):
4,llen、lrange操作:llen newlogin返回list的長度。lrange newlogin 0 4返回list對應範圍的元素,如果最大下標超過了list的長度,也是返回所有的元素。
rpush是從尾部添加一個元素,lpop是從頭部刪除一個元素,rpush和lpop配合使用;lpush和rpop配合使用。
5,ltrim操作:截取list中的一部分元素:
redis的 list