Redis(五):List集合數據類型詳解

Redis列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)

一個列表最多可以包含 232 - 1 個元素 (4294967295, 每個列表超過40億個元素)。

實例:

redis 127.0.0.1:6379> LPUSH runoobkey redis
(integer) 1
redis 127.0.0.1:6379> LPUSH runoobkey mongodb
(integer) 2
redis 127.0.0.1:6379> LPUSH runoobkey mysql
(integer) 3
redis 127.0.0.1:6379> LRANGE runoobkey 0 101) "mysql"
2) "mongodb"
3) "redis"

在Redis中我們可以使List成為,棧、隊列、阻塞隊列!

1、List常用命令

1.1、LPUSH、LRANGE、RPUSH

127.0.0.1:6379> LPUSH list v1	//將一個或者多個的值插入到列表頭部(左)
(integer) 1
127.0.0.1:6379> LPUSH list v2
(integer) 2
127.0.0.1:6379> LPUSH list v3
(integer) 3
127.0.0.1:6379> RPUSH list v4r  //將一個或者多個的值插入到列表尾部(右)
(integer) 4
127.0.0.1:6379> LRANGE list 0 -1  //通過區間獲取list的值
1) "v3"
2) "v2"
3) "v1"
4) "v4r"//可以看出這個順序是:v3 v2 v1 v4r
127.0.0.1:6379> 

1.2、LPOP、RPOP

127.0.0.1:6379> LPOP list	//移除list第一個元素(左)
"v3"
127.0.0.1:6379> rPOP list	//移除list最后一個元素(右)
"v4r"
127.0.0.1:6379> LRANGE list 0 -1
1) "v2"
2) "v1"
127.0.0.1:6379> 

1.3、Lindex

127.0.0.1:6379> LINDEX list 0	//通過下標獲得list的某一個值
"v2"
127.0.0.1:6379> LINDEX list 1
"v1"

1.4、Llen

127.0.0.1:6379> LLEN list	//獲取list長度
(integer) 2

1.5、LREM

127.0.0.1:6379> LRANGE list 0 -1
1) "v4"
2) "v4"
3) "v3"
4) "v2"
5) "v1"
127.0.0.1:6379> LREM list 2 v4	//移除list中指定個數(2)的值(v4)
(integer) 2
127.0.0.1:6379> LRANGE list 0 -1
1) "v3"
2) "v2"
3) "v1"
127.0.0.1:6379> 

1.6、trim

127.0.0.1:6379> LRANGE list 0 -1
1) "v4"
2) "v3"
3) "v2"
4) "v1"
127.0.0.1:6379> LTRIM list 1 2	//將list在指定位置截取
OK
127.0.0.1:6379> LRANGE list 0 -1
1) "v3"
2) "v2"
127.0.0.1:6379> 

1.7、組合命令rpoplpush

127.0.0.1:6379> LRANGE list 0 -1
1) "v4"
2) "v3"
3) "v2"
4) "v1"
127.0.0.1:6379> rpoplpush list list2	//移除列表中最后一個元素到新的列表中
"v1"
127.0.0.1:6379> LRANGE list 0 -1
1) "v4"
2) "v3"
3) "v2"
127.0.0.1:6379> LRANGE list2 0 -1
1) "v1"
127.0.0.1:6379> 

1.8、lset

127.0.0.1:6379> EXISTS list2	//查詢列表是否存在
(integer) 1
127.0.0.1:6379> LRANGE list2 0 -1
1) "v1"
127.0.0.1:6379> LSET list2 0 vv	//替換列表指定位置的值,如過不存在會報錯
OK
127.0.0.1:6379> LRANGE list2 0 -1
1) "vv"
127.0.0.1:6379> 

1.9、linset

127.0.0.1:6379> LRANGE list 0 -1
1) "v4"
2) "v3"
3) "v2"
127.0.0.1:6379> LINSERT list before v2 vv	//將某個值插入列表指定值的前面
(integer) 4
127.0.0.1:6379> LINSERT list after v2 vv2	//將某個值插入列表指定值的后面
(integer) 5
127.0.0.1:6379> LRANGE list 0 -1
1) "v4"
2) "v3"
3) "vv"
4) "v2"
5) "vv2"
127.0.0.1:6379> 

