Redis常用五大數據類型


五大數據類型常用的命令(此處只介紹常用命令更多命令請參考https://www.redis.net.cn/tutorial/3505.html):

 Key(鍵):

  keys *             查看當前庫全部key名稱。
  exists key          判斷某個key是否存在。存在返回1,不存在返回0。
  move key db           把當前庫某個key移到指定庫。
  expire key second       為指定的key設置過期時間,單位為秒。
  ttl key            查看指定key還有多少秒過期,-1表示永不過期,-2表示已過期(如果過期該key會被移出庫)。
  type key             查看你的key是什么數據類型。
  del [key...]          刪除指定key,可同時刪除多個。

 


 

 1.string(字符串):

  string類型是redis最基本的數據類型,redis中一個字符串value最多可以是512M。
  string類型是二進制安全的。意思是redis的string可以包含任何數據。比如jpg圖片或者序列化的對象。

 

  set        設置一個key-value。
  get        獲取一個key的value。
  del        刪除一個或多個key-value。
  append      對指定key的value追加值。
  strlen       獲取指定key的value的長度。
  incr        對指定key的value每次加1。 一定要是數字才能進行加減。
  decr       對指定key的value每次減1。 一定要是數字才能進行加減。
  incrby       對指定key的value每次加n(數量可指定)。 一定要是數字才能進行加減。
  decrby         對指定key的value每次減n(數量可指定)。 一定要是數字才能進行加減。
  getrange     獲取指定key的value的指定區間范圍內的值,類似於java的substring。
  setrange     設置指定key的value的指定區間范圍內的值,原區間范圍的值會被覆蓋。
  setex(set with expire)      設置一個key-value並指定該key的過期時間(秒)。
  setnx(set if not exist)      設置一個key-value,如果該key存在則不設置,如果不存在則設置。
  mset        設置一個或多個key-value。
  msetnx       設置一個或多個key-value,如果key都不存在則設置,如果其中有一個key存在則不設置。
  mget        獲取一個或多個key的value。
  getset         獲取一個key(key必須存在)並設置該key的值,返回原來的值。

 


 

 2.hash(哈希,類似java里的Map):

  redis hash 是一個鍵值對集合。redis hash 是一個string類型的field和value的映射表,hash特別適合用於存儲對象。

  類似Java里面的Map<String,Object>。KV模式不變,但V是一個鍵值對

 

  hset      添加一個hash集合並往里面添加一對KV。
  hget      獲取hash集合某個Key的數據。
  hmset     添加一個hash集合並往里面添加N對KV。
  hmget     獲取hash集合N個Key的數據。
  hgetall     獲取hash集合全部的KV數據。
  hdel      移除hash集合中的N個Key。
  hlen      獲取hash集合中Key的數量。
  hexists     判斷hash集合中某個Key是否存在。
  hkeys     獲取hash集合全部Key。
  hvals     獲取hash集合全部Value。
  hincreby   給hash集合中的某個key加N。 一定要是數字才能加,加整數。
  hincrebyfloat 給hash集合中的某個key加N。 一定要是數字才能加,加整數或小數。
  hsetnx    添加一個hash集合並往里面添加一對KV(如果key不存在則添加,存在則不添加)。

 


 

 3.list(列表):

   redis list 列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)。它的底層實際是個鏈表。

 

  說明:l(left)、r(right),將結構理解為棧,l表示棧頂、r棧底。
  lpush      添加一個list列表,將一個或多個值插入到列表頭部,先進后出。
  rpush      添加一個list列表,將一個或多個值插入到列表尾部,先進先出。
  lrange      獲取list列表指定區間范圍內的值。
  lpop      移除list列表頂部元素(第一個元素),並返回被移除的元素。
  rpop      移除list列表底部元素(最后一個元素),並返回被移除的元素。
  lindex     按照頂部索引下標獲得元素。
  llen      獲取list列表的長度。
  lrem      移除list列表N個value。(lrem key count value)。
  ltrim      截取list列表指定范圍內的值后再賦值給list列表(原值將被截取值覆蓋)。
  rpoplpush   將指定列表的底部元素移到目標列表的頂部。
  lset      設置列表指定下標的值。
  linsert    在指定列表的某個元素前面或后面添加元素。(linsert key before/after 列表中的元素 添加的元素)。

  list列表總結:
   它是一個字符串鏈表,left、right都可以添加。
   如果鍵不存在,創建新的鏈表。
   如果鍵已存在,新增內容。
   如果值全移除,對應的鍵也就消失了。
   鏈表的操作無論是頭和尾效率都極高,但假如是對中間元素進行操作,效率就比較低了。

 


 

 4.set(集合):

    redis set是string類型的無序集合。它是通過HashTable實現的。

 

  sadd        將一個或多個成員插入到set集合中。
  smembers     遍歷set集合。
  sismember      判斷指定元素是否是set集合的成員。
  scard        獲取set集合中元素的個數。
  srem        移除set集合中N個元素。
  srandmember    隨機獲取set集合中N個元素。
  spop        隨機移除set集合中N個元素並返回被移除的元素。
  smove       將指定集合中的某個元素移到目標集合中。
  sdiff        集合的減集。
  sinter        集合的交集。
  sunion      集合的並集。

 


 

 5.zset(sorted set:有序集合):

  redis zset 和 set 一樣也是string類型元素的集合,且不允許重復的成員。不同的是每個元素都會關聯一個double類型的分數。
  redis正是通過分數來為集合中的成員進行從小到大的排序。zset的成員是唯一的,但分數(score)卻可以重復。

 

  zadd          將一個或多個成員插入到zset集合中。(zadd key 分數 值...)例如:[zadd zset1 80 zhangsan]。
  zrange         獲取zset集合指定區間范圍內的值(zrange key start stop [withscores])。加withscores可查看分數與值
  zrangebyscore       獲取zset集合指定分數范圍內的值(zrangebyscore key [(]min [(]max [limit offset count]),“(”表示不包含。
  zrem          移除zset集合中N個元素。
  zcard          獲取zset集合中元素的個數(不包含分數,分數和元素是一體的)。
  zcount        獲取zset集合指定分數范圍內的個數。
  zrank          獲取zset集合某個元素的下標。
  zscore         獲取zset集合某個元素對應的分數。
  zrevrank        逆序獲取zset集合某個元素的下標。
  zrevrange      逆序獲取zset集合指定區間范圍內的值。
  zrevrangebyscore    逆序獲取zset集合指定分數范圍內的值。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM