国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Redis的速度不夠用?為什么你應(yīng)該考慮使用 KeyDB,一個更快、更強大、更靈活的開源數(shù)據(jù)庫

這篇具有很好參考價值的文章主要介紹了Redis的速度不夠用?為什么你應(yīng)該考慮使用 KeyDB,一個更快、更強大、更靈活的開源數(shù)據(jù)庫。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

你是否正在使用?Redis?作為您的數(shù)據(jù)結(jié)構(gòu)存儲,享受它的高性能、高可用的特性?如果是這樣,那么你可能會對?KeyDB?感興趣。

什么是?KeyDB?

KeyDB?一個由?Snap?提供支持、專為擴展而構(gòu)建的開源數(shù)據(jù)庫。它是?Redis?的高性能分支,專注于多線程、內(nèi)存效率和高吞吐量。KeyDB?采用?MVCC?體系結(jié)構(gòu),允許您執(zhí)行?KEYS?和?SCAN?等查詢,而不會阻塞數(shù)據(jù)庫并降低性能。KeyDB?保持與?Redis?協(xié)議、模塊和腳本的完全兼容性,這包括腳本和事務(wù)的原子性保證。由于?KeyDB?與?Redis?開發(fā)保持同步,KeyDB?是?Redis?功能的超集,這使得?KeyDB?成為現(xiàn)有?Redis?理想的替代品。

項目地址:https://docs.keydb.dev/
源碼地址:https://github.com/Snapchat/KeyDB

KeyDB?獨有特性

除了與?Redis?相同的功能外,KeyDB?還提供了一些獨有的特性,例如:

  • 無阻塞架構(gòu):采用一種?MVCC?體系結(jié)構(gòu),允許你可以查詢數(shù)據(jù)庫的單個快照,從而避免阻塞?SCAN?和?KEYS?等調(diào)用。這樣可以大規(guī)模并發(fā)調(diào)用此類查詢,而不會降低現(xiàn)有工作負(fù)載的整體性能。
  • 跨區(qū)域主動復(fù)制:這是一種新的復(fù)制模式,允許你在多個主節(jié)點之間進行雙向異步復(fù)制。這樣可以實現(xiàn)跨區(qū)域的多主站支持,提高數(shù)據(jù)可用性和一致性,無需哨兵監(jiān)視節(jié)點進行故障轉(zhuǎn)移。
  • 子項過期:這是一種新的過期機制,允許你對集合中的成員設(shè)置過期時間。這樣可以實現(xiàn)更細(xì)粒度的數(shù)據(jù)管理和清理。
  • TLS加密:這是一種新的安全機制,為你的數(shù)據(jù)提供?TLS(傳輸層安全)支持。KeyDB?的?TLS?性能是?Redis?+?TLS?的?7?倍,并且不需要任何額外的配置或證書。
  • JavaScript?模塊:這是一種新的擴展機制,讓你可以使用?JavaScript?來編寫自定義的命令和邏輯。JavaScript?模塊基于?V8?引擎構(gòu)建,比?Lua?更快,并且支持許多?Node.js?模塊。

KeyDB?性能測試

在同一硬件上,KeyDB?可以實現(xiàn)比?Redis?高得多的吞吐量。主動復(fù)制簡化了熱備盤故障切換,使你能夠輕松地跨副本分布寫入操作,并使用簡單的基于?TCP?的負(fù)載平衡/故障轉(zhuǎn)移。KeyDB?的更高性能允許你在更少的硬件上做更多的事情,從而降低運營成本和復(fù)雜性。

下圖為Redis、TLS?和多線程?KeyDB?基準(zhǔn)測試比較:

Redis的速度不夠用?為什么你應(yīng)該考慮使用 KeyDB,一個更快、更強大、更靈活的開源數(shù)據(jù)庫

測試顯示,在?Redis?6(單線程)上啟用?TLS?的情況下,測量值下降了?36%。但是,如果你以前使用過?I/O?線程功能,則可能會看到性能下降?61%,因為使用?TLS?不支持?I/O?線程。

