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