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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...