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