Redis數據類型及經常使用命名總結

Redis數據類型:
Redis支持五種數據類型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。 
一、String(字符串)
string是redis最基本的類型,你能夠理解成與Memcached如出一轍的類型,一個key對應一個value。
string類型是二進制安全的。意思是redis的string能夠包含任何數據。好比jpg圖片或者序列化的對象 。
string類型是Redis最基本的數據類型,一個鍵最大能存儲512MB。
實例:
經常使用命令:
  • 設置值:SET KEY_NAME VALUE
Redis SET 命令用於設置給定 key 的值。若是 key 已經存儲其餘值, SET 就覆寫舊值,且無視類型。
  • 獲取值:GET KEY_NAME
若是 key 不存在,返回 nil 。若是key 儲存的值不是字符串類型,返回一個錯誤。
  • 刪除值:DEL KEY_NAME
刪除已存在的鍵。不存在的 key 會被忽略。
  • 將 key 中儲存的數字值增一:INCR KEY_NAME
若是 key 不存在,那麼 key 的值會先被初始化爲 0 ,而後再執行 INCR 操做。
若是值包含錯誤的類型,或字符串類型的值不能表示爲數字,那麼返回一個錯誤。
本操做的值限制在 64 位(bit)有符號數字表示以內。
  • 將 key 中儲存的數字值減一:DECR KEY_NAME
若是 key 不存在,那麼 key 的值會先被初始化爲 0 ,而後再執行 DECR 操做。
若是值包含錯誤的類型,或字符串類型的值不能表示爲數字,那麼返回一個錯誤。
本操做的值限制在 64 位(bit)有符號數字表示以內。
      • 將 key 中儲存的數字加上指定的增量值:INCRBY KEY_NAME INCR_AMOUNT
若是 key 不存在,那麼 key 的值會先被初始化爲 0 ,而後再執行 INCRBY 命令。
若是值包含錯誤的類型,或字符串類型的值不能表示爲數字,那麼返回一個錯誤。
本操做的值限制在 64 位(bit)有符號數字表示以內。
  • 將 key 所儲存的值減去指定的減量值:DECRBY KEY_NAME DECREMENT_AMOUNT
若是 key 不存在,那麼 key 的值會先被初始化爲 0 ,而後再執行 DECRBY 操做。
若是值包含錯誤的類型,或字符串類型的值不能表示爲數字,那麼返回一個錯誤。
本操做的值限制在 64 位(bit)有符號數字表示以內。
  • 爲指定的 key 追加值:APPEND KEY_NAME NEW_VALUE
若是 key 已經存在而且是一個字符串, APPEND 命令將 value 追加到 key 原來的值的 末尾。
若是 key 不存在, APPEND 就簡單地將給定 key 設爲 value ,就像執行 SET key value 同樣。
 
二、Hash(哈希)
Redis hash 是一個鍵名對集合。
Redis hash是一個string類型的field和value的映射表,hash特別適合用於存儲對象。
實例:
 
 
以上實例中 hash 數據類型存儲了包含用戶腳本信息的用戶對象。 實例中咱們使用了 Redis HMSET, HGETALL 命令,user:1爲鍵值。
每一個 hash 能夠存儲 232 -1 鍵值對(40多億)。
經常使用命令:
  • 設置值:HSET KEY_NAME FIELD VALUE
Redis Hset 命令用於爲哈希表中的字段賦值 。
若是哈希表不存在,一個新的哈希表被建立並進行 HSET 操做。
若是字段已經存在於哈希表中,舊值將被覆蓋。
  • 獲取值:HGET KEY_NAME FIELD_NAME
Redis Hget 命令用於返回哈希表中指定字段的值。
  • 獲取全部值:HGETALL KEY_NAME
Redis Hgetall 命令用於返回哈希表中,全部的字段和值。
在返回值裏,緊跟每一個字段名(field name)以後是字段的值(value),因此返回值的長度 是哈希表大小的兩倍。
  • 同時將多個 field-value (域-值)對設置到哈希表 key 中:HMSET KEY_NAME FIELD1 VALUE1 ...FIELDN VALUEN
