溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

使用Redis能解決什么問(wèn)題

發(fā)布時(shí)間:2021-12-22 16:41:41 來(lái)源:億速云 閱讀:308 作者:iii 欄目:編程語(yǔ)言

本篇內(nèi)容介紹了“使用Redis能解決什么問(wèn)題”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

有memcached使用經(jīng)驗(yàn)的人可能知道,用戶只能用APPEND命令將數(shù)據(jù)添加到已有字符串的末尾。memcached的文檔中聲明,可以用APPEND命令來(lái)管理元素列表。這很好!用戶可以將元素追加到一個(gè)字符串的末尾,并將那個(gè)字符串當(dāng)作列表來(lái)使用。但隨后如何刪除這些元素呢?memcached采用的辦法是通過(guò)黑名單(blacklist)來(lái)隱藏列表里面的元素,從而避免對(duì)元素執(zhí)行讀取、更新、寫(xiě)入(包括在一次數(shù)據(jù)庫(kù)查詢之后執(zhí)行的memcached寫(xiě)入)等操作。相反地,Redis的LIST和SET允許用戶直接添加或者刪除元素。

使用Redis而不是memcached來(lái)解決問(wèn)題,不僅可以讓代碼變得更簡(jiǎn)短、更易懂、更易維護(hù),而且還可以使代碼的運(yùn)行速度更快(因?yàn)橛脩舨恍枰ㄟ^(guò)讀取數(shù)據(jù)庫(kù)來(lái)更新數(shù)據(jù))。除此之外,在其他許多情況下,Redis的效率和易用性也比關(guān)系數(shù)據(jù)庫(kù)要好得多。

數(shù)據(jù)庫(kù)的一個(gè)常見(jiàn)用法是存儲(chǔ)長(zhǎng)期的報(bào)告數(shù)據(jù),并將這些報(bào)告數(shù)據(jù)用作固定時(shí)間范圍內(nèi)的聚合數(shù)據(jù)(aggregates)。收集聚合數(shù)據(jù)的常見(jiàn)做法是:先將各個(gè)行插入一個(gè)報(bào)告表里面,之后再通過(guò)掃描這些行來(lái)收集聚合數(shù)據(jù),并根據(jù)收集到的聚合數(shù)據(jù)來(lái)更新聚合表中已有的那些行。之所以使用插入行的方式來(lái)存儲(chǔ),是因?yàn)閷?duì)于大部分?jǐn)?shù)據(jù)庫(kù)來(lái)說(shuō),插入行操作的執(zhí)行速度非??欤ú迦胄兄粫?huì)在硬盤文件末尾進(jìn)行寫(xiě)入)。不過(guò),對(duì)表里面的行進(jìn)行更新卻是一個(gè)速度相當(dāng)慢的操作,因?yàn)檫@種更新除了會(huì)引起一次隨機(jī)讀(random read)之外,還可能會(huì)引起一次隨機(jī)寫(xiě)(random write)。而在Redis里面,用戶可以直接使用原子的(atomic)INCR命令及其變種來(lái)計(jì)算聚合數(shù)據(jù),并且因?yàn)镽edis將數(shù)據(jù)存儲(chǔ)在內(nèi)存里面2,而且發(fā)送給Redis的命令請(qǐng)求并不需要經(jīng)過(guò)典型的查詢分析器(parser)或者查詢優(yōu)化器(optimizer)進(jìn)行處理,所以對(duì)Redis存儲(chǔ)的數(shù)據(jù)執(zhí)行隨機(jī)寫(xiě)的速度總是非常迅速的。

使用 Redis 而不是關(guān)系數(shù)據(jù)庫(kù)或者其他硬盤存儲(chǔ)數(shù)據(jù)庫(kù),可以避免寫(xiě)入不必要的臨時(shí)數(shù)據(jù),也免去了對(duì)臨時(shí)數(shù)據(jù)進(jìn)行掃描或者刪除的麻煩,并最終改善程序的性能。雖然上面列舉的都是一些簡(jiǎn)單的例子,但它們很好地證明了“工具會(huì)極大地改變?nèi)藗兘鉀Q問(wèn)題的方式”這一點(diǎn)。

除了第6章提到的任務(wù)隊(duì)列(task queue)之外,本書(shū)的大部分內(nèi)容都致力于實(shí)時(shí)地解決問(wèn)題。本書(shū)通過(guò)展示各種技術(shù)并提供可工作的代碼來(lái)幫助讀者消滅瓶頸、簡(jiǎn)化代碼、收集數(shù)據(jù)、分發(fā)(distribute)數(shù)據(jù)、構(gòu)建實(shí)用程序(utility),并最終幫助讀者更輕松地完成構(gòu)建軟件的任務(wù)。只要正確地使用書(shū)中介紹的技術(shù),讀者的軟件就可以擴(kuò)展至令那些所謂的“Web擴(kuò)展技術(shù)(web-sacle technology)”相形見(jiàn)絀的地步。

“使用Redis能解決什么問(wèn)題”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI