Redis的數(shù)據(jù)類型以及每種數(shù)據(jù)類型的使用場(chǎng)景
云計(jì)算
人就是很奇怪的動(dòng)物,很簡單的問題往往大家都容易忽略,當(dāng)我們?cè)谑褂梅植际骄彺鍾edis的時(shí)候,一個(gè)最簡單的問題往往被人忽略,Redis的數(shù)據(jù)類型以及每種數(shù)據(jù)類型的使用場(chǎng)景是什么?
是不是覺得這個(gè)問題很基礎(chǔ)?我也這么覺得。然而根據(jù)調(diào)查經(jīng)驗(yàn)發(fā)現(xiàn),至少百分之八十的人答不上這個(gè)問題。
基本上,一個(gè)合格的程序員,五種類型都會(huì)用到。
1.String這個(gè)沒啥好說的,最常規(guī)的 set/get 操作,Value 可以是 String 也可以是數(shù)字。一般做一些復(fù)雜的計(jì)數(shù)功能的緩存。
2.Hash這里 Value 存放的是結(jié)構(gòu)化的對(duì)象,比較方便的就是操作其中的某個(gè)字段。
我在做單點(diǎn)登錄的時(shí)候,就是用這種數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)用戶信息,以 CookieId 作為 Key,設(shè)置 30 分鐘為緩存過期時(shí)間,能很好的模擬出類似 Session 的效果。
3.List使用 List 的數(shù)據(jù)結(jié)構(gòu),可以做簡單的消息隊(duì)列的功能。另外還有一個(gè)就是,可以利用 lrange 命令,做基于 Redis 的分頁功能,性能極佳,用戶體驗(yàn)好。
4.Set因?yàn)?Set 堆放的是一堆不重復(fù)值的集合。所以可以做全局去重的功能。為什么不用 JVM 自帶的 Set 進(jìn)行去重?
因?yàn)槲覀兊南到y(tǒng)一般都是集群部署,使用 JVM 自帶的 Set,比較麻煩,難道為了一個(gè)做一個(gè)全局去重,再起一個(gè)公共服務(wù),太麻煩了。
另外,就是利用交集、并集、差集等操作,可以計(jì)算共同喜好,全部的喜好,自己獨(dú)有的喜好等功能。
5.Sorted SetSorted Set多了一個(gè)權(quán)重參數(shù) Score,集合中的元素能夠按 Score 進(jìn)行排列。
可以做排行榜應(yīng)用,取 TOP N 操作。Sorted Set 可以用來做延時(shí)任務(wù)。最后一個(gè)應(yīng)用就是可以做范圍查找。
如果你對(duì)Redis這一塊有什么深入的研究,歡迎來華為云官方論壇發(fā)帖,一起探討一下,也可以到華為云幫助中心,看看我們?cè)敿?xì)的使用操作說明書吧
分享題目:Redis的數(shù)據(jù)類型以及每種數(shù)據(jù)類型的使用場(chǎng)景
當(dāng)前鏈接:http://www.xueling.net.cn/article/cjehps.html