大部分同學應該都知道redis數據庫是以 key-value 形式存儲數據的,本文將介紹redis數據庫的5種數據結構,分別為
string[字符串] list[列表] set[集合] hash[散列] 及 zset[有序集合]
。
1. string
字符串擁有一些和其它鍵值存儲相似的命令,GET SET DEL 。本文將使用 redis-cli 操作 redis,并將 hello - world 存入redis中
string數據類型
redis-cli操作
如上所示:使用set命令時,設置k-v成功后,客戶端返回OK,刪除成功后將返回被成功刪除的值的數量,get獲取不到對應鍵值將返回nil
2. list
一個列表結構可以有序的存儲多個字符串,下圖展示了一個鍵為 list-k ,值為有序的三個字符串的列表
列表操作的命令有
1. RPUSH 將給定值推入列表的右端
2. LPUSH 將給定值推入列表的左端
3. LPOP 從列表的左端彈出元素
4. RPOP 從列表的右端彈出元素
5. LINDEX 獲取列表在給定位置上的一個元素
6. LRANGE 獲取列表在給定范圍的元素
lrange list-k 0 -1 [-1表示范圍結束索引,可以去除列表包含的所有元素]
……
下圖為使用redis-cli操作redis的列表
3.set
set 與 list 區別:無序 + 無重復字符串
由于set數據類型使用無序方式存儲元素,所以不能像list一樣左右push元素,操作命令有:
SADD 將給定元素添加到集合
SMEMBERS 返回集合包含的所有元素
SISMEMBER 檢查給定元素是否存在于集合中
SREM 如果給定元素存在于集合中,刪除
……
下圖為使用redis-cli操作redis的列表
4.hash
redis的hash數據結構可以存儲多個鍵值對之間的映射 field - value
hash的操作命令有:
HSET 在set中關聯給定鍵值對
HGET 獲取指定鍵的值
HGETALL 獲取set中所有鍵值對
HDEL 若給定鍵存在于hash中,刪除這個鍵
下圖為使用redis-cli操作redis的列表
5.zset
redis中的zset是有序集合,與hash一樣,都用于存儲鍵值對,member - score
有序集合的值被稱為分值(score),必須為浮點數,有序集合是redis里唯一一個既可以根據成員訪問元素又可以根據分值以及分值的排列順序來訪問的數據結構。
zset的操作命令有
ZADD key score member 將一個帶有給定分值的成員添加到有序集合中
ZRANGE 根據元素在有序排列中所處的位置,從有序集合中獲取多個元素
ZRANGEBYSCORE 獲取有序集合在給定分值范圍內的所有元素
ZREM 如果給定元素存在,刪除
下圖為使用redis-cli操作redis的有序集合