Redis Hmset 命令用於同時將多個 field-value (字段-值)對設置到哈希表中。
此命令會覆蓋哈希表中已存在的字段。
若是哈希表不存在,會建立一個空哈希表,並執行 HMSET 操做。
  • 獲取全部給定字段的值:HMGET KEY_NAME FIELD1...FIELDN
Redis Hmget 命令用於返回哈希表中,一個或多個給定字段的值。
若是指定的字段不存在於哈希表,那麼返回一個 nil 值。
  • 刪除一個或多個哈希表字段:HDEL KEY_NAME FIELD1.. FIELDN
Redis Hdel 命令用於刪除哈希表 key 中的一個或多個指定字段,不存在的字段將被忽略。
  • 爲哈希表 key 中的指定字段的整數值加上增量 increment:HINCRBY KEY_NAME FIELD_NAME INCR_BY_NUMBER
Redis Hincrby 命令用於爲哈希表中的字段值加上指定增量值。
增量也能夠爲負數,至關於對指定字段進行減法操做。
若是哈希表的 key 不存在,一個新的哈希表被建立並執行 HINCRBY 命令。
若是指定的字段不存在,那麼在執行命令前,字段的值被初始化爲 0 。
對一個儲存字符串值的字段執行 HINCRBY 命令將形成一個錯誤。
本操做的值被限制在 64 位(bit)有符號數字表示以內。
  • 查看哈希表 key 中,指定的字段是否存在;HEXISTS KEY_NAME FIELD_NAME
Redis Hexists 命令用於查看哈希表的指定字段是否存在。
若是哈希表含有給定字段,返回 1 。 若是哈希表不含有給定字段,或 key 不存在,返回 0 。
  • 獲取哈希表中字段的數量:HLEN KEY_NAME
Redis Hlen 命令用於獲取哈希表中字段的數量。
哈希表中字段的數量。 當 key 不存在時,返回 0 。
  • 獲取全部哈希表中的字段:HKEYS KEY_NAME
Redis Hkeys 命令用於獲取哈希表中的全部字段名。
包含哈希表中全部字段的列表。 當 key 不存在時,返回一個空列表。
  • 獲取哈希表中全部值:HVALS KEY_NAME
Redis Hvals 命令返回哈希表全部字段的值。
一個包含哈希表中全部值的表。 當 key 不存在時,返回一個空表。
 
三、List(列表)
Redis 列表是簡單的字符串列表,按照插入順序排序。你能夠添加一個元素到列表的頭部(左邊)或者尾部(右邊)。
 
 
列表最多可存儲 232 - 1 元素 (4294967295, 每一個列表可存儲40多億)。
經常使用命令:
  • 將一個或多個值插入到列表頭部: LPUSH KEY_NAME VALUE1.. VALUEN
Redis Lpush 命令將一個或多個值插入到列表頭部。 若是 key 不存在,一個空列表會被建立並執行 LPUSH 操做。 當 key 存在但不是列表類型時,返回一個錯誤。
eg:127.0.0.1:6379> lpush mylist a b c
  • 在列表中添加一個或多個值:RPUSH KEY_NAME VALUE1..VALUEN
Redis Rpush 命令用於將一個或多個值插入到列表的尾部(最右邊)。
若是列表不存在,一個空列表會被建立並執行 RPUSH 操做。 當列表存在但不是列表類型時,返回一個錯誤。
eg:127.0.0.1:6379> rpush mylist2 a b c
  • 獲取列表指定範圍內的元素: LRANGE KEY_NAME START END
Redis Lrange 返回列表中指定區間內的元素,區間以偏移量 START 和 END 指定。 其中 0 表示列表的第一個元素, 1 表示列表的第二個元素,以此類推。 你也可使用負數下標,以 -1 表示列表的最後一個元素, -2 表示列表的倒數第二個元素,以此類推。
eg:127.0.0.1:6379> lrange mylist 0 5
127.0.0.1:6379> lrange mylist2 0 -1
  • 移出並獲取列表的第一個元素:LPOP KEY_NAME
Redis Lpop 命令用於移除並返回列表的第一個元素。
eg:127.0.0.1:6379> lpop mylist
  • 移除並獲取列表最後一個元素:RPOP KEY_NAME
