国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Redis - Redis list 類型學習筆記與總結

Redis list 類型學習筆記與總結

2019-10-25 16:42Redis教程網 Redis

這篇文章主要介紹了Redis list 類型學習筆記與總結,本文著重講解了關于List的一些常用方法,比如lpush 方法、lrange 方法、rpush 方法、linsert 方法、 lset 方法等,需要的朋友可以參考下

redis 版本

復制代碼代碼如下:

[root@localhost ~]# redis-server --version 
Redis server v=2.8.19 sha=00000000:0 malloc=jemalloc-3.6.0 bits=32 build=e2559761bd460ca0

 

list 是一個鏈表結構,主要功能是 push(類似 PHP 的 array_push() 方法)、 pop(類似 PHP 的 array_pop() 方法)、獲取一個范圍的所有值 等, 操作

中 key 理解為鏈表的名字。Redis 的 list 類型其實就是一個每個子元素都是 string 類型的 雙向鏈表。

鏈表的最大長度是(2的 32 次方)。我們可以通過 push, pop 操作從鏈表的頭部或者尾部添加刪除元素。這使得 list 既可以用作棧,也可以用作隊列。

有意思的是 list 的 pop 操作還有阻塞版本的,當我們[lr]pop 一個 list 對象時,如果 list 是空,或者不存在,會立即返回 nil。但是阻塞版本的 b[lr]pop 可以則可以阻塞,當然可以加超時時間,超時后也會返回 nil。為什么要阻塞版本的 pop 呢,主要是為了避免輪詢。舉個簡單的例子如果我們用 list 來實現一個工作隊列。執行任務的 thread 可以調用阻塞版本的 pop 去獲取任務這樣就可以避免輪詢去檢查是否有任務存在。當任務來時候工作線程可以立即返回,也可以避免輪詢帶來的延遲。

① lpush 方法(棧)

在 key 對應 list 的頭部 添加(壓入)字符串元素。

② lrange 方法

lrange list1 0 -1 代表從鏈表 list1 的頭部第一個元素取到 尾部第一個元素(-1 代表尾部第一個元素)。

【例】

復制代碼代碼如下:


127.0.0.1:6379> lpush list1 hello
(integer) 1

 


127.0.0.1:6379> lpush list1 world
(integer) 2


127.0.0.1:6379> lrange list1 0 -1
1) "world"
2) "hello"

 

③ rpush 方法(隊列)

在 key 對應 list 的尾部 添加(壓入)字符串元素。

【例】

復制代碼代碼如下:


127.0.0.1:6379> rpush list2 hello
(integer) 1

 


127.0.0.1:6379> rpush list2 world
(integer) 2


127.0.0.1:6379> lrange list2 0 -1
1) "hello"
2) "world"


不論是 lpush 還是 rpush 方法,都是從 list 的 兩端壓入。

 

④ linsert 方法

在 key 對應 list 的特定位置前或后添加字符串。

【例】

復制代碼代碼如下:


127.0.0.1:6379> rpush list3 one
(integer) 1

 

127.0.0.1:6379> linsert list3 before one two
(integer) 2

127.0.0.1:6379> lrange list3 0 -1
1) "two"
2) "one"

127.0.0.1:6379> linsert list3 before one three
(integer) 3

127.0.0.1:6379> lrange list3 0 -1
1) "two"
2) "three"
3) "one"

 

注意:

|   |  頭(前)

|   |  ↑

|   |  尾

⑤ lset 方法

設置 list 中指定下標的元素值(替換指定下標的元素,類似 PHP 中的數組:$arr = array('a', 'b', 'c'); $arr[0] = 'd'; )。

【例】

復制代碼代碼如下:


127.0.0.1:6379> lrange list3 0 -1
1) "two"
2) "three"
3) "one"

 


127.0.0.1:6379> lset list3 1 tmp
OK

127.0.0.1:6379> lrange list3 0 -1
1) "two"
2) "tmp"
3) "one"


127.0.0.1:6379> lset list3 0 reset
OK

127.0.0.1:6379> lrange list3 0 -1
1) "reset"
2) "tmp"
3) "one"

 

⑥ lrem 方法

從 key 對應 list 中刪除 n 個和 value 相同的元素。(n < 0 從尾刪除,n = 0 全部刪除)。返回刪除的個數。