下圖為Redis、TLS?和多線程?KeyDB?延遲基準(zhǔn)測試比較(數(shù)值越低越好):

Redis的速度不夠用?為什么你應(yīng)該考慮使用 KeyDB,一個更快、更強大、更靈活的開源數(shù)據(jù)庫

可以看到,使用?TLS?時,這些負(fù)載下的延遲明顯更高。KeyDB?不僅在非常高的容量下提供服務(wù),而且延遲也比使用?TLS?的?Redis?低?7?倍。

下圖為使用?YCSB?對?Redis?6?多線程?I/O?與?Elasticache?和?KeyDB?進行吞吐量測試比較:

Redis的速度不夠用?為什么你應(yīng)該考慮使用 KeyDB,一個更快、更強大、更靈活的開源數(shù)據(jù)庫

很明顯,KeyDB?在每個測試的工作負(fù)載下都實現(xiàn)了最高的吞吐量。Elasticache?排在第二位,其次是?Redis?6??梢宰⒁獾剑跊]有?I/O?線程的情況下,Redis?6?仍然比版本5快。

下圖為使用?YCSB?對?Redis?6?多線程?I/O?與?Elasticache?和?KeyDB?進行延遲測試比較(以微秒為單位,值越低越好):

Redis的速度不夠用?為什么你應(yīng)該考慮使用 KeyDB,一個更快、更強大、更靈活的開源數(shù)據(jù)庫

上面顯示的趨勢表明,當(dāng)實例接近其容量吞吐量時,延遲會顯著增加。KeyDB?可以處理比?Redis?6?高得多的吞吐量,并且略高于?Elasticache,因此能夠在更高的負(fù)載下保持較低的延遲。

KeyDB、Elasticache?和?Redis?6?在輕度到中等流量下都有類似的延遲。直到容量開始達到更高的負(fù)載,才能看到差異。

更多測試內(nèi)容請移步這里查看:https://docs.keydb.dev/blog

如何使用?KeyDB?

由于?KeyDB?與?Redis完全兼容,使得它非常容易使用,我們可以像?Redis?一樣來使用它。來做一個簡單的示例,演示如何連接到?KeyDB,設(shè)置和獲取一個字符串值,以及使用?EXPIREMEMBER?命令來設(shè)置子項過期。

KeyDB命令文檔:https://docs.keydb.dev/docs/commands/#expiremember

首先,從?Docker?Hub?拉取?KeyDB?的鏡像并運行:

# 拉取 KeyDB 的鏡像
docker pull eqalpha/keydb

# 運行 KeyDB 的容器
docker run -p 6379:6379 -d eqalpha/keydb

然后,創(chuàng)建一個控制臺應(yīng)用程序,安裝?StackExchange.Redis?庫:

# 創(chuàng)建一個控制臺應(yīng)用程序
dotnet new console -o KeyDBDemo

# 安裝 StackExchange.Redis 庫
nuget install StackExchange.Redis

然后,編輯?Program.cs?文件,添加以下代碼:

using StackExchange.Redis;
public class KeyDBDemo
{
    private static void Main(string[] args)
    {
        // 創(chuàng)建一個連接到本地Redis實例的連接器
        ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost");
        // 獲取一個數(shù)據(jù)庫對象
        IDatabase db = redis.GetDatabase();

        // 設(shè)置一個字符串值,鍵為 "name",值為 "Bing"
        db.StringSet("name", "Bing");

        // 獲取鍵為 "name" 的字符串值
        var name = db.StringGet("name");

        // 打印結(jié)果
        Console.WriteLine($"The name is {name}");

        // 設(shè)置一個集合值,鍵為 "fruits",值為 ["apple", "banana", "orange"]
        db.SetAdd("fruits", new RedisValue[] { "apple", "banana", "orange" });

        // 為集合中的成員 "apple" 設(shè)置過期時間為 5 秒
        db.Execute("EXPIREMEMBER", "fruits", "apple", 5);

        // 獲取鍵為 "fruits" 的集合值
        var fruits = db.SetMembers("fruits");

        // 打印結(jié)果
        Console.WriteLine($"The fruits are {string.Join(", ", fruits)}");

        // 等待 5 秒后,再次獲取鍵為 "fruits" 的集合值
        Thread.Sleep(5100);
        fruits = db.SetMembers("fruits");

        // 打印結(jié)果
        Console.WriteLine($"The fruits are {string.Join(", ", fruits)}");

        // 關(guān)閉連接
        redis.Close();
    }
}

