redis 數據類型及操做命令

Redis 數據類型

Redis支持五種數據類型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。html

  • String(字符串)
    String是最經常使用、最簡單的 key-value 鍵值對,value 不只能夠是 String,也能夠是數字。String在redis內部存儲默認就是一個字符串,被redisObject所引用,當遇到incr,decr等操做時會轉成數值型進行計算,此時redisObject的encoding字段爲int。
    string 是 redis 最基本的類型,你能夠理解成與 Memcached 如出一轍的類型,一個 key 對應一個 value。
    string 類型是二進制安全的。意思是 redis 的 string 能夠包含任何數據。好比jpg圖片或者序列化的對象。
    string 類型是 Redis 最基本的數據類型,string 類型的值最大能存儲 512MB。

    SET key value 設置指定 key 的值
    GET key 獲取指定 key 的值
    INCR key 將 key 中儲存的數字值增一
    INCRBY key increment 將 key 所儲存的值加上給定的增量值(increment)
    INCRBYFLOAT key increment 將 key 所儲存的值加上給定的浮點增量值(increment)
    DECR key 將 key 中儲存的數字值減一
    DECRBY key decrement key 所儲存的值減去給定的減量值(decrement)
    APPEND key value 若是 key 已經存在而且是一個字符串, APPEND 命令將指定的 value 追加到該 key 原來值(value)的末尾
    DEL key [key ...] 刪除key
    EXISTS key [key ...] key是否存在redis

  • Hash(哈希)
    Redis hash 是一個鍵值(key=>value)對集合。
    Redis hash 是一個 string 類型的 field 和 value 的映射表,hash 特別適合用於存儲對象
    Redis Hash對應Value內部實際就是一個HashMap,實際這裏會有2種不一樣實現,這個Hash的成員比較少時Redis爲了節省內存會採用相似一維數組的方式來緊湊存儲,而不會採用真正的HashMap結構,對應的value redisObject的encoding爲zipmap,當成員數量增大時會自動轉成真正的HashMap,此時encoding爲ht。
    HSET key field value 爲指定的key設定field/value
    HMSET key field value [field value ...] 設置key中的多個field/value
    HDEL key field1 [field2] 刪除一個或多個哈希表字段
    HEXISTS key field 查看哈希表 key 中,指定的字段是否存在
    HGET key field 獲取存儲在哈希表中指定字段的值
    HMGET key field [field ...] 獲取key中的多個field的值
    HGETALL key 獲取在哈希表中指定 key 的全部字段和值
    HINCRBY key field increment 爲哈希表 key 中的指定字段的整數值加上增量 increment
    HDEL key field [field ...] 刪除一個或多個字段
    del key 刪除整個hash
  • List(列表)
    Redis 列表是簡單的字符串列表,按照插入順序排序。你能夠添加一個元素到列表的頭部(左邊)或者尾部(右邊)
    Redis list的實現爲一個雙向鏈表,便可以支持反向查找和遍歷,更方便操做,不過帶來了部分額外的內存開銷,Redis內部的不少實現,包括髮送緩衝隊列等也都是用的這個數據結構
    應用場景:
    Redis list的應用場景很是多,也是Redis最重要的數據結構之一,好比twitter的關注列表、粉絲列表等均可以用Redis的list結構來實現,再好比有的應用使用Redis的list類型實現一個簡單的輕量級消息隊列,生產者push,消費者pop/bpop
    LPUSH key value [value …] 將一個或多個值 value 插入到列表 key 的表頭
    LPUSHX key value 將值 value 插入到列表 key 的表頭,當且僅當 key 存在而且是一個列表
    RPUSH key value [value …] 將一個或多個值 value 插入到列表 key 的表尾(最右邊)
    RPUSHX key value 將值 value 插入到列表 key 的表尾,當且僅當 key 存在而且是一個列表
    LPOP key 移除並返回列表 key 的頭元素
    RPOP key 移除並返回列表 key 的尾元素
    LINDEX key index 返回列表 key 中,下標爲 index 的元素
    LINSERT key BEFORE|AFTER pivot value 將值 value 插入到列表 key 當中,位於值 pivot 以前或以後
    LSET key index value 將列表 key 下標爲 index 的元素的值設置爲 value
    LRANGE key start stop 返回列表 key 中指定區間內的元素,能夠爲負數
    LTRIM key start stop 對一個列表進行修剪(trim),就是說,讓列表只保留指定區間內的元素,不在指定區間以內的元素都將被刪除
    BLPOP key [key …] timeout 移出並獲取列表的第一個元素, 若是列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止
    BRPOP key1 [key2 ] timeout 移出並獲取列表的最後一個元素, 若是列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止
    LREM key count value 根據參數 count 的值,移除列表中與參數 value 相等的元素
    count > 0 : 從表頭開始向表尾搜索,移除與 value 相等的元素,數量爲 count 。
    count < 0 : 從表尾開始向表頭搜索,移除與 value 相等的元素,數量爲 count 的絕對值。
    count = 0 : 移除表中全部與 value 相等的值。
  • 集合(Set)
    Redis的Set是string類型的無序集合。集合成員是惟一的,這就意味着集合中不能出現重複的數據。
    Redis中集合是經過哈希表實現的,因此添加,刪除,查找的複雜度都是O(1)。
    集合中最大的成員數爲 232 - 1 (4294967295, 每一個集合可存儲40多億個成員)。

    SADD key member [member …] 將一個或多個 member 元素加入到集合 key 當中,已經存在於集合的 member 元素將被忽略
    SMEMBERS key 返回集合 key 中的全部成員
    SISMEMBER key member 判斷 member 元素是否集合 key 的成員
    SPOP key 移除並返回集合中的一個隨機元素
    SRANDMEMBER key [count] 若是命令執行時,只提供了 key 參數,那麼返回集合中的一個隨機元素
    若是 count 爲正數,且小於集合基數,那麼命令返回一個包含 count 個元素的數組,數組中的元素各不相同。若是 count 大於等於集合基數,那麼返回整個集合。
    若是 count 爲負數,那麼命令返回一個數組,數組中的元素可能會重複出現屢次,而數組的長度爲 count 的絕對值
    SREM key member [member …] 移除集合 key 中的一個或多個 member 元素,不存在的 member 元素會被忽略
    SCARD key 返回集合 key 的基數(集合中元素的數量)
    SINTER key [key …] 交集成員的列表
    SINTERSTORE destination key [key …] 這個命令相似於 SINTER key [key …] 命令,但它將結果保存到 destination 集合,而不是簡單地返回結果集
    SUNION key [key …] 並集成員的列表
    SDIFF key [key …] 返回一個集合的所有成員,該集合是全部給定集合之間的差集數組

  • 有序集合(sorted set)
    Redis 有序集合和集合同樣也是string類型元素的集合,且不容許重複的成員。
    不一樣的是每一個元素都會關聯一個double類型的分數。redis正是經過分數來爲集合中的成員進行從小到大的排序。
    有序集合的成員是惟一的,但分數(score)卻能夠重複。
    集合是經過哈希表實現的,因此添加,刪除,查找的複雜度都是O(1)。 集合中最大的成員數爲 232 - 1 (4294967295, 每一個集合可存儲40多億個成員)。
    ZADD key score member [[score member] [score member] …] 將一個或多個 member 元素及其 score 值加入到有序集 key 當中
    ZRANGE key start stop [WITHSCORES] 返回有序集 key 中,指定區間內的成員
    ZSCORE key member 返回有序集 key 中,成員 member 的 score 值
    ZINCRBY key increment member 爲有序集 key 的成員 member 的 score 值加上增量 increment
    ZCARD key 返回有序集 key 的基數
    ZCOUNT key min max 返回有序集 key 中, score 值在 min 和 max 之間(默認包括 score 值等於 min 或 max )的成員的數量
    ZREVRANGE key start stop [WITHSCORES] 返回有序集 key 中,指定區間內的成員
    ZRANK key member 返回有序集 key 中成員 member 的排名。其中有序集成員按 score 值遞增(從小到大)順序排列
    ZREM key member [member …] 移除有序集 key 中的一個或多個成員,不存在的成員將被忽略

參考:安全

相關文章
相關標籤/搜索