【例】

復制代碼代碼如下:


127.0.0.1:6379> lrange list3 0 -1
1) "reset"
2) "tmp"
3) "one"

 


127.0.0.1:6379> lpush list3 two
(integer) 4
127.0.0.1:6379> lpush list3 two
(integer) 5
127.0.0.1:6379> lpush list3 two
(integer) 6


127.0.0.1:6379> lrange list3 0 -1
1) "two"
2) "two"
3) "two"
4) "reset"
5) "tmp"
6) "one"


127.0.0.1:6379> lrem list3 1 two
(integer) 1


127.0.0.1:6379> lrange list3 0 -1
1) "two"
2) "two"
3) "reset"
4) "tmp"
5) "one"


127.0.0.1:6379> rpush list3 two
(integer) 6


127.0.0.1:6379> lrange list3 0 -1
1) "two"
2) "two"
3) "reset"
4) "tmp"
5) "one"
6) "two"


127.0.0.1:6379> lrem list3 -2 two
(integer) 2


127.0.0.1:6379> lrange list3 0 -1
1) "two"
2) "reset"
3) "tmp"
4) "one"


【例2】

復制代碼代碼如下:


127.0.0.1:6379> lrange list3 0 -1
1) "two"
2) "reset"
3) "tmp"
4) "one"

 


127.0.0.1:6379> lrem list3 -2 two
(integer) 1


127.0.0.1:6379> lrange list3 0 -1
1) "reset"
2) "tmp"
3) "one"


127.0.0.1:6379> lrem list3 -2 two
(integer) 0


127.0.0.1:6379> lrange list3 0 -1
1) "reset"
2) "tmp"
3) "one"

 

⑦ ltrm 方法

保留指定 key  的值范圍內的數據。

【例】

復制代碼代碼如下:


127.0.0.1:6379> lpush list4 one
(integer) 1
127.0.0.1:6379> lpush list4 two
(integer) 2
127.0.0.1:6379> lpush list4 three
(integer) 3
127.0.0.1:6379> lpush list4 four
(integer) 4

 


127.0.0.1:6379> lrange list4 0 -1
1) "four"
2) "three"
3) "two"
4) "one"


127.0.0.1:6379> ltrim list4 1 2
OK

127.0.0.1:6379> lrange list4 0 -1
1) "three"
2) "two"

 

說明:保留下標(key)為 1 開始到下標為 2 的元素,其他兩端的元素全部刪除。

【例2】

復制代碼代碼如下:


127.0.0.1:6379> lrange list4 0 -1
1) "seven"
2) "six"
3) "five"
4) "three"
5) "two"

 


127.0.0.1:6379> ltrim list4 2 -1
OK

127.0.0.1:6379> lrange list4 0 -1
1) "five"
2) "three"
3) "two"

 

⑧ lpop 方法

從 list 的頭部 刪除 元素,并返回刪除的元素(類似 PHP 中的 array_pop() 方法:將數組的最后一個單元彈出(刪除))。

(rpop:代表從尾部刪除元素)

【例】

復制代碼代碼如下:


127.0.0.1:6379> lrange list4 0 -1
1) "five"
2) "three"
3) "two"

 


127.0.0.1:6379> lpop list4
"five"


127.0.0.1:6379> lrange list4 0 -1
1) "three"
2) "two"


127.0.0.1:6379> rpop list4
"two"


127.0.0.1:6379> lrange list4 0 -1
1) "three"

 

⑨ rpoplpush 方法

從第一個 list 的尾部移除元素并添加到 第二個 list 的頭部。

復制代碼代碼如下:


127.0.0.1:6379> lrange list4 0 -1
1) "eight"
2) "seven"
3) "three"

 

127.0.0.1:6379> lrange list5 0 -1
1) "redis"
2) "nginx"
3) "mysql"
4) "php"

127.0.0.1:6379> rpoplpush list4 list5
"three"

127.0.0.1:6379> lrange list4 0 -1
1) "eight"
2) "seven"

127.0.0.1:6379> lrange list5 0 -1
1) "three"
2) "redis"
3) "nginx"
4) "mysql"
5) "php"

 

⑩ lindex 方法

返回名稱為 key 的 list 中 index 位置的元素。

【例】

