最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

京東二面:Redis為什么這么快?

2022-12-15 14:08 作者:任何事人挺好的認(rèn)同  | 我要投稿

課代表總結(jié)了Redis的信息??????


視頻內(nèi)容:

1??為什么Redis速度快??

2??Redis為何選擇單線程呢???

3??Redis應(yīng)用場(chǎng)景有哪些????

4??Redis 怎么實(shí)現(xiàn)消息隊(duì)列???

5??Redis主從復(fù)制的原理???

6??刪除策略??


視頻內(nèi)容:

1??為什么Redis速度快??

基于內(nèi)存:Redis是使用內(nèi)存存儲(chǔ),沒有磁盤IO上的開銷。數(shù)據(jù)存在內(nèi)存中,讀寫速度快。

單線程實(shí)現(xiàn)( Redis 6.0以前): Redis使用單個(gè)線程處理請(qǐng)求,避免了多個(gè)線程之間線程切換和鎖資源爭(zhēng)用的開銷。

IO多路復(fù)用模型:Redis采用IO多路復(fù)用技術(shù)。Redis 使用單線程來(lái)輪詢描述符,將數(shù)據(jù)庫(kù)的操作都轉(zhuǎn)換成了事件,不在網(wǎng)絡(luò)lO上浪費(fèi)過(guò)多的時(shí)間。


2??Redis為何選擇單線程呢???

?
00:44
?



1、單線程實(shí)現(xiàn)可以避免過(guò)多的上下文切換開銷。程序始終運(yùn)行在進(jìn)程中單個(gè)線程內(nèi),沒有多線程切換的場(chǎng)景。

2、避免同步機(jī)制的開銷。如果Redis選擇多線程模型,需要考慮數(shù)據(jù)同步的問(wèn)題,則必然會(huì)引入某些同步機(jī)制,會(huì)導(dǎo)致在操作數(shù)據(jù)過(guò)程中帶來(lái)更多的開銷,增加程序復(fù)雜度的同時(shí)還會(huì)降低性能。

3、實(shí)現(xiàn)簡(jiǎn)單,方便維護(hù)。如果Redis使用多線程模式,那么所有的底層數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)都必須考慮線程安全問(wèn)題,那么Redis的實(shí)現(xiàn)將會(huì)變得更加復(fù)雜。

3??Redis應(yīng)用場(chǎng)景有哪些????

1、緩存熱點(diǎn)數(shù)據(jù),緩解數(shù)據(jù)庫(kù)的壓力。

2、利用Redis 原子性的自增操作,可以實(shí)現(xiàn)計(jì)數(shù)器的功能,比如統(tǒng)計(jì)用戶點(diǎn)贊數(shù)、用戶訪問(wèn)數(shù)等。

3、作為簡(jiǎn)單的消息隊(duì)列,實(shí)現(xiàn)異步操作。

4、限速器,可用于限制某個(gè)用戶訪問(wèn)某個(gè)接口的頻率,比如秒殺場(chǎng)景用于防止用戶快速點(diǎn)擊帶來(lái)不必要的壓力。

5、好友關(guān)系,利用集合的一些命令,比如交集、并集、差集等,實(shí)現(xiàn)共同好友、共同愛好之類的功能。

?
01:08
?




4??Redis 怎么實(shí)現(xiàn)消息隊(duì)列???

1、使用列表,讓生產(chǎn)者將任務(wù)使用LPUSH命令放進(jìn)列表,消費(fèi)者不斷用RPOP從列表取出任務(wù)。

2、發(fā)布訂閱模式。類似于MQ的主題模式。只能消費(fèi)訂閱之后發(fā)布的消息,一個(gè)消息可以被多個(gè)訂閱者消費(fèi)。

3、延時(shí)隊(duì)列。使用sortedset,拿時(shí)間戳作為score,消息內(nèi)容作為key,調(diào)用zadd來(lái)生產(chǎn)消息,消費(fèi)者用`zrangebyscore`指令獲取N秒之前的數(shù)據(jù)輪詢進(jìn)行處理。

?
01:35
?



5??Redis主從復(fù)制的原理???

Redis的復(fù)制功能是支持多個(gè)數(shù)據(jù)庫(kù)之間的數(shù)據(jù)同步。主數(shù)據(jù)庫(kù)可以進(jìn)行讀寫操作,當(dāng)主數(shù)據(jù)庫(kù)的數(shù)據(jù)發(fā)生變化時(shí)會(huì)自動(dòng)將數(shù)據(jù)同步到從數(shù)據(jù)庫(kù)。從數(shù)據(jù)庫(kù)一般是只讀的,它會(huì)接收主數(shù)據(jù)庫(kù)同步過(guò)來(lái)的數(shù)據(jù)。


6??刪除策略??

1、被動(dòng)刪除。在訪問(wèn)key時(shí),如果發(fā)現(xiàn)key已經(jīng)過(guò)期,那么會(huì)將key刪除。

2、主動(dòng)刪除。定時(shí)清理key,每次清理會(huì)依次遍歷所有DB,從db隨機(jī)取出20個(gè)key,如果過(guò)期就刪除,如果其中有5個(gè)key過(guò)期,那么就繼續(xù)對(duì)這個(gè)db進(jìn)行清理,否則開始清理下一個(gè)db。

3、內(nèi)存不夠時(shí)清理。Redis有最大內(nèi)存的限制,通過(guò)maxmemory參數(shù)可以設(shè)置最大內(nèi)存,當(dāng)使用的內(nèi)存超過(guò)了設(shè)置的最大內(nèi)存,就要進(jìn)行內(nèi)存釋放,在進(jìn)行內(nèi)存釋放的時(shí)候,會(huì)按照配置的淘汰策略清理內(nèi)存。


京東二面:Redis為什么這么快?的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
盐山县| 谷城县| 清水河县| 中阳县| 广汉市| 犍为县| 灵宝市| 嘉峪关市| 田林县| 岳普湖县| 祁门县| 临夏县| 四平市| 天全县| 吉木乃县| 白山市| 江门市| 调兵山市| 顺昌县| 柳州市| 即墨市| 灵丘县| 攀枝花市| 寻甸| 沛县| 广德县| 盐城市| 通州市| 绥宁县| 江陵县| 天祝| 双柏县| 高要市| 巩义市| 晋州市| 太白县| 玉溪市| 武隆县| 汝州市| 汉寿县| 漠河县|