推薦學習:
redis是一種高階的key-value的儲存系統,其中value支援五種資料型別:
Redis支援的鍵值資料型別 |
string字串型別 |
hash表型別 |
list 列表型別 |
set 集合型別 |
zset 有序集合型別 |
字串型別是Redis中最為基礎的資料儲存型別,它在Redis中以二進位制儲存,沒有編碼和解碼的過程。無論存入的是字串、整數、浮點型別都會以字串寫入。在Redis中字串型別的Value最多可以容納的資料長度是512M。這是以後最常用的資料型別。
命令 | 行為 |
set 鍵 值 | 向redis資料庫中新增1個字串型別的鍵和值,返回OK表示新增成功。同名的會替換 |
get 鍵 | 從資料庫中取出一個指定鍵的值,如果有返回值,如果沒有返回nil |
del 鍵 | 刪除指定的鍵和值,如果刪除成功,返回刪除的個數。否則返回0 |
setnx 鍵 值 | 在指定的 key 不存在時,為 key 設定指定的值。 |
需求:
Redis中的Hash型別可以看成具String的鍵和String的值Map容器,每一個Hash可以儲存40億個鍵值對。
所以該型別非常適合於儲存物件的資訊。如一個使用者有姓名,密碼,年齡等資訊,則可以有username、password和age等鍵它的儲存結構如下:
命令 | 行為 |
hset 鍵 欄位 值 | 向指定的鍵中新增一對hash型別的欄位名和值 |
hget 鍵 欄位 | 取出指定鍵的指定欄位的值 |
hmset 鍵 欄位 值 欄位 值 | mulitple,一次向某個鍵中設定多個欄位名和值 |
hmget 鍵 欄位 欄位 | 一次從指定的鍵中得到多個欄位的值 |
hdel 鍵 欄位 欄位 | 刪除一個鍵中的一個或多個欄位 |
hgetall 鍵 | 得到某個鍵所有的欄位值 |
需求:
建立hash型別的鍵為user,並且新增一個欄位為username,值為newboy
向user中新增欄位為password,值為12345
向user中新增欄位為age,值為18
分別得到user中的username、password和age的欄位值
向user中同時新增多個欄位和值,birthday 2018-01-01 sex male
同時取得多個欄位:age 和 sex
得到user中所有的欄位和值
刪除user中的生日和密碼欄位
在Redis中,List型別是按照插入順序排序的字串連結串列。和資料結構中的普通連結串列一樣,我們可以在其左部(left)和右部(right)新增新的元素。在插入時,如果該鍵並不存在,Redis將為該鍵建立一個新的連結串列,如果這個鍵已經存在,則是向list新增元素。與此相反,如果連結串列中所有的元素均被移除,那麼該鍵也將會被從資料庫中刪除。List中可以包含的最大元素數量是40億個。
命令 | 行為 |
lpush 鍵 元素 元素 | left push 在列表的左邊向指定的鍵中新增列表元素,如果該鍵並不存在,Redis將為該鍵建立一個新的連結串列,如果這個鍵已經存在,則是向list新增元素。 |
rpush 鍵 元素 元素 | right push在列表的右邊向指定的鍵中新增列表元素 |
lpop 鍵 | left pop 從指定鍵中的左邊彈出一個元素,列表中的元素就刪除了。 |
rpop 鍵 | right pop從指定鍵的右邊彈出一個元素,列表中的元素就刪除了。 |
lrange 鍵 開始 結束 | 從指定鍵的列表中取出指定範圍的元素列表,從左邊數起從0開始,從右邊數起從-1開始。如果要取整個列表,開始是0,結束是-1 |
llen 鍵 | 得到指定列表的長度 |
執行效果
需求:
向mylist鍵的列表中,從左邊新增a b c三個元素
從右邊新增one two three三個元素
查詢所有的元素
從右邊新增一個重複的元素three
刪除最右邊的元素three
刪除最左邊的元素c
獲取列表中元素的個數
在Redis中,我們可以將Set型別看作為沒有排序的字元集合,和List型別一樣,我們也可以在該型別的資料值上執行新增、刪除或判斷某一元素是否存在等操作。
Set可包含的最大元素數量是40億,和List型別不同的是,Set集合中不允許出現重複的元素。
命令 | 行為 |
sadd 鍵 元素 元素 | 向set集合中新增1個或多個元素 |
smembers 鍵 | 查詢指定的集合中所有的元素 |
sismember 鍵 元素 | 判斷指定的元素是否在某個集合中,如果存在返回1,否則返回0 |
srem 鍵 元素 元素 | remove 刪除指定的一個或多個元素 |
sunion 鍵1 鍵2 | 返回給定集合的並集。不存在的集合 key 被視為空集。 |
需求:
向myset集合中新增A B C 1 2 3 六個元素
再向myset中新增B元素,看能否新增成功
顯示所有的成員,發現與新增的元素順序不同,元素是無序的
刪除其中的C這個元素,再檢視結果
判斷A是否在myset集合中
判斷D是否在myset集合中
建立鍵為set1的集合:元素是 a b c
建立鍵為set2的集合:元素是 a b d
得到set1和set2的並集,並且顯示
Redis 有序集合和集合一樣也是無序不可以重複。
不同的是每個元素都會關聯一個分數。redis正是通過分數來為集合中的成員進行從小到大的排序。有序集合的成員是唯一的,但分數(score)卻可以重複,每個集合可儲存40多億個成員。
命令 | 行為 |
zadd 鍵 分數 值 分數 值 | 向有序集合新增一個或多個成員 |
zrange 鍵 開始索引 結束索引 | 通過索引區間返回有序集合中指定區間內的成員 |
zrem 鍵 值 值 | 移除有序集合中的一個或多個成員 |
zrank 鍵 值 | 返回有序集合中指定成員的索引 |
zcard 鍵 | 獲取有序集合的成員數 |
zscore 鍵 值 | 得到指定成員的分數 |
新增鍵country,分數是10,值是Japan
新增鍵country,分數是5,值是USA
新增鍵country,分數是1,值是China,分數是120,值是Korea
查詢country中所有的元素
查詢Japan的索引號(從0開始)
刪除值為USA的元素
查詢country中還有多少個元素
推薦學習:
以上就是Redis的五種資料型別總結的詳細內容,更多請關注TW511.COM其它相關文章!