2、小結

  • List可以被想象為一個鏈表,可以befor node after ,left,right進行插入;
  • 如果key不存在,創建新鏈表,如果存在,新增內容;
  • 如果移除了所有值,則代表不存在;
  • 在兩邊插入或改動,效率最高,中間元素效率偏低;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535892.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535892.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535892.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

WebP 在減少圖片體積和流量上的效果如何?WebP 技術實踐分享

作者 | Jackson 編輯 | 尾尾 不論是 PC 還是移動端,圖片一直占據著頁面流量的大頭,在圖片的大小和質量之間如何權衡,成為了長期困擾開發者們的問題。而 WebP技術的出現,為解決該問題提供了好的方案。本文將為大家詳細介紹 WebP 技…

Redis(六):Set集合數據類型詳解

Redis 的 Set 是 String 類型的無序集合。集合成員是唯一的,這就意味著集合中不能出現重復的數據。 Redis 中集合是通過哈希表實現的,所以添加,刪除,查找的復雜度都是 O(1)。 集合中最大的成員數為 232 - 1 (4294967295, 每個集…

百度主任架構師譚待:如何讓不帶團隊的程序員負責重大項目?

演講 | 譚待 整理 | 趙新龍、尾尾 譚待,百度主任架構師、百度搜索公司技術委員會聯席主席。主要研究領域在分布式系統和搜索引擎,是百度BVC代理計算和Matrix私有云的主要設計者,兩獲百度最高獎。主持設計了百度新一代搜索架構,在…

Redis(七):Hash哈希數據類型詳解

Redis hash 是一個 string 類型的 field 和 value 的映射表,hash 特別適合用于存儲對象。 Redis 中每個 hash 可以存儲 232 - 1 鍵值對(40多億)。 實例: 127.0.0.1:6379> HMSET runoobkey name "redis tutorial"…

Chrome Dev Summit 2017參會筆記

作者 | 高磊 編輯 | 尾尾 為期兩天的 Chrome Dev Summit 2017 于 10月23日~24日在美國舊金山舉辦。由于我們近期和Google的合作較多,對Google的動作也比較關注,所以受邀參加了這次的Chrome Dev Summit (CDS)。本文是我在現場做的…

Redis(八):Zset有序集合數據類型詳解

Redis 有序集合和集合一樣也是string類型元素的集合,且不允許重復的成員。 不同的是每個元素都會關聯一個double類型的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。 有序集合的成員是唯一的,但分數(score)卻可以重復。 集合是通過哈希表實現的,…

Redis(九):Redis特殊類型之geospatial

朋友的定位,附近的人,位置共享,打車距離 redis在3.2就已經推出了geospatial!兩地之間的距離,方圓幾里的人!都可以用它實現 這個需要把你所在地的經緯度輸進去,我們可以在http://www.jsons.cn/ln…

九個案例簡述Web設計原則:簡潔清晰

作者 | 百度搜索用戶體驗中心 《Web設計指南》分為設計原則、基礎規范兩方面主要內容,同時會提供相應的實際案例及資源下載。歡迎關注OpenWeb開發者,訂閱《Web設計指南》。 前言 《Web設計指南》是專門為廣大Web內容生態提供一套簡單實用的設計指南&a…

Redis(十):Redis特殊類型之Hyperloglog基數統計

redis 2.8.9版本就更新了Hyperloglog數據結構! Hyperloglog:基數統計算法!0.81%的錯誤率,不過統計大量數據可以忽略! 在 Redis 里面,每個 HyperLogLog 鍵只需要花費 12 KB 內存,就可以計算接近 …

W3C近期要聞:與Mozilla MDN合作聯合開發Web平臺文檔

作者 | W3C中國 「OpenWeb開發者」依托于BOW(Brillant Open Web)團隊,是一個專門的 Web 技術建設小組,致力于推動 Open Web 技術的發展,將不定期為讀者同步W3C要聞。 注:由于微信不支持外鏈,了解…

Redis(十一):Redis特殊類型之Bitmap位圖

1、位存儲 只有0和1兩種狀態! Bitmap 位圖:數據結構,都是操作二進制位來進行記錄 登錄/未登錄 活躍/不活躍 打卡 兩個狀態的都可以使用Bitmap! 2、常用命令 2.1、用Bitmap來記錄 周一到周日的登陸情況 127.0.0.1:6379> …

移動Web加速技術月報第2期

作者 | Brilliant Open Web 團隊breezet、shdong 編輯 | 尾尾 為推進Web技術的發展,Brilliant Open Web團隊特推出每月一期的《移動Web加速技術月報》,該月報將整理較流行的移動Web加速技術,并跟進各項技術的進展和發展方向,以期…

Redis(十二):Redis事務的基本操作

1、Redis事務概念 Redis 事務的本質是一組命令的集合。事務支持一次執行多個命令,一個事務中所有命令都會被序列化。在事務執行過程,會按照順序串行化執行隊列中的命令,其他客戶端提交的命令請求不會插入到事務執行命令序列中。 總結說&…

大型網站HTTPS 實踐(一)| HTTPS 協議和原理

作者 | 百度HTTPS技術支持團隊 百度已經上線了全站 HTTPS 的安全搜索,默認會將 HTTP 請求跳轉成 HTTPS。本文就著重介紹了 HTTPS 協議涉及到的重要知識點和平時不太容易理解的盲區,希望能對大家理解 HTTPS 協議有幫助。百度 HTTPS 性能優化涉及到大量內容…

MongoDB(一):簡介

1、MongoDB概述 MongoDB 是由C語言編寫的,是一個基于分布式文件存儲的開源數據庫系統。在高負載的情況下,添加更多的節點,可以保證服務器性能。MongoDB 旨在為WEB應用提供可擴展的高性能數據存儲解決方案。 MongoDB 是一款流行的開源文檔型…

大型網站HTTPS實踐:HTTPS對性能的影響

作者 | 百度HTTPS技術支持團隊 百度已經上線了全站 HTTPS 的安全搜索,默認會將 HTTP 請求跳轉成 HTTPS。百度 HTTPS性能優化涉及到大量內容,從前端頁面、后端架構、協議特性、加密算法、流量調度、架構和運維、安全等方面都做了大量工作。本系列的文章將…

Redis(十三):Redis實現樂觀鎖

1、悲觀鎖與樂觀鎖 樂觀鎖和悲觀鎖是一種程序設計思想,而不是具體的代碼。樂觀鎖和悲觀鎖應用的場景有很多,在數據庫和多線程等等都會用到。 悲觀鎖:總是假設最壞的情況,每次去拿數據的時候都認為別人會修改,所以每次…

PWA將帶來新一輪大前端技術洗牌?

作者 | 彭星 編輯 | 尾尾 一、回顧歷史:移動時代之初,Web遭遇兩大枷鎖 Web 在移動時代遭遇兩大枷鎖1.Web 在移動時代遭遇兩大枷鎖 當 Web 自信滿滿,步入移動時代之時,它還沒有做好充足的準備。 回顧 2014 到 2015 年那段時間…

Redis(十四):Jedis

Jedis是Redis官方推薦的Java連接開發工具。要在Java開發中使用好Redis中間件&#xff0c;必須對Jedis熟悉才能寫成漂亮的代碼&#xff01; 1、新建Maven工程&#xff0c;導入對應依賴 <dependencies><dependency><groupId>redis.clients</groupId>&l…

高級精致智能快捷的Web設計原則案例

作者 | 百度搜索用戶體驗中心 《Web設計指南》分為設計原則、基礎規范兩方面主要內容&#xff0c;同時會提供相應的實際案例及資源下載。關注OpenWeb開發者&#xff0c;回復“設計指南”&#xff0c;即可獲取已發布資源。 設計原則之高級精致 簡潔并不等于粗糙沒有細節&#x…