Redis之資料型別及命令
阿新 • • 發佈:2019-10-17
Redis(REmote DIctionary Server) 是一個遵守BSD協議、支援網路、可基於記憶體亦可持久化的日誌型key-value儲存系統。
KEY
常用指令:
指令 | 註釋 | 備註 |
exits key | 檢測指定 key 是否存在 | 1 : 存在,0 : 不存在 |
del key1 key2......keyN | 刪除給定 key | 返回刪除 key 的數目,0 表示給定 key 都不存在 |
type key | 返回給定 key 值的型別 | none : key 不在 string : 字元型別 list : 連結串列型別 set : 無序集合型別 |
keys pattern | 返回匹配指定模式的所有 key | |
randomkey | 隨機返回一個 key | 如果當前資料庫是空的,返回空串 |
rename oldkey newkey | 重新命名一個 key | 如果 newkey 已存在,將會被覆蓋newkey的值. |
expire key seconds | 設定key 的過期時間,單位是秒。 | 返回 1 : 成功,0 :key 不存在 |
ttl key | 返回key的剩餘過期秒數 | -1 : key未設定過期時間, -2:key不存在 |
persist key | 清除key的過期時間 | 1 : 成功 0:key不存在或者沒有設定過期時間 |
VALUE
Redis 提供五種資料型別:String,Hash,List,Set 及 ZSet。
- String
String 是最基本的型別,而且 String 型別是二進位制安全的,意思是 Redis 的 String 可以 包含任何資料。
常用指令:
指令 | 註釋 | 例子 |
set key value | 存資料 | set username 'winn' |
get key | 取資料 | get username |
mset key1 value1... keyn valuen | 一次存多個鍵值對 | mset uname 'winn' pwd '123' |
mget key1 ... keyn | 一次取多個值 | mget uname pwd |
- Hash
Hash 是一個 String 型別的 field 和 value 的對映表,最大可以包含(2^32 -1)個鍵值對。增刪操作的時間複雜度為 O(1)。
Hash 特別適合用於儲存物件,將一個物件儲存在 Hash 型別中會佔用更少的記憶體,並且可以更方便的存取整個物件。【省記憶體的原因是新建一個 Hash 物件時開始是用 zipmap(又稱為 smallhash)來儲存的。這個 zipmap 其實並不是hash table,但是 zipmap 相比正常的 hash 實現,可以節省不少 hash 本身需要的一些元資料儲存開銷。儘管 zipmap 的新增、刪除、查詢都是 O(n),但是由於一般物件的 field 數量都不太多,所以使用 zipmap的新增刪除平均還是 O(1)。如果 field 或者 value的大小超出一定限制(在配置檔案中指定)後,redis會在內部自動將zipmap替換成正常的hash實現.#配置欄位最多 64 個 hash-max-zipmap-entries 64 #配置 value 最大為 512 位元組 hash-max-zipmap-value 512
常用指令:
指令 | 註釋 | 例子 |
hmset key field1 value1 ... fieldn valuen | 存資料 | hmset user name 'winn' sex 'man' |
hget key | 取資料 | hget user name |
hgetall key | 獲取物件 | |
HKEYSkey | 奪取物件中的所有filed | |
HVALSkey | 奪取物件中的所有value |
- List(雙向連結串列型別)
List 是一個連結串列結構,可以理解為一個每個子元素都是 String 型別的雙向連結串列。主要功能是 push、pop、獲取一個範圍內的所有值等。
常用指令:
指令 | 註釋 | 例子 |
lpush listName value | 將value存入list的表頭 | lpush listData demo |
rpush listName value | 將value存入list的表尾 | rpush listData demo |
lrange listName startIndex endIndex | 返回下標在[startIndex, endIndex]中的值 | lrange listData 0 10 |
- Set
指令 | 註釋 | 例子 |
sadd key member | 將value存入set | sadd setData set demo |
smembers key | 返回key中的資料 | members setData |
SDIFF key1 [key2] | 返回給定所有集合的差集 | |
SINTER key1 [key2] | 返回給定所有集合的交集 | |
SUNION key1 [key2] | 返回所有給定集合的並集 |
- ZSet(有序集合型別Sorted Set)
Sorted Set 是有序集合,且不允許重複的成員。它在 Set 的基礎上增加了一個順序屬性(score),這一屬性在新增修改元素的時候可以指定,每次指定後,會自動重新按新的值調整順序。
常用指令:
指令 | 註釋 | 例子 |
zadd key score member | 存資料 | zset zsetData 0 demo |
zrange key startScore endScore [WITHSCORES] | 取score在[startScore, endScore]之間的資料 | zrange zsetData 0 10 |
補充
- 系統常用指令
指令 | 註釋 | 備註 |
keys name | 獲取指定key | keys * 獲取所有key |
flushdb | 清除當前資料庫的所有資料 | |
flushall | 清除所有資料庫的所有資料 | |
besize | 返回資料庫中key的數量 | |
config set field value | 設定系統引數 | config set maxmemory 100mb |
config get field | 檢視系統引數 | config get maxmemory |
- 更多命令,請檢視(全集)https://redis.io/commands
&n