日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis的zset有多牛?请把耳朵递过来

發布時間:2025/3/21 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis的zset有多牛?请把耳朵递过来 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

來自公眾號:小姐姐味道

作者簡介:一個不允許程序員走彎路的公眾號。聚焦基礎架構和Linux。十年架構,日百億流量,與你探討高并發世界,給你不一樣的味道。

本篇文章很短,但信息量很大,是關于redis的zset。我來分享一點遇到過的線上數據,或許對你的決策有幫助。

redis支持一個數據結構,叫做?zset,也就是有序的列表。當然redis也不能濫用,可以看我以前的規范文章:《這可能是最中肯的Redis規范了》

忘了zset是個啥的同學可以看這張gif圖。

通過它,可以實現游戲排行榜一類的功能,或者實現Topx這樣的需求,也能精準的讓用戶在海量數據中找到自己的位置。

zset的底層結構是跳躍表,而與之類似的Java中的有序Set是TreeSet,使用紅黑樹實現的。

concurrent包里面,還有一個類叫做ConcurrentSkipListMap,從它的名字就可以看出來,也是用跳躍表實現的,這個和zset最像。

好了,這是前提。廣度面試的時候我也會這么問。

我們的問題是:zset中能存放多少條記錄?線上有沒有有說服力的數據?

先籠統的回答一下,zset理論上支持的元素最多是2^32-1個,約42億,如果你的內存夠大,放下國人綽綽有余。

使用redis-benchmark去測這個效果,不是很可信,測試用例寫起來也比較費勁。測完了也不一定信,那就讓線上流量去沖擊吧。

為了應付產品的需求,我把用戶按照省市進行了劃分(geohash),結果,用戶分布最大的就是廣東省,非常棒。

在廣東省的zset里,存放了接近6千萬的數據,我們就要算在這6千萬內任何人的排行。zcard、zrank等一系列操作,easy實現。

運行一段時間后,內存直接飆升到了8G左右。這是由于跳表的特殊結構所引起的,額外的輔助信息會占用更多的內存。

以下是經驗值:

  • 最高TPS寫入量1k/秒。

  • 同時最高QPS查詢量5k/秒。

  • 平均耗時5ms左右。

  • 百分之95的請求都在10ms以內返回。

  • 長尾請求超過100ms的不超過100條。

  • 也就是說,在保持高寫入和高查詢的同時,zset能夠保證較低的響應耗時。

    你要說再多,我就不知道了,看這些數據,或許還能夠再升一把。但要讓服務要盡量的穩,壓力盡量的分散,就不能太過苛刻,對這個數據我已經很滿意了。

    這只是一個省份的數據。如果綜合起來,上層的業務,就需要承載10w/s的請求。這是非常容易的,但也沒有意義,許多高并發經驗都是這么吹上去的,要不要去改改簡歷?

    復雜業務高并發才有價值,10w/s請求,給我兩臺redis就夠了,沒必要拿來吹。

    但也是被zset的性能震驚了一把。跳表的結構,也了解一些,沒想到在高并發大數據量場景下,能這么快。

    測試數據?沒有。本文只是分享一個經驗值。對了,redis幾乎不占用CPU,你只需要一臺2core16gb的服務器就可以了。

    《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的Redis的zset有多牛?请把耳朵递过来的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。