最后,運行程序,可以得到以下結(jié)果:

The name is Bing
The fruits are banana, apple, orange
The fruits are banana, orange

?寫作不易,轉(zhuǎn)載請注明文章出處,否則禁轉(zhuǎn)?。?!文章來源地址http://www.zghlxwxcb.cn/news/detail-710907.html

??感謝閱讀,點贊+分享+收藏+關(guān)注??
Redis的速度不夠用?為什么你應(yīng)該考慮使用 KeyDB,一個更快、更強大、更靈活的開源數(shù)據(jù)庫
文章出自猿惑豁微信公眾號

到了這里,關(guān)于Redis的速度不夠用?為什么你應(yīng)該考慮使用 KeyDB,一個更快、更強大、更靈活的開源數(shù)據(jù)庫的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • DDD架構(gòu)為什么應(yīng)該首選六邊形架構(gòu)?

    分層架構(gòu)的一個重要原則是:每層只能與位于其下方的層發(fā)生耦合。 分層架構(gòu)分兩種:一種是嚴(yán)格分層架構(gòu),規(guī)定某層只能與直接位于其下方的層發(fā)生耦合;另一種是松散分層架構(gòu),允許任意上方層與任意下方層發(fā)生耦合。 下圖是一個典型的DDD傳統(tǒng)分層架構(gòu)。 以上分層架構(gòu)

    2024年02月16日
    瀏覽(28)
  • 數(shù)據(jù)庫——Redis 沒有使用多線程?為什么不使用多線程?

    數(shù)據(jù)庫——Redis 沒有使用多線程?為什么不使用多線程?

    雖然說 Redis 是單線程模型,但是, 實際上, Redis 在 4.0 之后的版本中就已經(jīng)加入了對多線程的支持。 不過,Redis 4.0 增加的多線程主要是針對一些大鍵值對的刪除操作的命令,使用這些命令就會使用主處理之外的其他線程來“異步處理”。 大體上來說, Redis 6.0 之前主要還是

    2024年02月11日
    瀏覽(31)
  • Redis——關(guān)于它為什么快?使用場景?以及使用方式?為何引入多線程?

    Redis——關(guān)于它為什么快?使用場景?以及使用方式?為何引入多線程?

    目錄 1.既然redis那么快,為什么不用它做主數(shù)據(jù)庫,只用它做緩存? 2.Redis 一般在什么場合下使用? ?3.redis為什么這么快? 4.Redis為什么要引入了多線程? redis設(shè)計者的初衷,就只是為了存儲 小量級的共享數(shù)據(jù) 。 所以,他敢直接單線程直接干上去,因為數(shù)據(jù)量小,所以夠快

    2024年01月25日
    瀏覽(23)
  • 阿里三面過了,卻無理由掛了,HR反問一句話:為什么不考慮阿里?

    阿里三面過了,卻無理由掛了,HR反問一句話:為什么不考慮阿里?

    進入互聯(lián)網(wǎng)大廠一般都是“過五關(guān)斬六將”,難度堪比西天取經(jīng),但當(dāng)你真正面對這些大廠的面試時,有時候又會被其中的神操作弄的很是蒙圈。 近日,某位測試員發(fā)帖稱,自己去阿里面試,三面都過了,卻被無理由掛了,阿里某部門HR還問他為何不考慮阿里。當(dāng)時這位程序

    2024年02月06日
    瀏覽(32)
  • ElasticSearch(七):ES查詢速度為什么那么快

    ElasticSearch(七):ES查詢速度為什么那么快

    介紹給大家一個開源SpringCloud項目。整合了大部分開源中間件,詳情信息可以查看文檔: spring cloud開源組件開發(fā) 另外自己以后博客所講解的代碼內(nèi)容,都會我的Git上同步(GitHub同步)GIT地址 ES使用的數(shù)據(jù)結(jié)構(gòu)是倒排索引,在對搜索內(nèi)容進行分詞的時候,會根據(jù)搜索內(nèi)容分詞結(jié)

    2023年04月08日
    瀏覽(31)
  • Windows 程序開機自啟動速度優(yōu)化,為什么騰訊會議自啟動速度那么高?

    Windows 程序開機自啟動速度優(yōu)化,為什么騰訊會議自啟動速度那么高?

    目錄 一、問題的說明和定義 二、問題的分析 1.問題初步分析 2.詳細(xì)的分析: 2.1Windows常見的自啟動方式 2.2Windows常見的自啟動方式的細(xì)節(jié)分析 三、問題的解決方案 1、為什么騰訊會議Rooms那么快 2.我們是否可以跟騰訊會議一樣快 這兩天有個優(yōu)化項需要做個技術(shù)調(diào)研,就是我們

    2024年02月02日
    瀏覽(25)
  • ElasticSearch第七講:ES查詢速度為什么那么快

    ElasticSearch第七講:ES查詢速度為什么那么快

    介紹給大家一個開源SpringCloud項目。整合了大部分開源中間件,詳情信息可以查看文檔: spring cloud開源組件開發(fā) 另外自己以后博客所講解的代碼內(nèi)容,都會我的Git上同步(GitHub同步)GIT地址 ES使用的數(shù)據(jù)結(jié)構(gòu)是倒排索引,在對搜索內(nèi)容進行分詞的時候,會根據(jù)搜索內(nèi)容分詞結(jié)

    2023年04月19日
    瀏覽(24)
  • ElasticSearch第七講 ES查詢速度為什么那么快

    ElasticSearch第七講 ES查詢速度為什么那么快

    介紹給大家一個開源SpringCloud項目。整合了大部分開源中間件,詳情信息可以查看文檔: spring cloud開源組件開發(fā) 另外自己以后博客所講解的代碼內(nèi)容,都會我的Git上同步(GitHub同步)GIT地址 ES使用的數(shù)據(jù)結(jié)構(gòu)是倒排索引,在對搜索內(nèi)容進行分詞的時候,會根據(jù)搜索內(nèi)容分詞結(jié)

    2023年04月25日
    瀏覽(31)
  • 為什么有時候ADSL訪問速度會很慢

    ? 為什么有時候ADSL訪問速度會很慢 ? ? ? ?1.網(wǎng)卡綁定的協(xié)議太多。上網(wǎng)速度慢,在局域網(wǎng)用戶中很常見,原因是網(wǎng)卡綁定的協(xié)議太多。網(wǎng)卡上如果綁定了許多協(xié)議,當(dāng)數(shù)據(jù)通過網(wǎng)卡時,計算機就要花費很多時間來確定這個數(shù)據(jù)使用哪種協(xié)議來傳送,這時用戶就會感覺上網(wǎng)慢

    2024年02月08日
    瀏覽(96)
  • 【Redis】-使用Lua腳本解決多線程下的超賣問題以及為什么?

    【Redis】-使用Lua腳本解決多線程下的超賣問題以及為什么?

    一.多線程下引起的超賣問題呈現(xiàn) 1.1.我先初始化庫存數(shù)量為1、訂單數(shù)量為0 1.2.然后我開啟3個線程去執(zhí)行業(yè)務(wù) 業(yè)務(wù)為:判斷如果說庫存數(shù)量大于0,則庫存減1,訂單數(shù)量加1 結(jié)果為:庫存為-2,訂單數(shù)量為3 原因:如下圖所示,這是因為分別有6個指令(3個庫存減1指令,3個訂單

    2024年02月03日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包