1. 程式人生 > >Redis 的常用五大資料型別

Redis 的常用五大資料型別

2016-12-21 14:54:20


該系列文章連結
NoSQL 資料庫簡介
Redis的安裝及及一些雜項基礎知識
Redis 的常用五大資料型別(key,string,hash,list,set,zset)
Redis 配置檔案介紹
Redis 持久化之RDB
Redis 持久化之AOF
Redis 主從複製
Redis 事務
Redis 釋出與訂閱


Redis 相對其它型別的 NoSQL 資料庫而言,更出彩的一點就是有更多的資料型別共使用者選擇。

學習任意一門技術,都應該從官網入手,Redis官網(https://redis.io/)Redis 中文網(http://www.redis.cn/)(華為建立的)
本系列文章只講常用命令,對於完整命令及資訊可以翻閱

Redis 命令參考(http://redisdoc.com/index.html)

既然 Redis 屬於鍵值對型別資料庫,那麼接下來來看看獨屬於鍵的命令吧

一.key
    1.keys pattern:在本資料庫中查詢對應某種格式的鍵
        找到本資料庫中所有的鍵(* 代表1個或多個字元):keys *
       
       2. 找到 study 名稱下所有的資料庫:keys study:*
       


    3.exists key:判斷 key 鍵是否存在
        查詢 study:string:k2 和 study:string:k4 鍵值是否存在:
            
    4.move key db:將 key 鍵移到 db 資料庫中
           
    5.type key:求出 key 鍵的型別
        
   
    6.expire key seconds:設定 key 的過期時間
           
    7.ttl key :查詢 key 的過期時間
          
    二. string
    string 是字串,key:value 鍵值對
    string是redis最基本的型別,你可以理解成與Memcached一模一樣的型別,一個key對應一個value。
string型別是二進位制安全的。意思是redis的string可以包含任何資料。比如jpg圖片或者序列化的物件 。
string型別是Redis最基本的資料型別,一個redis中字串value最多可以是512M
    1.set/get/append string_name value
      incr/incrby decr/decrby
    若是 value 僅是數字,則可以用 incr/incrby decr/decrby 對 value 做加減操作
       

    2.strlen
    求字串的長度
       

    3.getrange/setrange
    擷取總串中的部分字串
       
    4.setex/setnx
        setex:建立鍵值和過期時間
           
        setnx:set if not exists
           
    5.mset/mget/msetnx
        對多個 string 進行操作
       
        這張圖是關於三個命令的操作,以及一些特殊情況
        mset key value [key]:若值已存在,則 value 覆蓋舊值,如果不希望的話,則使用 msetnx
        msetnx:只會在所有給定 key 都不存在的情況下進行操作
    6.getset
        先取值再設定值
       

    三.hash
    Redis hash 是一個鍵值對集合。
    Redis hash是一個string型別的field和value的對映表,hash特別適合用於儲存物件。
    1.hset/hget/hmset/hmget/hgetall/hdel
       
    2.hlen
  同上
    3.hexists
  同上
    4.hincrby/hincrbyfloat
       
    5.hsetnx
       

    四.list

  Redis 列表是簡單的字串列表,按照插入順序排序。你可以新增一個元素導列表的頭部(左邊)或者尾部(右邊)。

  它的底層實際是個連結串列
    1.lpush/rpush/lrange/lpop/rpop    
       
       
        lpush 入 list,可以把 list 當作棧來用
        rpush 入 lsit,可以把 list 當作佇列來用
    2.llen/lindex
       
    3.lrem
        lrem key count value:刪除 key 中重複的值
       
    4.ltrim
        ltrim key begin end
       
    5.rpoplpush
       
    6.lset key index value
      linsert key before/after value new_value
        這兩個是在 list 中間插入的命令,效率很低,有興趣的可以自己試試
    8.list 總結
    它是一個字串連結串列,left、right都可以插入新增。
    如果鍵不存在,建立新的連結串列;如果鍵已存在,新增內容;如果值全移除,對應的鍵也就消失了。
    連結串列的操作無論是頭和尾效率都極高,但假如是對中間元素進行操作,效率就很差了。
    五.set

  Redis的Set是string型別的無序集合。它是通過HashTable實現實現的,

  set 是一個集合,既然是集合,那麼就是無序,不可重複的。
        1.sadd/srem/smembers/sismember
           
        2.scard
           
       

        3.srandmember
           
        4.spop
           
        5.smove
            把 set1 中的元素 移到 set2 中
           
        6.數學集合類
        差集:sdiff
        並集:sunion
        交集:sinter


    六.zset:sorted set

  Redis zset 和 set 一樣也是string型別元素的集合,且不允許重複的成員。

  不同的是每個元素都會關聯一個double型別的分數。

  redis正是通過分數來為集合中的成員進行從小到大的排序。zset的成員是唯一的,但分數(score)卻可以重複。
    1.zadd/zrem/zscore
       
    2.zcard/zcount
       
    3.zrange//zrangbyscore/zrank
       
        zrangebyscore 命令仔細使用一下
        http://redisdoc.com/sorted_set/zrangebyscore.html
    4.zrevrange/zrevrangebyscore/zrevrank
        這個自己去寫寫看