天天看點

Redis 基本資料類型及指令

作者:樹下觀影

Redis 基本資料類型及指令

基本資料類型

Redis主要有5種資料類型,包括:

  • String

字元串類型是 Redis 中最基本的資料類型,它能存儲任何形式的字元串,包括二進制資料,序列化後的資料,JSON 化的對象甚至是一張圖檔。最大 512M。

  • List

Redis 清單是簡單的字元串清單,按照插入順序排序。你可以添加一個元素到清單的頭部(左邊)或者尾部(右邊)

  • Hash

Redis hash 是一個 string 類型的 field 和 value 的映射表,hash 特别适合用于存儲對象。

  • Set

Redis 的 Set 是 string 類型的無序集合,集合成員是唯一的,即集合中不能出現重複的資料.

  • Zset

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

Redis基本資料詳解及指令

1. 字元串 (String)

字元串類型是Redis中最為基礎的資料存儲類型,它在Redis中是二進制安全的,這意味着該類型可以接受任何格式的資料,如JPEG圖像資料或json對象描述資訊等。在Redis中字元串類型的value最多可以容納的資料長度是512M。

常用指令:

  • set key value 設定值
  • get key 擷取值
  • getset 将給定的值設定進去,并傳回舊值
  • mget key1 key2… 擷取一個或多個key的值
  • setnx key value 當key不存在時才設定值
  • incr key 将key存儲的值+1
  • incrby key increment 将 key 所儲存的值加上給定的增量值(increment)
  • decr key 将key存儲的值-1
  • decrby key increment 将 key 所儲存的值減去給定的增量值(increment)
  • strlen key 傳回key所存儲的字元串的長度

2. 散列(hash)

Redis中Hash類型可以看成句又String key和String value的map容器。是以該類型非常适合存儲對象的資訊。

常用指令:

  • hset key field value
  • hget key field
  • hmset key field1 value1 [field2 value2 ] 同時set多個field值
  • hmget key field1 [field2]
  • hgetall key 擷取key的所有值
  • hincrby key field increment 給指定的key的field增加給定的增量值(increment)
  • hkeys key 擷取某個key的所有field
  • hvals key 擷取某個key的所有value
  • hlen key 擷取hash表中字段的數量
  • hexists key field 檢視hash表中的字段是否存在
  • hdel key field1 [field2] 删除一個或多個hash表字段

特别說明:散列類型本質上是一個鍵值存儲系統,它包含了多個鍵值對,每個鍵值對都是一個字段(field)和一個值(value)組成。散列類型可以完成一些更複雜的操作,比如添加、擷取、删除和批量操作等。散列類型适用于存儲多個相關的變量,比如表示使用者資訊、緩存和統計分析等。

3. 清單(list)

在Redis中,List類型是按照插入順序排序的字元串連結清單。和資料庫結構中的普通連結清單一樣,可以在頭部和尾部添加新的元素。在插入時如果鍵不存在,Redis将為該鍵建立一個新的連結清單。與此相反,如果連結清單中所有的元素均被移除,那麼該鍵也會被從資料庫中删除。

常用指令:

  • lpush key value1 [value2] 将一個值或多個值插入到清單頭部
  • rpush key value1 [value2] 将一個值或多個值插入到清單尾部
  • lrange key start stop 擷取清單指定範圍的元素
  • lpop key 移出并擷取清單中的第一個元素
  • rpop key 移出并擷取清單中的最後一個元素
  • blpop key1 [key2 ] timeout 阻塞性的移出并擷取清單的第一個元素,如果沒有元素就會阻塞到逾時或有元素為止
  • brpop key1 [key2 ] timeout 阻塞性的移出并擷取清單的最後一個元素,如果沒有元素就會阻塞到逾時或有元素為止
  • lindex key index 通過索引位置擷取清單中的元素
  • llen key 擷取清單長度
  • lset key index value 通過索引位置設定值
  • ltrim key start stop 對一個清單進行修剪,隻保留指定區間的元素,區間外的都删除掉

4. 集合(Set)

Redis 的 Set 是 String 類型的無序集合。集合成員是唯一的,這就意味着集合中不能出現重複的資料。Redis 中集合是通過哈希表實作的,是以添加,删除,查找的複雜度都是 O(1)。集合中最大的成員數為 2^32 - 1

常用指令:

  • sadd key member1 [member2] 向集合中添加元素
  • scard key 擷取集合的成員數
  • sdiff key1 [key2] 傳回第一個集合與其他集合之間的差異
  • sinter key1 [key2] 傳回給定所有集合的交集
  • sunion key1 [key2] 傳回給定集合的并集
  • sismember key member 判斷member元素是否是集合中的成員
  • smembers key 傳回集合中所有成員
  • spop key 移除并傳回集中中的一個随機元素
  • srandmember key [count] 傳回集合中一個或多個随機數
  • srem key member1 [member2] 移除集合中一個或多個成員

5. 有序集合(sorted set)

Redis 有序集合和集合一樣也是 string 類型元素的集合,且不允許重複的成員。不同的是每個元素都會關聯一個 double 類型的分數。redis 正是通過分數來為集合中的成員進行從小到大的排序。

常用指令:

  • zadd key score1 member1 [score2 member2] 向有序集合中添加一個或多個成員,或更新已有成員的分數
  • zcard key 擷取有序集合中的成員數量
  • zrange key start end [withscores] 通過索引區間傳回有序集合中的成員
  • zrevrange key start stop [WITHSCORES] 通過索引區間傳回有序集合中的成員,分數從高到低
  • zrangebyscore key min max [WITHSCORES] [LIMIT] 通過分數傳回有序集合指定區間内的成員
  • zrevrangebyscore key min max [WITHSCORES] [LIMIT] 通過分數傳回有序集合指定區間内的成員,分數由高到低排序
  • zrem key member [member …] 移除
  • zremrangebyrank key start stop 移除給定排名區間的所有成員
  • zremrangebyscore key min max 移除給定分數區間的所有成員
  • zscore key member 傳回有序集合中成員的分數
  • zrank key member 傳回排名

Redis 常用前置指令

  1. 檢視目前資料庫中 key 的數目:dbsize
  2. 切換庫指令:select db
  3. 删除目前庫的資料:flushdb
  4. redis 自帶的用戶端退出目前 redis 連接配接:exit 或 quit
  5. 顯示所有的:key *
  6. 判斷 key 是否存在:exists key [key…]
  7. 設定 key 的生存時間,超過時間,key 自動删除。機關是秒:expire key seconds
  8. 以秒為機關,傳回 key 的剩餘生存時間:ttl key
  9. 檢視 key 所存儲值的資料類型傳回值:type key
  10. 删除存在的 key ,不存在的 key 忽略:del key [key…]

繼續閱讀