《玩轉Redis》系列文章主要講述Redis的基礎及中高級應用,文章基於Redis5.0.4+。本文主要講述Redis的常見基礎數據結構,《玩轉Redis-Redis基礎數據結構及核心命令》相關操做命令爲方便對比分析,使用腦圖展現(若手機端查看圖片不方便,可搜索zxiaofan前往PC網頁端<CSDN、 開源中國 等平臺>查看)。git
最新思惟導圖原圖可聯繫公衆號【zxiaofan】後臺獲取。
github
本文更適合用於複習總結,閱讀》實戰》閱讀 更有效果喲,主要包含如下內容:redis
後續會介紹其餘高級數據結構:數組
文章思路:安全
異常統一說明:
error(out of range)導圖簡寫@EOOR;
負數偏移量表示倒數第幾,導圖簡寫@LBN(last but number);bash
String能夠說是Redis中最多見的數據結構,沒有之一。
String結構可存儲字符串或者各類類型的二進制數據。服務器
String底層結構是動態字符串,可修改指定位置數據,經過預分配冗餘空間減小內存的頻繁分配,實際分配的空間capacity通常要高於實際字符串長度len。當字符串長度小於1M時,擴容都是加倍現有的空間,若是超過1M,擴容時一次只會多擴1M的空間。字符串最大長度爲512M(51210241024個字符)。
數字及浮點數在Redis中以字符串形式存儲。微信
// 如何證實 String最大長度是512M;
// 512M=512*1024*1024;
127.0.0.1:6379> setrange ran 536870911 a
(integer) 536870912
127.0.0.1:6379> strlen ran
(integer) 536870912
127.0.0.1:6379> append ran a
(error) ERR string exceeds maximum allowed size (512MB)
複製代碼
String命令支持如下操做類型:單一操做、批量操做、字符操做、位操做、計數操做。數據結構
【核心命令】:SET、SETNX、SETEX、PSETEX、GET、GETSET、APPEND、STRLEN;app
注意:
【Redis-String單元素操做】命令簡述:
命令 | 功能 | 參數 |
---|---|---|
SET | 設置value值,支持選項 | key value [expiration EX seconds/PX milliseconds] [NX/XX] |
SETNX | key不存在才容許設置 | key value |
SETEX | 設置value及過時時間(秒) | key seconds value |
PSETEX | 設置value及過時時間(毫秒) | key milliseconds value |
GET | 查詢指定key | key |
GETSET | 查詢返回舊值設置新值 | key value |
APPEND | value追加字符串 | key value |
STRLEN | 查詢value長度 | key |
【Redis-String單元素操做】命令詳細對比分析以下:
【核心命令】:MSET、MGET;
注意:
【Redis-String批量操做】命令簡述:
命令 | 功能 | 參數 |
---|---|---|
MSET | 批量設置 | key value [key value ...] |
MGET | 批量查詢 | key [key ...] |
【Redis-String批量操做】命令詳細對比分析以下:
【核心命令】:SETRANGE、GETRANGE;
注意:
【Redis-String指定範圍處理】命令簡述:
命令 | 功能 | 參數 |
---|---|---|
SETRANGE | 設置指定偏移量位置的字符 | key offset value |
GETRANGE | 查詢指定區間字符串 | key start end【@LBN;offset大於len將自動以len爲準】 |
【Redis-String指定範圍處理】命令詳細對比分析以下:
【核心命令】:INCR/DECR、INCRBY/DECRBY、INCRBYFLOAT;
注意:
【Redis-String遞增操做】命令簡述:
命令 | 功能 | 參數 |
---|---|---|
INCR/DECR | 遞增/1遞減1 | key |
INCRBY/DECRBY | 遞增n/遞減n | key increment(支持負數) |
INCRBYFLOAT | 遞增浮點值 | key increment(支持負數) |
【Redis-String遞增操做】命令詳細對比分析以下:
【核心命令】:SETBIT、BITOP、GETBIT、BITCOUNT、BITFIELD、BITPOS;
注意:
【Redis-String位操做】命令簡述:
命令 | 功能 | 參數 |
---|---|---|
SETBIT | 指定偏移量bit位置設置值 | key offset value【0=< offset< 2^32】 |
BITOP | 對一個或多個key執行邏輯操做,並將結果保存到destkey | operation destkey key [key ...]【AND, OR, XOR, NOT】 |
GETBIT | 查詢指定偏移位置的bit值 | key offset |
BITCOUNT | 統計指定區間bit爲1的數量 | key [start end]【@LBN】 |
BITFIELD | 操做多字節位域 | key [GET type offset] [SET type offset value] [INCRBY type offset increment] [OVERFLOW WRAP/SAT/FAIL] |
BITPOS | 查詢指定區間第一個被設置成1的bit位的位置 | key bit [start] [end]【@LBN】 |
【Redis-String位操做】命令詳細對比分析以下:
概述:
【核心命令】:LPUSH、RPUSH、LPUSHX、RPUSHX、RPOPLPUSH、BRPOPLPUSH;
注意:
【Redis-List新增元素操做】命令簡述:
命令 | 功能 | 參數 |
---|---|---|
LPUSH / RPUSH | (批量)添加元素 | key value [value ...] |
LPUSHX / RPUSHX | 向已存在的list中添加單個元素 | key value |
RPOPLPUSH | 彈出source尾壓入dest頭部 | source destination |
BRPOPLPUSH | 阻塞式彈出source壓入dest | source destination timeout |
【Redis-List新增元素操做】命令詳細對比分析以下:
【核心命令】:LPOP、RPOP、BLPOP、BRPOP;
注意:
【Redis-List彈出元素操做】命令簡述:
命令 | 功能 | 參數 |
---|---|---|
LPOP / RPOP | 彈出元素 | key |
BLPOP / BRPOP | 阻塞式彈出元素 | key [key ...] timeout |
【Redis-List彈出元素操做】命令詳細對比分析以下:
【核心命令】:LSET、LINDEX、LRANGE、LTRIM、LREM;
注意:
【Redis-List處理指定位置元素】命令簡述:
命令 | 功能 | 參數 |
---|---|---|
LSET | 指定位置設置元素 | key index value |
LINDEX | 查詢指定位置元素 | key index |
LRANGE | 查詢指定區間元素 | key start stop |
LTRIM | 保留指定區間元素 | key start stop |
LREM | 移除前/後count次的value元素 | key count value |
【Redis-List處理指定位置元素】命令詳細對比分析以下:
概述:
【核心命令】:SADD(增)、SCADD(數量統計)、SISMEMBER(存在)、SMEMBERS(全部元素)、SREM(移除)、SMOVE(移動);
注意:
【Redis-Set增刪移動及統計】命令簡述:
命令 | 功能 | 參數 |
---|---|---|
SADD | (批量)添加元素到Set中 | key member [member ...] |
SCARD | 統計Set中元素數量 | key |
SISMEMBER | 判斷指定元素是否存在於Set中 | key member |
SMEMBERS | 返回Set中的全部元素 | key |
SMOVE | 移動Set的指定元素到另外一個集合 | source destination member |
SRANDMEMBER | 返回Set中count個隨機元素 | key [count] |
SPOP | 移除並返回Set中count個隨機元素 | key [count] |
SREM | 移除Set中指定的元素 | key member [member ...] |
SSCAN | 迭代Set | key cursor [MATCH pattern] [COUNT count] |
【Redis-Set增刪移動及統計】命令詳細對比分析以下:
【核心命令】:差集SDIFF/SDIFFSTORE、交集SINTER/SINTERSTORE、並集SUNION/SUNIONSTORE;
注意:
【Redis-Set集合運算】命令簡述:
命令 | 功能 | 參數 |
---|---|---|
SDIFF | 【差集】返回在第一個set中但不在其餘set中的元素集合 | key [key ...] |
SDIFFSTORE | 【差集】將SDIFF結果存入destination | destination key [key ...] |
SINTER | 【交集】返回(多個)set集合的交集 | key [key ...] |
SINTERSTORE | 【交集】將多個set集合的交集存入dest | destination key [key ...] |
SUNION | 【並集】返回多個set的並集 | key [key ...] |
SUNIONSTORE | 【並集】將多個set集合的並集存入dest | destination key [key ...] |
【Redis-Set集合運算】命令詳細對比分析以下:
概述:
【核心命令】:HSET、HSETNX、HMSET;HGET、HMGET、HGETALL;
注意:
【Redis-Hash新增、查詢元素】命令簡述:
命令 | 功能 | 參數 |
---|---|---|
HSET | 設置hash中指定字段的值 | key field value |
HSETNX | field不存在才設置hash中指定field的值 | key field value |
HMSET | 批量設置hash值 | key field value [field value ...] |
HGET | 查詢hash中指定字段的值 | key field |
HMGET | 批量查詢指定field的value | key field [field ...] |
HGETALL | 查詢全部field-value列表 | key |
【Redis-Hash新增、查詢元素】命令詳細對比分析以下:
【核心命令】:HKEYS、HVALS、HLEN;HDEL、HEXISTS、HSTRLEN;HINCRBY、HINCRBYFLOAT;HSCAN;
注意:
【Redis-Hash統計、修改、刪除】命令簡述:
命令 | 功能 | 參數 |
---|---|---|
HKEYS | 查詢全部field列表 | key |
HVALS | 查詢全部value列表 | key |
HLEN | 查詢hash的field數量 | key |
HDEL | 移除hash中指定field字段 | key field [field ...] |
HEXISTS | 判斷hash中是否存在指定field | key field |
HSTRLEN | 查詢hash中filed關聯的value字符串的長度 | key field |
HINCRBY | 增長hash中指定field的值 | key field increment |
HINCRBYFLOAT | 增長hash中指定field的值 | key field increment |
HSCAN | 基於遊標迭代hashes | key cursor [MATCH pattern] [COUNT count] |
【Redis-Hash統計、修改、刪除】命令詳細對比分析以下:
《玩轉Redis-Redis基礎數據結構及核心命令》至此結束,後續將繼續分享Redis其餘數據結構及核心命令。
祝君好運!
Life is all about choices!
未來的你必定會感激如今拼命的本身!
【CSDN】【GitHub】【OSCHINA】【掘金】【微信公衆號】