1. 程式人生 > >Redis資料結構詳解之List(二)

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

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 mylist 3   ---rpush命令:向mylist列表中,從右邊插入3條資料,返回值為當前列表的容量。結果為:(integer) 3

127.0.0.1:6379>lrange mylist 0 -1   ---lrange命令:檢視mylist列表中的資料,0開始位置,-1結束位置,結束位置為-1時,表示列表的最後一個位置,即檢視所有。結果為:1> "1"  2> "2"  3> "3"

127.0.0.1:6379>lpush mylist 0   ---lpush命令:向mylist列表中,從左邊插入一條資料為0的資料

127.0.0.1:6379>lrange mylist 0 -1   ---結果為:1>"0"  2>"1"  3>"2"  4>"3"

127.0.0.1:6379>linsert mylist after 3 4   ---linsert命令,表示式為linsert key before|after pivot value ;這句命令的意思是在key為mylist的列表中查詢值為3的資料,在其後插入一條值為4的資料。

127.0.0.1:6379>lrange mylist 0 -1   ---結果為:1>"0"  2>"1"  3>"2"  4>"3"  5>"4"

127.0.0.1:6379>linsert mylist before 0 -1   ---意思是:在key為mylist的列表中查詢值為0的資料,在其前插入一條值為-1的資料。

127.0.0.1:6379>lrange mylist 0 -1    ---結果為:1>"-1"  2>"0"  3>"1"  4>"2"  5>"3"  6>"4"

127.0.0.1:6379>linsert mylist after 5 8    ---結果為:-1,由於mylist列表不存在值為5的資料,所以不執行任何操作,返回狀態值-1。如果key不存在時,返回值為0

127.0.0.1:6379>lrange mylist 0 -1   ---結果為:1>"-1"  2>"0"  3>"1"  4>"2"  5>"3"  6>"4"

2、redis中list列表的資料刪除命令:lpop,rpop

127.0.0.1:6379>lpop mylist    ---lpop命令:從列表中的左邊移除一條資料,同時輸出被刪除的資料,這裡輸出的結果為-1

127.0.0.1:6379>lrange mylist 0 -1   ---結果為:1>"0"  2>"1"  3>"2"  4>"3"  5>"4"

127.0.0.1:6379>rpop mylist   ---rpop命令:從列表的右邊移除一條資料,同時輸出被刪除的資料,這裡輸出的結果為4

127.0.0.1:6379>lrange mylist 0 -1   ---結果為:1>"0"  2>"1"  3>"2"  4>"3" 

127.0.0.1:6379>ltrim mylist 1 3   ----ltrim命令:保留設定的兩個下標區間的值,刪除不在其區間的所有值。1為開始保留的下標值,3為結束保留的下標值。

127.0.0.1:6379>lrange mylist 0 -1   ---結果為:1>"1"  2>"2"  3>"3" 

3、redis中list列表的資料檢視命令:lrange,llen,lindex

127.0.0.1:6379>llen mylist   ---llen命令:返回列表的長度,這裡mylist只剩下4條資料,故輸出結果為4

127.0.0.1:6379>lindex mylist 3   ---lindex命令:獲取給定位置的資料,這裡座標為3的資料是"2",所以結果為2.

4、redis中list列表資料修改命令:lset

127.0.0.1:6379>lset mylist 2 zlh   ---lset命令:把下標為2的值設定為zlh,如果下標值超出範圍或對一個空list列表進行lset,那麼將返回一個錯誤提示

127.0.0.1:6379>lrange mylist 0 -1   ---結果為: 1>"1"  2>"2"  3>"zlh"

5、redis中list列表,兩個列表A,B,將A列表的尾元素新增到B列表的頭元素中,命令:rpoplpush

#這裡我有連個列表A資料為{1,2,3} ,B列表資料為{4,5,6}

127.0.0.1:6379>rpoplpush A B

127.0.0.1:6379>lrange A   ---結果為:1>"1' 2>"2"

127.0.0.1:6379>lrange B   ---結果為:1>"3' 2>"4" 3>"5" 4>"6"

6、redis中的幾個帶阻塞的高階命令:blpop,brpop,brpoplpush

127.0.0.1:6379>blpop A 30   ---意思是:A列表有值的話,從左邊移除一個數據,如果沒有值的話,則等待A中插入資料為止,等待時間為30秒,如果時間設定為0表示阻塞時間無限延長

127.0.0.1:6379>brpop A 30   ---意思是:A列表有值的話,從又邊移除一個數據,如果沒有值的話,則等待A中插入資料為止,等待時間為30秒,如果時間設定為0表示阻塞時間無限延長

127.0.0.1:6379>brpoplpush A B 30   ---意思是:將A列表的尾元素新增到B列表的頭元素中,如果A列表中有值則插入,如果沒值,則等待A中插入資料為止,等待時間為30秒,如果時間設定為0表示阻塞時間無限延長

Redis實現訊息佇列,並自帶優先順序功能

1、首先redis中的list是連結串列結構,具備訊息佇列中的先進先出特徵。

2、從上面的幾個高階命令中可以看出,list有幾個自帶阻塞功能,時間設定為0,可以視為永不休息的監聽程序。

相關推薦

Redis資料結構List

Redis中關於List列表的命令詳解  1、redis中list列表的資料插入命令:lpush,rpush,linsert 127.0.0.1:6379>rpush mylist 1   ---結果為:(integer) 1 127.0.0.1:6379&g

Redis資料結構Set

序言 在Redis中,Set和list都是字串序列,非常相似,不同之處在於Set是用雜湊表來保持字串的唯一性,沒有先後順序,不像list一樣,可以在首尾增刪資料。但是set也有自己的相應處理命令來完成對自己的操作。下面我們來看下Set的命令怎麼使用。 操作單個set的

