您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“Redis的五種數(shù)據(jù)類型實(shí)例分析”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Redis的五種數(shù)據(jù)類型實(shí)例分析”吧!
redis是一種高級的key-value的存儲系統(tǒng),其中value支持五種數(shù)據(jù)類型:
Redis支持的鍵值數(shù)據(jù)類型 |
string字符串類型 |
hash表類型 |
list 列表類型 |
set 集合類型 |
zset 有序集合類型 |
關(guān)于key的定義,注意如下幾點(diǎn):
不建議key名字太長,通常不超過1024,如果太長會影響查詢的速度。
不建議太短,太短會降低可讀性。
一般在公司,都有統(tǒng)一命名規(guī)范。
字符串類型是Redis中最為基礎(chǔ)的數(shù)據(jù)存儲類型,它在Redis中以二進(jìn)制保存,沒有編碼和解碼的過程。無論存入的是字符串、整數(shù)、浮點(diǎn)類型都會以字符串寫入。在Redis中字符串類型的Value最多可以容納的數(shù)據(jù)長度是512M。這是以后最常用的數(shù)據(jù)類型。
命令 | 行為 |
set 鍵 值 | 向redis數(shù)據(jù)庫中添加1個字符串類型的鍵和值,返回OK表示添加成功。同名的會替換 |
get 鍵 | 從數(shù)據(jù)庫中取出一個指定鍵的值,如果有返回值,如果沒有返回nil |
del 鍵 | 刪除指定的鍵和值,如果刪除成功,返回刪除的個數(shù)。否則返回0 |
setnx 鍵 值 | 在指定的 key 不存在時,為 key 設(shè)置指定的值。 |
需求:
添加一個鍵為company,值為itcast
再設(shè)置一個鍵為company,值為heima
得到company的元素
刪除company元素
再次刪除company看返回值是否相同
得到company看返回值是多少
設(shè)置鍵為job,值為programmer
再次設(shè)置job的值為code-farmer,查詢job的值
Redis中的Hash類型可以看成具String的鍵和String的值Map容器,每一個Hash可以存儲40億個鍵值對。
所以該類型非常適合于存儲對象的信息。如一個用戶有姓名,密碼,年齡等信息,則可以有username、password和age等鍵它的存儲結(jié)構(gòu)如下:
命令 | 行為 |
hset 鍵 字段 值 | 向指定的鍵中添加一對hash類型的字段名和值 |
hget 鍵 字段 | 取出指定鍵的指定字段的值 |
hmset 鍵 字段 值 字段 值 | mulitple,一次向某個鍵中設(shè)置多個字段名和值 |
hmget 鍵 字段 字段 | 一次從指定的鍵中得到多個字段的值 |
hdel 鍵 字段 字段 | 刪除一個鍵中的一個或多個字段 |
hgetall 鍵 | 得到某個鍵所有的字段值 |
需求:
創(chuàng)建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類型是按照插入順序排序的字符串鏈表。和數(shù)據(jù)結(jié)構(gòu)中的普通鏈表一樣,我們可以在其左部(left)和右部(right)添加新的元素。在插入時,如果該鍵并不存在,Redis將為該鍵創(chuàng)建一個新的鏈表,如果這個鍵已經(jīng)存在,則是向list添加元素。與此相反,如果鏈表中所有的元素均被移除,那么該鍵也將會被從數(shù)據(jù)庫中刪除。List中可以包含的最大元素?cái)?shù)量是40億個。
命令 | 行為 |
lpush 鍵 元素 元素 | left push 在列表的左邊向指定的鍵中添加列表元素,如果該鍵并不存在,Redis將為該鍵創(chuàng)建一個新的鏈表,如果這個鍵已經(jīng)存在,則是向list添加元素。 |
rpush 鍵 元素 元素 | right push在列表的右邊向指定的鍵中添加列表元素 |
lpop 鍵 | left pop 從指定鍵中的左邊彈出一個元素,列表中的元素就刪除了。 |
rpop 鍵 | right pop從指定鍵的右邊彈出一個元素,列表中的元素就刪除了。 |
lrange 鍵 開始 結(jié)束 | 從指定鍵的列表中取出指定范圍的元素列表,從左邊數(shù)起從0開始,從右邊數(shù)起從-1開始。如果要取整個列表,開始是0,結(jié)束是-1 |
llen 鍵 | 得到指定列表的長度 |
執(zhí)行效果
需求:
向mylist鍵的列表中,從左邊添加a b c三個元素
從右邊添加one two three三個元素
查詢所有的元素
從右邊添加一個重復(fù)的元素three
刪除最右邊的元素three
刪除最左邊的元素c
獲取列表中元素的個數(shù)
在Redis中,我們可以將Set類型看作為沒有排序的字符集合,和List類型一樣,我們也可以在該類型的數(shù)據(jù)值上執(zhí)行添加、刪除或判斷某一元素是否存在等操作。
Set可包含的最大元素?cái)?shù)量是40億,和List類型不同的是,Set集合中不允許出現(xiàn)重復(fù)的元素。
命令 | 行為 |
sadd 鍵 元素 元素 | 向set集合中添加1個或多個元素 |
smembers 鍵 | 查詢指定的集合中所有的元素 |
sismember 鍵 元素 | 判斷指定的元素是否在某個集合中,如果存在返回1,否則返回0 |
srem 鍵 元素 元素 | remove 刪除指定的一個或多個元素 |
sunion 鍵1 鍵2 | 返回給定集合的并集。不存在的集合 key 被視為空集。 |
需求:
向myset集合中添加A B C 1 2 3 六個元素
再向myset中添加B元素,看能否添加成功
顯示所有的成員,發(fā)現(xiàn)與添加的元素順序不同,元素是無序的
刪除其中的C這個元素,再查看結(jié)果
判斷A是否在myset集合中
判斷D是否在myset集合中
創(chuàng)建鍵為set1的集合:元素是 a b c
創(chuàng)建鍵為set2的集合:元素是 a b d
得到set1和set2的并集,并且顯示
Redis 有序集合和集合一樣也是無序不可以重復(fù)。
不同的是每個元素都會關(guān)聯(lián)一個分?jǐn)?shù)。redis正是通過分?jǐn)?shù)來為集合中的成員進(jìn)行從小到大的排序。有序集合的成員是唯一的,但分?jǐn)?shù)(score)卻可以重復(fù),每個集合可存儲40多億個成員。
命令 | 行為 |
zadd 鍵 分?jǐn)?shù) 值 分?jǐn)?shù) 值 | 向有序集合添加一個或多個成員 |
zrange 鍵 開始索引 結(jié)束索引 | 通過索引區(qū)間返回有序集合中指定區(qū)間內(nèi)的成員 |
zrem 鍵 值 值 | 移除有序集合中的一個或多個成員 |
zrank 鍵 值 | 返回有序集合中指定成員的索引 |
zcard 鍵 | 獲取有序集合的成員數(shù) |
zscore 鍵 值 | 得到指定成員的分?jǐn)?shù) |
添加鍵country,分?jǐn)?shù)是10,值是Japan
添加鍵country,分?jǐn)?shù)是5,值是USA
添加鍵country,分?jǐn)?shù)是1,值是China,分?jǐn)?shù)是120,值是Korea
查詢country中所有的元素
查詢Japan的索引號(從0開始)
刪除值為USA的元素
查詢country中還有多少個元素
到此,相信大家對“Redis的五種數(shù)據(jù)類型實(shí)例分析”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。