redis數據類型及常用命令介紹(圖文實例)

来源:http://www.cnblogs.com/young-z/archive/2017/11/24/7890797.html
-Advertisement-
Play Games

上圖中即為redis中5種基本數據類型,在沒接觸過redis之前,聽過最多相關的字眼就是鍵值對key-value之類,立馬讓我想到了HashMap。在HashMap中,key和value的的數據類型都可以指定,value也可以是HashMap類型。而在這裡,redis的基本數據類型是針對的value ...


  上圖中即為redis中5種基本數據類型,在沒接觸過redis之前,聽過最多相關的字眼就是鍵值對key-value之類,立馬讓我想到了HashMap。在HashMap中,key和value的的數據類型都可以指定,value也可以是HashMap類型。而在這裡,redis的基本數據類型是針對的value,有這5種。

  文中所用測試記錄環境在Linux下,命令操作在SSH客戶端下,這裡使用的是Xshell 5,個人使用感覺很方便,同一系列的Xftp 5用於遠程文件上傳操作也很不錯。如有需要,可直接進入官網下載,有免費版本(Free for Home/School),點擊傳送門,也可以留下郵箱,我會儘快發送過去。

  一、字元串(String)常用命令

  

1    SET key value
設置指定 key 的值
2    GET key
獲取指定 key 的值
3    GETRANGE key start end
返回 key 中字元串值的子字元串(這裡的start和end即起始子字元的索引,例如字元串abcde,取1至3,即拿到bcd,索引從0開始計數4    GETSET key value
將給定 key 的值設為 value ,並返回 key 的舊值
5    MSET key value [key value ...]
同時設置一個或多個 key-value 對。(對比MGET)
6    MGET key1 [key2..]
獲取所有(一個或多個)給定 key 的值。(這裡的M可以記憶為Many,許多的意思,便於理解)
7    SETEX key seconds value
將值 value 關聯到 key ,並將 key 的過期時間設為 seconds (以秒為單位)。
8    SETNX key value
只有在 key 不存在時設置 key 的值。(這裡的SETNX,後面的NX,個人記憶為Not Exists,不存在的)
9    MSETNX key value [key value ...]
同時設置一個或多個 key-value 對,當且僅當所有給定 key 都不存在。
10    STRLEN key
返回 key 所儲存的字元串值的長度。(String 的 Length)
11    SETEX key seconds value
將值 value 關聯到 key ,並將 key 的過期時間設為 seconds (以秒為單位)。
12    PSETEX key milliseconds value
這個命令和 SETEX 命令相似,但它以毫秒為單位設置 key 的生存時間,而不是像 SETEX 命令那樣,以秒為單位。
13    INCR key
將 key 中儲存的數字值增一。(String中存為類似102、88的數字字元串情況)
14    INCRBY key increment
將 key 所儲存的值加上給定的增量值(increment)(上面的是加一,如果想增量為指定數值,即可用該命令)
15    INCRBYFLOAT key increment
將 key 所儲存的值加上給定的浮點增量值(increment) 。
16    DECR key
將 key 中儲存的數字值減一。
17    DECRBY key decrement
key 所儲存的值減去給定的減量值(decrement) 。
18    APPEND key value
如果 key 已經存在並且是一個字元串, APPEND 命令將 value 追加到 key 原來的值的末尾。 

 

  二、Hash(哈希)常用命令

  由於是Hash類型的相關命令,可以看到,命令開頭字元均為H。說起Hash、Key-Value、鍵值對,第一時間想到了Map/HashMap,多個鍵值對?同時,我們在開發過程中操作的那些實體對象,往往有多個屬性,而它們的屬性和屬性值一一對應起來是不是跟這裡的鍵值對有點吻合,在redis里,每個hash可以存儲2的32次方-1個鍵值對(40多億),所以hash很適合存儲對象。

1    HSET key field value
將哈希表 key 中的欄位 field 的值設為 value 。
2    HSETNX key field value
只有在欄位 field 不存在時,設置哈希表欄位的值。
3    HGET key field
獲取存儲在哈希表中指定欄位的值。
4    HMSET key field1 value1 [field2 value2 ]
同時將多個 field-value (域-值)對設置到哈希表 key 中。
5    HMGET key field1 [field2]
獲取所有給定欄位的值
6    HGETALL key
獲取在哈希表中指定 key 的所有欄位和值(這個命令獲取到其中完整內容了,實際情況下數據量巨大的時候不適用7    HKEYS key
獲取所有哈希表中的欄位
8    HVALS key
獲取哈希表中所有值
9    HEXISTS key field
查看哈希表 key 中,指定的欄位是否存在。
10    HLEN key
獲取哈希表中欄位的數量
11    HDEL key field1 [field2]
刪除一個或多個哈希表欄位
12    HINCRBY key field increment
為哈希表 key 中的指定欄位的整數值加上增量 increment 。
13    HINCRBYFLOAT key field increment
為哈希表 key 中的指定欄位的浮點數值加上增量 increment 。

  三、列表(List)常用命令

  Redis的list是元素都為String類型的雙向鏈表,既然是雙向列表,操作也分雙向,這裡的列表頭部即左邊第一個或者首個,列表尾部即右邊方向第一個或者首個。以LRANGE key start stop為例,該命令用於獲取列表指定範圍內的元素,這裡LRANGE指定從左到右方向,key為鍵名稱,start和end分別代表想要獲取的範圍起始元素的索引,例子:創建列表testList,內容為 C C++ C# Java Php Python,一共6個元素(命令RPUSH testList C C++ C# Java Php Python),瞭解數組等結構的不難知道,由於索引是從0開始,所以這6個元素的索引從左至右分別為0 1 2 3 4 5,所以如果我們想要獲取Java Php Python這3個元素,我們用(命令LRANGE testList 3 5)即可得到想要的結果,引申到這裡的redis雙向列表,使用負數下標,以 -1 表示列表的最後一個元素, -2 表示列表的倒數第二個元素,以此類推,則上述6個元素的索引從左到右也可以置為-6 -5 -4 -3 -2 -1 ,這樣一來,我們的獲取方式更加靈活了,不論列表長度多少,我們想要獲取全部元素的話都可以通用 LRANGE Key 0 -1來實現。例子中四種方式如下圖示意。

List作為雙向鏈表,下圖簡單示例雙向操作過程

1    LPUSH key value1 [value2]
將一個或多個值從左插入到列表頭部
2    LPUSHX key value
將一個值從左插入到已存在的列表頭部
3    RPUSH key value1 [value2]
將一個或多個值從右插入到列表尾部
4    RPUSHX key value
將一個值從右插入到已存在的列表尾部
5    LLEN key
獲取列表長度
6    LPOP key
移出並獲取列表的第一個元素
7    RPOP key
移除並獲取列表最後一個元素
8    LINDEX key index
通過索引獲取列表中的元素
9    LSET key index value
通過索引設置列表元素的值
10    LRANGE key start stop
獲取列表指定範圍內的元素
11    LREM key count value
移除列表元素(記憶為left remove)
count > 0 : 從左向右,移除與 VALUE 相等的元素,數量為 COUNT 。
count < 0 : 從右向左,移除與 VALUE 相等的元素,數量為 COUNT 的絕對值。
count = 0 : 移除表中所有與 VALUE 相等的值。
12    LTRIM key start stop
對一個列表進行修剪(trim),就是說,讓列表只保留指定區間內的元素,不在指定區間之內的元素都將被刪除。
13    BLPOP key1 [key2 ] timeout
移出並獲取列表的第一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。
14    BRPOP key1 [key2 ] timeout
移出並獲取列表的最後一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。(與上者區別,一個是針對左邊也就是列表首部,一個是右邊
也就是尾部。這個timeout是阻塞時間,以秒為單位)
15    BRPOPLPUSH source destination timeout
從列表中彈出一個值,將彈出的元素插入到另外一個列表中並返回它; 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。
16    LINSERT key BEFORE|AFTER pivot value
在列表的元素前或者後插入元素(這個地方要註意,如果里列表中有重覆元素,插入過程只會發生在第一個元素上)
17    RPOPLPUSH source destination
移除列表的最後一個元素,並將該元素添加到另一個列表並返回

 

  四、集合(Set)常用命令

  Set是string類型的無序集合,與列表List中可存放重覆元素不同,Set中不能出現重覆元素。

命令均以首字母s開頭
1    SADD key member1 [member2]
向集合添加一個或多個成員
2    SCARD key
獲取集合的成員數
3    SISMEMBER key member
判斷 member 元素是否是集合 key 的成員(是的話返回1,否則返回0)
4    SMEMBERS key
返回集合中的所有成員
5    SREM key member1 [member2]
移除集合中一個或多個成員(返回刪除數量)
6    SPOP key
移除並返回集合中的一個隨機元素
7    SRANDMEMBER key [count]
返回集合中一個或多個隨機數
8    SDIFF key1 [key2]
返回給定所有集合的

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 什麼是標記語言? 標記語言是一種用語義上可區分文本的方式來註釋文檔的系統。這個想法和術語是從紙上手稿的“標記”,即編輯們的修改指示演變而來的,傳統上用藍色鉛筆寫在作者的手稿上。 標記語言的歷史? 標記來源於傳統的標記手稿的出版實踐。當需要出版一部手稿的時候,首先手稿被交給“標記人”,他們在手稿上標記 ...
  • 原文地址: "canvas圖表(4) 散點圖" 今天開始完成散點圖,做完這一節,我的canvas圖表系列就算是完成了,畢竟平時最頻繁用到的就是這幾類圖表了:柱狀,折線,餅圖,散點。經過編寫canvas圖表項目的實踐,我對canvas也做到了比較深入的理解,也是越來越喜歡電腦圖形相關的知識了。接下來 ...
  • EditText 限制輸入整數和小數 的位數 預設 整數位無限制,小數位 最多2位 ...
  • 新建一個OC語言的項目,然後添加一個基於NSObject的Swift文件SwiftFileModel類 .swift 這時會提示你是否添加橋接文件,點擊創建後體統會自動創建一個橋接文件,但是如果點擊取消後,就需要自己建橋接文件; 手動創建橋接文件 新建h文件,名字隨便起,但最好專業些,我這裡不專業 ...
  • 一,代碼。 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. //直接傳是沒反應的,去掉其中的空格 NSString ...
  • 1.簡介 Redis是完全開源的ANSI C語言編寫、遵守BSD協議,高性能的key-value資料庫。 1.1特點 Redis支持數據的持久化,可以將記憶體中的數據保存在磁碟中,重啟的時候可以再次載入進行使用。 Redis不僅僅支持簡單的key-value類型的數據,同時還提供list,set,zs ...
  • 1.簡介 Redis是完全開源的ANSI C語言編寫、遵守BSD協議,高性能的key-value資料庫。 1.1特點 Redis支持數據的持久化,可以將記憶體中的數據保存在磁碟中,重啟的時候可以再次載入進行使用。 Redis不僅僅支持簡單的key-value類型的數據,同時還提供list,set,zs ...
  • max_connections 和 max_user_connections:max_connections預設是151,當MySQL與Apache Web伺服器一起使用時,可以提高性能。mysqld實際上允許max_connections + 1客戶端連接,額外的1個連接預留給具有超級許可權的帳戶使... ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...