Redis資料結構Zset

Zset跟Set之間可以有並集運算,因為他們儲存的資料字串集合,不能有一樣的成員出現在一個zset中,但是為什麼有了set還要有zset呢?zset叫做有序集合,而set是無序的,zset怎麼做到有序的呢?就是zset的每一個成員都有一個分數與之對應,並且分數是

Redis內部資料結構整數集合(intset)

整數集合簡介 整數集合intset用於有序、無重複地儲存多個整數值,根據集合中元素的值自動選擇使用整數型別來儲存元素,例如:如果intset中絕對值最大的整數可以用int32_t來儲存,那麼整個

Redis內部資料結構字典(dict)

/* Expand or create the hash table */ int dictExpand(dict *d, unsigned long size) { dictht n; /* the new hash table */ unsigned long realsize = _di

Redis內部資料結構簡單動態字串(sds)

本文所引用的原始碼全部來自Redis2.8.2版本。 Redis中簡單動態字串sds資料結構與API相關檔案是:sds.h, sds.c。 預備知識 下面介紹有關sizeof計算引數

Ansible自動化運維Playbook及體驗

tasks ansible sha shadow yml ESS remote name 自動化運維 Handlers介紹: Handlers也是一些task的列表,和一般的task並沒有什麽區別。是由通知者進行的notify,如果沒有被notify,則Handlers

Android 學習《第一行程式碼》第二版 筆記廣播機制

廣播的最佳實踐——實現強制下線功能 思路:在介面上彈出一個對話方塊,讓使用者無法進行任何操作,必須點選對話方塊中的確定按鈕,然後回到登入介面即可。 一、效果圖 1. 登入介面並輸入賬號密碼 2. 登陸後的介面 3. 強制下線 4. 退回登陸的介面

極客講堂資料結構與演算法:複雜度分析

(本文根據極客講堂——資料結構與演算法之美專欄的問答區整理修改而成,如有侵權還希望聯絡我鴨~) 一、什麼是複雜度分析? 1.資料結構和演算法解決是“如何讓計算機更快時間、更省空間的解決問題”。 2.因此需從執行時間和佔用空間兩個維度來評估資料結構和演算法的效能。 3.分別

資料結構與演算法:陣列

陣列看起來簡單基礎,但是很多人沒有理解這個資料結構的精髓。帶著為什麼陣列要從0開始編號,而不是從1開始的問題,進入主題。 一、 如何實現隨機訪問 1) 陣列是一種線性資料結構,用連續的儲存空間儲存相同型別資料: I) 線性表:陣列、連結串列、佇列、棧 ;非線性表

資料結構與演算法排序2選擇排序 ——in dart

  選擇排序的演算法複雜度與氣泡排序類似,其比較的時間複雜度仍然為O(N2),但減少了交換次數,交換的複雜度為O(N),相對氣泡排序提升很多。演算法的核心思想是每次選出一個最小的,然後與本輪迴圈中的第一個進行比較,如果需要則進行交換。 1 import 'dart:math' show Random

java資料結構與演算法Stack設計與實現

關聯文章:   本篇是java資料結構與演算法的第4篇,從本篇開始我們將來了解棧的設計與實現,以下是本篇的相關知識點: 棧的抽象資料型別   棧是一種用於儲存資料的簡單資料結構,有點類似連結串列或者順序表(統稱線性表),棧與線性表的最大區別是

資料結構與演算法Stack——in dart

用dart 語言實現一個簡單的stack(棧)。 1 class Stack<E> { 2 final List<E> _stack; 3 final int capacity; 4 int _top; 5 6 Stack(this.capacit

資料結構與演算法Stack的應用——in dart

  參考教科書上的一個應用例子,用棧來分析一行輸入中的括號brackets是否匹配。用stdin讀取使用者輸入,並輸出檢查結果。exit 退出。 注意這行程式碼: import 'stack.dart';// 需要與上一個Stack的例子在同一個資料夾下。 1 import 'dart:io';

python 內建資料結構的基本操作 —— list2

The list data type has some more methods. Here are all of the methods of list objects: list.append(x) Add an item to the end of t

資料結構與演算法

想要學習資料結構與演算法,首先要掌握複雜度分析。因為資料結構與演算法要解決的就是如何更省,更快的儲存和處理資料的問題,因此我們要有一個衡量效率和資源消耗的方法,這就是複雜度的分析 作為初學者和非演算法工程師,只需要掌握最常用、最基礎的20個數據結構與演算法,學習他們的:“來歷”、“特點”、“適合解決什麼問題

React NativeRedux使用Reducers30

React Native之Redux使用詳解之Reducers 一. Reducers Actions 描述發生了什麼,但不能指定響應中state怎麼變化,這是Reducers的工作。 1. 設計State Shape 在Redux中,所有sta

PyQt5基本控制元件QLineEdit

QLineEdit QLineEdit類中常用的方法如下表 方法 描述 setAlignment() 按固定值方式對齊文字 Qt.AlignLeft:水平方向靠左對齊 Qt.AlignRight:水平方

java集合類源碼分析List

頻繁 null 並且 reel closed tco 默認 java集合 進行 這一節主要介紹List接口的幾個實現類的區別: 1.線程安全 Vector是線程安全的,而ArrayList和LinkedList是非線程安全的。從源碼中我們可知,Vector類中的方法大部分

YUV系列--YUV422

proc 衍生 watermark term fff 本質 image 描述 采樣 hi,各位小夥伴,小編又來了嘍,今天該給大家分享一下YUV422嘍,還是老規矩,老套路哦: 一、文字描述采樣格式:YUV422的采樣格式,簡單理解就是一個2*2的像素塊中,對於4個像素點,采