1. 程式人生 > >Redis之資料型別及命令

Redis之資料型別及命令

  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
     Set 是無序集合,且不允許重複的成員。最大可以包含(2^32 -1)個元素。增刪查操作的時間複雜度為 O(1)。                Set 的是通過 hashtable 實現的, hashtable 會隨著新增或者刪除自動的調整大小。 需要注意的是調整 hashtable 大小時候需要同步(獲取寫鎖),會阻塞其他讀寫操作。                關於 Set 集合型別 除了基本的新增刪除操作,還包含集合的取並集(union),交集(intersection), 差集(difference)。     常用指令:
指令 註釋 例子
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