本文以華為云DCS for Redis版本為例,介紹Redis4.0的新功能。文章轉(zhuǎn)載自華為云幫助中心。
創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站設計、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設與策劃設計,寶山網(wǎng)站建設哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設十載,網(wǎng)設計領(lǐng)域的專業(yè)建站公司;建站業(yè)務涵蓋:寶山等地區(qū)。寶山做網(wǎng)站價格咨詢:028-86922220與Redis3.x版本相比,DCS的Redis4.x以上版本,除了開源Redis增加的特性之外,還有如下大特性增強。
l 創(chuàng)建耗時縮短
實例由虛機方式改成了物理機容器化部署,創(chuàng)建實例只需要8~10秒時間完成。
l 性能提升
高性能版Redis4.x,操作系統(tǒng)使用華為自研的輕量級LibOS,單節(jié)點QPS從10w提升到30w
l 節(jié)省成本
高性能版Redis4.x,實例規(guī)格以1G為步長,用多少G買多少G,靈活定制,不再受限2的n次方要求。
相比于之前的版本,華為云Redis4.x在性能方面有了不小的提升,大大提高了使用者的體驗,如果你想了解更加詳細的具體實操內(nèi)容,點這個鏈接
https://www.huaweicloud.com/product/dcs.html
給你更多驚喜。
接下來給大家介紹,開源Redis4.0版本新功能的具體特性。
Redis4.x版本更新的特性,主要涉及三個方面:
新命令的增加,如MEMORY、SWAPDB。
Lazyfree機制,延遲刪除大key,降低刪除操作對系統(tǒng)資源的占用影響。
內(nèi)存性能優(yōu)化,即主動碎片整理。
MEMORY命令
在Redis3.x及之前,只能通過info memory命令了解有限的幾個內(nèi)存統(tǒng)計信息。Redis4.0引入新的命令memory,讓您能夠更深入了解Redis的內(nèi)存使用情況。
127.0.0.1:6379[8]> memory help
1) MEMORY <subcommand> arg arg ... arg. Subcommands are:
2) DOCTOR - Return memory problems reports.
3) MALLOC-STATS -- Return internal statistics report from the memory allocator.
4) PURGE -- Attempt to purge dirty pages for reclamation by the allocator.
5) STATS -- Return information about the memory usage of the server.
6) USAGE <key> [SAMPLES <count>] -- Return memory in bytes used by <key> and its value. Nested values are sampled up to <count
times (default: 5).
127.0.0.1:6379[8]>
usage
輸入memory usage [key],如果當前key存在,則返回key的value實際使用內(nèi)存估算值;如果key不存在,則返回nil。
127.0.0.1:6379[8]> set dcs "DCS is an online, distributed, in-memory cache service compatible with Redis, Memcached, and i
n-memory data grid (IMDG)."
OK
127.0.0.1:6379[8]> memory usage dcs
(integer) 171
127.0.0.1:6379[8]>
usage統(tǒng)計value內(nèi)存占用,以及key自身的內(nèi)存占用,不包含key的Expire內(nèi)存占用。
127.0.0.1:6379[8]> set dcs.huaweiclou "Distributed Cache Service"
OK
127.0.0.1:6379[8]> memory usage dcs.huaweiclou
(integer) 85
127.0.0.1:6379[8]> set dcs.huaweicloud "Distributed Cache Service"
OK
127.0.0.1:6379[8]> memory usage dcs.huaweicloud
(integer) 86 //key名稱長度變化后,內(nèi)存占用也有變化
127.0.0.1:6379[8]> expire dcs.huaweicloud 100000
(integer) 1
127.0.0.1:6379[8]> memory usage dcs.huaweicloud
(integer) 86 //加了過期時間后,內(nèi)存占用沒有改變
127.0.0.1:6379[8]>
對hash、list、set、sorted set等數(shù)據(jù)類型,usage命令會抽樣統(tǒng)計,提供內(nèi)存占用的估算值。
使用方式:memory usage keyset samples 1000
其中keyset表示一個集合數(shù)據(jù)類型的key,1000表示抽樣個數(shù)。
stats
返回當前實例內(nèi)存使用細節(jié)。
使用方法:memory stats
127.0.0.1:6379[8]> memory stats
1) "peak.allocated"
2) (integer) 2412408
3) "total.allocated"
4) (integer) 2084720
5) "startup.allocated"
6) (integer) 824928
7) "replication.backlog"
... ...
以下給出部分數(shù)據(jù)返回項的具體含義
表1-1 memory stats
數(shù)據(jù)返回項
說明
peak.allocated
Redis實例運行過程中,allocator分配的內(nèi)存峰值。同info memory的used_memory_peak
total.allocated
allocator當前分配的內(nèi)存字節(jié)數(shù)。同info memory的used_memory
startup.allocated
Redis啟動占用的內(nèi)存字節(jié)數(shù)
replication.backlog
Redis復制積壓緩沖區(qū)(replication backlog)內(nèi)存使用字節(jié)數(shù),通過repl-backlog-size參數(shù)設置,默認1M
clients.slaves
在master側(cè),所有slave clients消耗的內(nèi)存字節(jié)數(shù)
clients.normal
Redis所有常規(guī)客戶端消耗內(nèi)存節(jié)字數(shù)
overhead.total
Redis額外的總開銷內(nèi)存字節(jié)數(shù); 即分配器分配的總內(nèi)存total.allocated,減去數(shù)據(jù)實際存儲使用內(nèi)存。
keys.count
Redis實例中key的數(shù)量
keys.bytes-per-key
每個key平均占用字節(jié)數(shù)。注意,overhead也會均攤到每個key上,因此不能以此值來表示業(yè)務實際的key平均長度。
dataset.bytes
表示Redis數(shù)據(jù)占用的內(nèi)存容量。即分配的內(nèi)存總量,減去總的額外開銷內(nèi)存量。
dataset.percentage
表示Redis數(shù)據(jù)占用內(nèi)存占總內(nèi)存分配的百分比
peak.percentage
當前內(nèi)存使用量與峰值時的占比
fragmentation
表示Redis的內(nèi)存碎片率
doctor
使用方法: memory doctor
used_memory(total.allocated)小于5M,doctor認為內(nèi)存使用量過小,不做進一步診斷。當滿足以下某一點,Redis會給出診斷結(jié)果和建議:
peak分配內(nèi)存大于當前total_allocated的1.5倍,即peak.allocated/total.allocated > 1.5,說明內(nèi)存碎片率高,RSS遠大于used_memory
High fragmentation/fragmentation大于1.4,說明內(nèi)存碎片率高
每個Normal Client平均使用內(nèi)存大于200KB,說明pipeline可能使用不當,或Pub/Sub客戶端處理消息不及時
每個Slave Client平均使用內(nèi)存大于10MB,說明master的寫入流量過高
purge
使用方法: memory purge
用途:通過調(diào)用jemalloc內(nèi)部命令,進行內(nèi)存釋放。釋放對象包括Redis進程占用但未有效使用的內(nèi)存,即常說的內(nèi)存碎片。
memory purge只適用于使用jemalloc作為allocator的Redis實例。
Lazy free機制
解決的痛點/問題
Redis是單線程程序,當運行一個耗時較大的請求時,會導致所有請求排隊等待,在請求處理完成前,Redis不能響應其他請求,因此容易引發(fā)性能問題。而Redis刪除大的集合鍵時,就屬于一種比較耗時的請求。
原理
Redis4.x提供的一種惰性刪除或者說延遲釋放機制,主要用于解決刪除大key對Redis進程的阻塞,從而避免帶來性能與可用性問題。
刪除key時,Redis異步延時釋放key的內(nèi)存,把key釋放操作放在bio(Background I/O)單獨的子線程處理中。
使用方法
主動刪除
? unlink
unlink與del命令目的一樣,刪除某個key。unlink在刪除集合類鍵時,如果集合鍵的元素個數(shù)大于64個,會把內(nèi)存釋放操作,給單獨的bio(Background I/O)線程來執(zhí)行。因此unlink刪除操作能在非常短的時間內(nèi)完成包含上百萬個元素的大key刪除。
? flushall/flushdb
通過對flushall/flushdb添加ASYNC異步清理選項,Redis在清理整個實例或單個DB時,操作都是異步的。
過期key刪除、大key驅(qū)逐刪除
被動刪除有四種場景,每種場景對應一個配置參數(shù),默認都是關(guān)閉:
lazyfree-lazy-eviction no //針對redis內(nèi)存使用達到maxmeory,并設置有淘汰策略時,是否采用lazy free機制
lazyfree-lazy-expire no //針對設置有TTL的鍵,達到過期后,被redis清理刪除時是否采用lazy free機制
lazyfree-lazy-server-del no //針對有些指令在處理已存在的鍵時,會帶有一個隱式的DEL鍵的操作
slave-lazy-flush no //針對slave進行全量數(shù)據(jù)同步,slave在加載master的RDB文件前,會運行flushall來清理自己的數(shù)據(jù)場景
以上配置如需使用,請?zhí)峁巫稍兗夹g(shù)服務人員。
其他新增命令
swapdb
用途:交換同一Redis實例內(nèi)2個db的數(shù)據(jù)。
用法:swapdb dbindex1 dbindex2
zlexcount
用途:在有序集合中,返回符合條件的元素個數(shù)。
用法:zlexcount key min max
內(nèi)存使用和性能改進
使用更少的內(nèi)存來存儲相同數(shù)量的數(shù)據(jù)
可以對使用的內(nèi)存進行碎片整理,并逐漸回收
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
網(wǎng)頁名稱:Redis4.0支持的新功能說明-創(chuàng)新互聯(lián)
新聞來源:http://www.rwnh.cn/article34/dhphpe.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供面包屑導航、網(wǎng)站收錄、小程序開發(fā)、云服務器、動態(tài)網(wǎng)站、品牌網(wǎng)站設計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容