復制代碼代碼如下:


127.0.0.1:6379> lrange list5 0 -1
1) "three"
2) "redis"
3) "nginx"
4) "mysql"
5) "php"

 


127.0.0.1:6379> lindex list5 1
"redis"


127.0.0.1:6379> lindex list5 -1
"php"

 

? llen 方法(類似 PHP 中 count($arr) )

返回 list 鏈表中元素的個數。

【例】

復制代碼代碼如下:

127.0.0.1:6379> lrange list5 0 -1
1) "three"
2) "redis"
3) "nginx"
4) "mysql"
5) "php"
 
127.0.0.1:6379> llen list5
(integer) 5

延伸 · 閱讀

精彩推薦
  • RedisRedis全量復制與部分復制示例詳解

    Redis全量復制與部分復制示例詳解

    這篇文章主要給大家介紹了關于Redis全量復制與部分復制的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Redis爬蟲具有一定的參考學習...

    豆子先生5052019-11-27
  • RedisRedis的配置、啟動、操作和關閉方法

    Redis的配置、啟動、操作和關閉方法

    今天小編就為大家分享一篇Redis的配置、啟動、操作和關閉方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧 ...

    大道化簡5312019-11-14
  • Redisredis實現排行榜功能

    redis實現排行榜功能

    排行榜在很多地方都能使用到,redis的zset可以很方便地用來實現排行榜功能,本文就來簡單的介紹一下如何使用,具有一定的參考價值,感興趣的小伙伴們...

    乘月歸5022021-08-05
  • Redis詳解Redis復制原理

    詳解Redis復制原理

    與大多數db一樣,Redis也提供了復制機制,以滿足故障恢復和負載均衡等需求。復制也是Redis高可用的基礎,哨兵和集群都是建立在復制基礎上實現高可用的...

    李留廣10222021-08-09
  • RedisRedis如何實現數據庫讀寫分離詳解

    Redis如何實現數據庫讀寫分離詳解

    Redis的主從架構,能幫助我們實現讀多,寫少的情況,下面這篇文章主要給大家介紹了關于Redis如何實現數據庫讀寫分離的相關資料,文中通過示例代碼介紹...

    羅兵漂流記6092019-11-11
  • RedisRedis 事務知識點相關總結

    Redis 事務知識點相關總結

    這篇文章主要介紹了Redis 事務相關總結,幫助大家更好的理解和學習使用Redis,感興趣的朋友可以了解下...

    AsiaYe8232021-07-28
  • Redisredis 交集、并集、差集的具體使用

    redis 交集、并集、差集的具體使用

    這篇文章主要介紹了redis 交集、并集、差集的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友...

    xiaojin21cen10152021-07-27
  • Redisredis中如何使用lua腳本讓你的靈活性提高5個逼格詳解

    redis中如何使用lua腳本讓你的靈活性提高5個逼格詳解

    這篇文章主要給大家介紹了關于redis中如何使用lua腳本讓你的靈活性提高5個逼格的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具...

    一線碼農5812019-11-18
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 色av综合网 | 午夜视频免费在线观看 | 精品女同一区二区三区在线绯色 | 精品无码三级在线观看视频 | 亚洲色图在线观看 | 淫片在线| 最新国产在线 | 成人激情视频在线观看 | 自拍偷拍欧美 | 欧美精品导航 | 91视频一88av| 日本不卡高字幕在线2019 | 中文字幕自拍偷拍 | 亚洲国产高清美女在线观看 | 97在线观看视频 | 本道综合精品 | 伊人网在线视频观看 | 成人免费黄色毛片 | 精品久久久久久久 | 久草新在线 | 精品国产欧美一区二区三区成人 | 久久av网 | 欧美午夜一区 | 日本黄色免费播放 | 日韩中文字幕在线免费观看 | 希岛爱理av一区二区三区 | 国模爱爱 | 国产精品日本欧美一区二区三区 | 一级黄色a | 91夜夜夜| 日本中文字幕一区 | 亚洲视频一区在线播放 | 欧美日本一区二区三区 | 欧美日本韩国一区二区 | 国产在线精品一区二区三区 | 小视频在线 | 日韩一级视频 | 欧美精品网站 | 91在线中文 | 色婷婷欧美 | 成人在线免费观看视频 |