共計(jì) 1617 個(gè)字符,預(yù)計(jì)需要花費(fèi) 5 分鐘才能閱讀完成。
自動(dòng)寫代碼機(jī)器人,免費(fèi)開(kāi)通
丸趣 TV 小編給大家分享一下 Redis 的應(yīng)用場(chǎng)景是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
一丶 Redis 介紹
Redis 是一個(gè)開(kāi)源的 key—value 型 單線程 數(shù)據(jù)庫(kù),支持 string、list、set、zset 和 hash 類型數(shù)據(jù)。
默認(rèn)端口:6379
默認(rèn)數(shù)據(jù)庫(kù)數(shù)量:16
二、優(yōu)點(diǎn):
1.nosql 數(shù)據(jù)庫(kù)沒(méi)有關(guān)聯(lián)關(guān)系,數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)單,拓展表比較容易
2.nosql 讀取速度快,對(duì)較大數(shù)據(jù)處理快
三、適用場(chǎng)景:
1. 數(shù)據(jù)高并發(fā)的讀寫
2. 海量數(shù)據(jù)的讀寫
對(duì)擴(kuò)展性要求高的數(shù)據(jù)
四、不適場(chǎng)景:
1. 需要事務(wù)支持(非關(guān)系型數(shù)據(jù)庫(kù))
2. 基于 sql 結(jié)構(gòu)化查詢儲(chǔ)存,關(guān)系復(fù)雜
五、應(yīng)用場(chǎng)景
下面這些作者是 Redis 作者 @antirez,他描述了 Redis 比較適合的一些應(yīng)用場(chǎng)景,NoSQLFan 簡(jiǎn)單列舉在這里,供大家一覽:
1. 取最新 N 個(gè)數(shù)據(jù)的操作
比如典型的取你網(wǎng)站的最新文章,通過(guò)下面方式,我們可以將最新的 5000 條評(píng)論的 ID 放在 Redis 的 List 集合中,并將超出集合部分從數(shù)據(jù)庫(kù)獲取
使用 LPUSH latest.comments ID 命令,向 list 集合中插入數(shù)據(jù)
插入完成后再用 LTRIM latest.comments 0 5000 命令使其永遠(yuǎn)只保存最近 5000 個(gè) ID
然后我們?cè)诳蛻舳双@取某一頁(yè)評(píng)論時(shí)可以用下面的邏輯(偽代碼)
FUNCTION get_latest_comments(start,num_items):
id_list = redis.lrange(latest.comments ,start,start+num_items-1)
IF id_list.length num_items
id_list = SQL_DB(SELECT ... ORDER BY time LIMIT ...)
END
RETURN id_list
END
如果你還有不同的篩選維度,比如某個(gè)分類的最新 N 條,那么你可以再建一個(gè)按此分類的 List,只存 ID 的話,Redis 是非常高效的。
2. 排行榜應(yīng)用,取 TOP N 操作
這個(gè)需求與上面需求的不同之處在于,前面操作以時(shí)間為權(quán)重,這個(gè)是以某個(gè)條件為權(quán)重,比如按頂?shù)拇螖?shù)排序,這時(shí)候就需要我們的 sorted set 出馬了,將你要排序的值設(shè)置成 sorted set 的 score,將具體的數(shù)據(jù)設(shè)置成相應(yīng)的 value,每次只需要執(zhí)行一條 ZADD 命令即可。
3. 需要精準(zhǔn)設(shè)定過(guò)期時(shí)間的應(yīng)用
比如你可以把上面說(shuō)到的 sorted set 的 score 值設(shè)置成過(guò)期時(shí)間的時(shí)間戳,那么就可以簡(jiǎn)單地通過(guò)過(guò)期時(shí)間排序,定時(shí)清除過(guò)期數(shù)據(jù)了,不僅是清除 Redis 中的過(guò)期數(shù)據(jù),你完全可以把 Redis 里這個(gè)過(guò)期時(shí)間當(dāng)成是對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的索引,用 Redis 來(lái)找出哪些數(shù)據(jù)需要過(guò)期刪除,然后再精準(zhǔn)地從數(shù)據(jù)庫(kù)中刪除相應(yīng)的記錄。
4. 計(jì)數(shù)器應(yīng)用
Redis 的命令都是原子性的,你可以輕松地利用 INCR,DECR 命令來(lái)構(gòu)建計(jì)數(shù)器系統(tǒng)。
5.Uniq 操作,獲取某段時(shí)間所有數(shù)據(jù)排重值
這個(gè)使用 Redis 的 set 數(shù)據(jù)結(jié)構(gòu)最合適了,只需要不斷地將數(shù)據(jù)往 set 中扔就行了,set 意為集合,所以會(huì)自動(dòng)排重。
6. 實(shí)時(shí)系統(tǒng),反垃圾系統(tǒng)
通過(guò)上面說(shuō)到的 set 功能,你可以知道一個(gè)終端用戶是否進(jìn)行了某個(gè)操作,可以找到其操作的集合并進(jìn)行分析統(tǒng)計(jì)對(duì)比等。沒(méi)有做不到,只有想不到。
7.Pub/Sub 構(gòu)建實(shí)時(shí)消息系統(tǒng)
Redis 的 Pub/Sub 系統(tǒng)可以構(gòu)建實(shí)時(shí)的消息系統(tǒng),比如很多用 Pub/Sub 構(gòu)建的實(shí)時(shí)聊天系統(tǒng)的例子。
8. 構(gòu)建隊(duì)列系統(tǒng)
使用 list 可以構(gòu)建隊(duì)列系統(tǒng),使用 sorted set 甚至可以構(gòu)建有優(yōu)先級(jí)的隊(duì)列系統(tǒng)。
以上是“Redis 的應(yīng)用場(chǎng)景是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道!
向 AI 問(wèn)一下細(xì)節(jié)