Redis Rpop 命令用於移除並返回列表的最後一個元素。
eg:127.0.0.1:6379> rpop mylist2
  • 獲取列表長度:LLEN KEY_NAME
Redis Llen 命令用於返回列表的長度。 若是列表 key 不存在,則 key 被解釋爲一個空列表,返回 0 。 若是 key 不是列表類型,返回一個錯誤。
eg:127.0.0.1:6379> llen mylist
  • 將一個或多個值插入到已存在的列表頭部: LPUSHX KEY_NAME VALUE1.. VALUEN
Redis Lpushx 將一個或多個值插入到已存在的列表頭部,列表不存在時操做無效。
eg:127.0.0.1:6379> lpushx mylist x
  • 爲已存在的列表添加值:RPUSHX KEY_NAME VALUE1..VALUEN
Redis Rpushx 命令用於將一個或多個值插入到已存在的列表尾部(最右邊)。若是列表不存在,操做無效。
eg:127.0.0.1:6379> rpushx mylist2 4
  • 移除列表元素: LREM KEY_NAME COUNT VALUE
Redis Lrem 根據參數 COUNT 的值,移除列表中與參數 VALUE 相等的元素。
COUNT 的值能夠是如下幾種:
count > 0 : 從表頭開始向表尾搜索,移除與 VALUE 相等的元素,數量爲 COUNT
count < 0 : 從表尾開始向表頭搜索,移除與 VALUE 相等的元素,數量爲 COUNT 的絕對值。
count = 0 : 移除表中全部與 VALUE 相等的值。
eg:127.0.0.1:6379> lrem mylist3 2 2     從頭開始刪除兩個鍵值爲2的數據
eg:127.0.0.1:6379> lrem mylist3 -2 2    從末尾開始刪除兩個鍵值爲2的數據
eg:127.0.0.1:6379> lrem mylist3 0 1     刪除全部鍵值爲1的數據
  • 經過索引設置列表元素的值:LSET KEY_NAME INDEX VALUE
Redis Lset 經過索引來設置元素的值。
當索引參數超出範圍,或對一個空列表進行 LSET 時,返回一個錯誤。
eg:127.0.0.1:6379> lset mylist 3 cc
  • 在列表的元素前或者後插入元素: LINSERT KEY_NAME BEFORE EXISTING_VALUE NEW_VALUE
Redis Linsert 命令用於在列表的元素前或者後插入元素。 當指定元素不存在於列表中時,不執行任何操做。 當列表不存在時,被視爲空列表,不執行任何操做。 若是 key 不是列表類型,返回一個錯誤。
eg:127.0.0.1:6379> linsert mylist3 before b 888
127.0.0.1:6379> linsert mylist3 after b 999
  • 移除列表的最後一個元素,並將該元素添加到另外一個列表並返回:RPOPLPUSH SOURCE_KEY_NAME DESTINATION_KEY_NAME
Redis Rpoplpush 命令用於移除列表的最後一個元素,並將該元素添加到另外一個列表並返回。
eg:127.0.0.1:6379> rpoplpush mylist5 mylist6
 
四、Set(集合)
Redis的Set是string類型的無序集合。
集合是經過哈希表實現的,因此添加,刪除,查找的複雜度都是O(1)。
sadd 命令
添加一個string元素到,key對應的set集合中,成功返回1,若是元素已經在集合中返回0,key對應的set不存在返回錯誤。
 
注意:以上實例中 lisi添加了兩次,但根據集合內元素的惟一性,第二次插入的元素將被忽略。
集合中最大的成員數爲 232 - 1(4294967295, 每一個集合可存儲40多億個成員)。
 
五、zset(sorted set:有序集合)
Redis zset 和 set 同樣也是string類型元素的集合,且不容許重複的成員。
不一樣的是每一個元素都會關聯一個double類型的分數。redis正是經過分數來爲集合中的成員進行從小到大的排序。
zset的成員是惟一的,但分數(score)卻能夠重複。
zadd 命令
添加元素到集合,元素在集合中存在則更新對應score
zadd key score member
 
相關文章
相關標籤/搜索