Redis五種數據類型之列表類型 Redis五種數據類型之列表類型。你可以存儲一個有序的字元串列表一類數據。比如你想展示你所存儲的所有文章中的前十條,當分頁取下一頁的時候,你也可以取接下來的十條。所以建議你維護一個文章ID的列表。其內部使用雙向鏈表實現,這意味著在你獲取一段頭部和尾部的數據是極快的, ...
Redis五種數據類型之列表類型
Redis五種數據類型之列表類型。你可以存儲一個有序的字元串列表一類數據。比如你想展示你所存儲的所有文章中的前十條,當分頁取下一頁的時候,你也可以取接下來的十條。所以建議你維護一個文章ID的列表。其內部使用雙向鏈表實現,這意味著在你獲取一段頭部和尾部的數據是極快的,但是在數據量大時獲取列表中間部分的數據稍慢。因為鏈表通過索引訪問數據。比如微信的朋友圈,我們關註的大部分只是最新的數據,所以這樣的場景很合適。同時,在插入數據時,也是在左右兩端插入,效率也不會受到影響。
下麵簡單介紹一下命令:
LPUSH Key Values..... 我們插入 3 4 5 6 7 8插入後 他們的結構應該是 8 7 6 5 4 3因為是一直向左插入嘛。
1.RPUSH自然就是向右插入。
2.LRANGE Key Start End命令,獲取指定key的開始到結束索引的值。索引從0開始。負數索引的話,最右側的元素是-1。如果說end小於start則返回空列表。0到-1的數據,自然就是最左側到最右側了。當然你也可以0-正值索引結束,返回的還是這幾個數據。
3.LPOP分別是從列表的最左側和最右側彈出一個元素,彈出也就是取出數據後從原列表移除掉了。Redis消息隊列也正是依據這樣的列表和彈出的原理。
4.LLEN Key獲取指定Key的集合長度。
5.LINDEX Key index 返回指定Key的指定索引位置的值。
6.LSET Key index val 替換指定索引(已存在的喲)位置的原有值。
如果你的索引值超過集合界限,那麼返回如下錯誤。如果你獲取超過索引範圍的值,那麼會返回nil
7.LTRIM key start end 刪除指定索引外的所有值。比如你想實現一個只展示最新TOP10條的新聞列表,那麼你就可以讓LPUSH和LTRIM配合一下了。每次在左側插入新數據後,都繼續執行LTRIM key 0 9。其他數據自然刪除了。
8.LINSERT 在指定Key的執行值(註意是值,不是索引)的前面BEFORE或者後面AFTER插入目標值。如果你存在重覆值,那麼會報Arguments衝突。
9.RPOPLPUSH 彈出右側元素,並且存到新的集合中。如果你需要迴圈利用一個集合中的數據,你也可以RPOPLPUSH sourceList sourceList。從源集合到源集合當中。
10.LREM,刪除指定Key中前多少個值為xxx的元素
有些命令你可能今天用不到,但是積累起來,相信有一天需求一齣現,你立馬能反應出來。