Redis-五種數(shù)據(jù)類型
對(duì)于Redis來(lái)說(shuō),它只能存儲(chǔ)五種基本數(shù)據(jù)類型,
在之前的版本中都是String、Hash、List、SortedSet(zSet)、Map
而現(xiàn)在的新版本中String、Hash、List、SortedSet(zSet)、Set
一、字符串String ----String Key-Value
字符串是Redis中最常用的類型,是一個(gè)由字節(jié)組成的序列,它在Redis中是二進(jìn)制安全的,這便意味著該類型可以接受任何格式的數(shù)據(jù)。
Value最多可以容納的數(shù)據(jù)長(zhǎng)度為512MB。
set key value
往key中存入一個(gè)值(value)
get key
獲取鍵為key的值
注意:redis中的Key和Value時(shí)區(qū)分大小寫的,命令不區(qū)分大小寫, redis是單線程 不適合存儲(chǔ)大容量的數(shù)據(jù)
incr key ---對(duì)應(yīng)的value 自增1,如果沒(méi)有這個(gè)key值 自動(dòng)給你創(chuàng)建創(chuàng)建 并賦值為1
decr key ---對(duì)應(yīng)的value 自減1
注意:自增的value是可以轉(zhuǎn)成數(shù)字的
二、散列Hash-------key-filed-value
相當(dāng)于是一個(gè)key中存在多個(gè)map。Redis中的散列可以看成具有String key和String value的map容器,可以將多個(gè)
key-value存儲(chǔ)到一個(gè)key中。每一個(gè)Hash可以存儲(chǔ)4294967295個(gè)鍵值對(duì)。
設(shè)置值:hset key filed value
獲取值:hget key filed
三、集合Set
Redis的集合是無(wú)序不可重復(fù)的,此處的無(wú)序是數(shù)據(jù)不能重復(fù)。和列表一樣,在執(zhí)行插入和刪除以及判斷是否存在某元素時(shí),效率是很高的。集合最大的優(yōu)勢(shì)在于可以進(jìn)行交集并集差集操作。Set可包含的最大元素?cái)?shù)量是4294967295。
應(yīng)用場(chǎng)景:1.利用交集求共同好友。2.利用唯一性,可以統(tǒng)計(jì)訪問(wèn)網(wǎng)站的所有獨(dú)立IP。3.好友推薦的時(shí)候根據(jù)tag求交集,大于某個(gè)threshold(臨界值的)就可以推薦。
四、列表List
Redis的列表允許用戶從序列的兩端推入或者彈出元素,列表由多個(gè)字符串值組成的有序可重復(fù)的序列,是鏈表結(jié)構(gòu),所以向列表兩端添加元素的時(shí)間復(fù)雜度為0(1),獲取越接近兩端的元素速度就越快。這意味著即使是一個(gè)有幾千萬(wàn)個(gè)元素的列表,獲取頭部或尾部的10條記錄也是極快的。List中可以包含的最大元素?cái)?shù)量是4294967295。
應(yīng)用場(chǎng)景:1.最新消息排行榜。2.消息隊(duì)列,以完成多程序之間的消息交換??梢杂胮ush操作將任務(wù)存在list中(生產(chǎn)者),然后線程在用pop操作將任務(wù)取出進(jìn)行執(zhí)行。(消費(fèi)者)
List有順序可重復(fù)
Ipush list 1 2 3 4 從左添加元素
rpush list 1 2 3 4 從右添加元素
Irange list 0 -1 (從0到-1元素查看:也就表示查看所有)
Ipop list (從左邊取,刪除)
rpop list(從右邊去,刪除)
五、SortedSet(zSet)
有順序,不能重復(fù)?。〈颂幍牟荒苤貜?fù)是索引為唯一的,數(shù)據(jù)卻可以重復(fù)。和Set很像,都是字符串的集合,都不允許重復(fù)的成員出現(xiàn)在一個(gè)set中。他們之間差別在于有序集合中每一個(gè)成員都會(huì)有一個(gè)分?jǐn)?shù)(score)與之關(guān)聯(lián),Redis正是通過(guò)分?jǐn)?shù)來(lái)為集合中的成員進(jìn)行從小到大的排序。盡管有序集合中的成員必須是衛(wèi)衣的,但是分?jǐn)?shù)(score)卻可以重復(fù)。
應(yīng)用場(chǎng)景:可以用于一個(gè)大型在線游戲的積分排行榜,每當(dāng)玩家的分?jǐn)?shù)發(fā)生變化時(shí),可以執(zhí)行zadd更新玩家分?jǐn)?shù)(score),此后在通過(guò)zrange獲取幾分top ten的用戶信息。
適合做排行榜,排序需要一個(gè)分?jǐn)?shù)屬性
zadd zset1 9 a 8 c 10 d 1 e (添加元素 zadd key score member )
(ZRANGE key start stop [WITHSCORES])(查看所有元素:zrange key 0 -1 withscores)
如果要查看分?jǐn)?shù),加上withscores.
zrange zset1 0 -1 (從小到大)
zrevrange zset1 0 -1 (從大到小)
zincrby zset2 score member (對(duì)元素member 增加 score)