日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

Redis生產(chǎn)實(shí)戰(zhàn):內(nèi)存模型、數(shù)據(jù)結(jié)構(gòu)與緩存異常排查

Redis生產(chǎn)實(shí)戰(zhàn):內(nèi)存模型、數(shù)據(jù)結(jié)構(gòu)與緩存異常排查 第一次在項(xiàng)目里被 Redis 救場(chǎng)是好幾年前一個(gè)商品詳情頁的接口。那時(shí)候數(shù)據(jù)庫的 QPS 已經(jīng)被壓到貼著地板走頁面每次刷新都要連表查十幾張表高峰期接口響應(yīng)時(shí)間直接干到三秒以上。后來把詳情頁那份聚合數(shù)據(jù)整成一份 JSON 塞進(jìn) Redis超時(shí)率當(dāng)天就掉下來了。從那以后我對(duì)這個(gè)中間件的態(tài)度就變了——它不是加個(gè)緩存這么簡(jiǎn)單而是一套需要認(rèn)真理解內(nèi)存模型、數(shù)據(jù)結(jié)構(gòu)、持久化策略和淘汰機(jī)制的基礎(chǔ)設(shè)施。這篇內(nèi)容面向的是準(zhǔn)備把 Redis 用進(jìn)生產(chǎn)環(huán)境、或者已經(jīng)用了但心里沒底的同學(xué)從它到底解決什么問題、單線程為什么還能扛住高并發(fā)到五種基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)的落地選型、安裝配置、緩存三大異常的應(yīng)對(duì)再到線上排查的實(shí)操手法我會(huì)按我自己踩過的順序講一遍。看完你至少能做到兩件事知道什么數(shù)據(jù)該往 Redis 里放、什么數(shù)據(jù)不該放以及在它出問題的時(shí)候知道從哪幾個(gè)命令開始查。1. 先搞清楚 Redis 到底在項(xiàng)目里補(bǔ)的是哪塊短板很多人對(duì) Redis 的第一印象是內(nèi)存數(shù)據(jù)庫讀得快這個(gè)描述沒錯(cuò)但太淺。真把它放進(jìn)架構(gòu)里你得先明白它替代的是哪一段鏈路否則用著用著就會(huì)出現(xiàn)緩存加了一堆接口還是慢或者數(shù)據(jù)對(duì)不上這類問題。1.1 從一次接口超時(shí)反推它解決的問題回到開頭那個(gè)詳情頁的例子。當(dāng)時(shí)那條鏈路的耗時(shí)分布大致是這樣的數(shù)據(jù)庫連接池等待、多表 JOIN、結(jié)果集序列化、網(wǎng)絡(luò)傳輸。真正壓死駱駝的是 JOIN 和連接池爭(zhēng)搶因?yàn)樵斍轫摰淖x請(qǐng)求量是寫請(qǐng)求的幾十倍每次讀都要重新拼裝一遍數(shù)據(jù)數(shù)據(jù)庫的 buffer pool 命中率再高也頂不住這種重復(fù)勞動(dòng)。Redis 在這里的價(jià)值不是快而是把一次復(fù)雜的計(jì)算或查詢結(jié)果變成一次 O(1) 的內(nèi)存讀取。這兩者的差別在于數(shù)據(jù)庫快是因?yàn)樗饕蛿?shù)據(jù)局部性Redis 快是因?yàn)樗鼔焊蛔鲇?jì)算直接返回你之前存好的字節(jié)。理解這一點(diǎn)很關(guān)鍵因?yàn)樗鼪Q定了你該緩存什么——緩存的是重復(fù)計(jì)算的結(jié)果而不是所有查詢。我在實(shí)際項(xiàng)目里見過反例有人把用戶表整表緩存成 Hash每次查單個(gè)用戶還要 HGET 一次看著是走了 Redis實(shí)際上把關(guān)系型數(shù)據(jù)庫的查詢能力全丟了后來要做按手機(jī)號(hào)模糊搜索、按注冊(cè)時(shí)間排序全得在應(yīng)用層手寫最后又灰溜溜地加回?cái)?shù)據(jù)庫查詢。所以第一件事要先劃清邊界。1.2 Redis 與關(guān)系型數(shù)據(jù)庫的職責(zé)分工我的劃分原則很簡(jiǎn)單數(shù)據(jù)庫負(fù)責(zé)真相Redis 負(fù)責(zé)效率。具體到落地下面這幾類數(shù)據(jù)適合放進(jìn)去讀多寫少、且允許短暫不一致的熱點(diǎn)數(shù)據(jù)比如商品詳情、配置項(xiàng)、字典表。有明確過期語義的數(shù)據(jù)比如登錄態(tài)、驗(yàn)證碼、短信頻控計(jì)數(shù)。需要原子性計(jì)數(shù)的場(chǎng)景比如庫存扣減的預(yù)扣、接口限流、文章閱讀數(shù)。需要跨進(jìn)程共享的臨時(shí)狀態(tài)比如分布式鎖、任務(wù)隊(duì)列、秒殺排隊(duì)。反過來下面這些我基本不往 Redis 里塞需要復(fù)雜條件查詢、聚合統(tǒng)計(jì)的業(yè)務(wù)主數(shù)據(jù)。單條體積超過幾十 KB 的大對(duì)象尤其是列表頁會(huì)批量取的。需要強(qiáng)事務(wù)保證的跨實(shí)體寫操作。生命周期極短且無復(fù)用價(jià)值的臨時(shí)數(shù)據(jù)。這里有個(gè)判斷口訣如果這份數(shù)據(jù)丟了業(yè)務(wù)能不能靠數(shù)據(jù)庫重建能重建的才適合放進(jìn)緩存層不能重建的說明它是真相的一部分應(yīng)該留在數(shù)據(jù)庫。還有一點(diǎn)容易被忽略Redis 的內(nèi)存這個(gè)屬性意味著成本和容量都是硬約束。一臺(tái) 16G 內(nèi)存的機(jī)器實(shí)際能給 Redis 用的可能只有 10G 出頭剩下要留給操作系統(tǒng)、fork 時(shí)的寫時(shí)復(fù)制、以及內(nèi)存碎片。所以在設(shè)計(jì)階段就該估算數(shù)據(jù)量而不是等 OOM 了再反過來刪 key。1.3 什么規(guī)模的項(xiàng)目才真正需要它經(jīng)常有人問小項(xiàng)目要不要上 Redis。我的看法是看兩個(gè)指標(biāo)單表數(shù)據(jù)量是否已經(jīng)讓查詢變慢以及是否出現(xiàn)了跨請(qǐng)求共享狀態(tài)的需求。如果只是幾千條數(shù)據(jù)的后臺(tái)管理系統(tǒng)查詢走索引完全夠用引入 Redis 只是多了一個(gè)需要運(yùn)維的組件。但只要出現(xiàn)下面任意一種情況它就值得上了同一份數(shù)據(jù)一秒內(nèi)被讀幾十次以上需要給接口做頻率限制需要給多個(gè)服務(wù)實(shí)例共享會(huì)話需要做排行榜、延時(shí)任務(wù)這類數(shù)據(jù)庫不擅長的結(jié)構(gòu)。這些都是硬需求跟項(xiàng)目規(guī)模無關(guān)。2. 單線程還能這么快底層到底做了什么Redis 是單線程的這句話流傳太廣以至于很多人第一次聽到會(huì)懷疑它扛不住并發(fā)。實(shí)際情況是Redis 的命令執(zhí)行確實(shí)是單線程的但它的快不是因?yàn)榫€程少而是因?yàn)闆]有線程切換開銷 純內(nèi)存操作 精心設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu) IO 多路復(fù)用這幾件事疊加在一起。2.1 單線程模型的真實(shí)含義與版本演進(jìn)早期版本里Redis 從接收連接、讀取命令、執(zhí)行命令到寫回結(jié)果全部在一個(gè)主線程里完成靠的是 epollLinux、kqueuemacOS這類多路復(fù)用機(jī)制一個(gè)線程輪詢處理成千上萬個(gè)連接。這帶來的好處非常直接不需要加鎖不存在競(jìng)態(tài)任何一條命令執(zhí)行期間數(shù)據(jù)狀態(tài)都是確定的。像 INCR 這種操作天然就是原子的你不用操心并發(fā)問題。但網(wǎng)絡(luò)讀寫本身是有開銷的。Redis 6.0 之后引入了 IO 多線程注意是只把 socket 的讀寫和協(xié)議解析分給多個(gè)線程命令執(zhí)行仍然在主線程串行。這個(gè)改動(dòng)對(duì)高吞吐場(chǎng)景比如大 value 的批量讀寫提升明顯因?yàn)槠款i從 CPU 計(jì)算轉(zhuǎn)移到了網(wǎng)絡(luò)拷貝上。配置上對(duì)應(yīng)的是這兩項(xiàng)# redis.conf io-threads 4 io-threads-do-reads yes提示io-threads 的設(shè)置經(jīng)驗(yàn)值是 CPU 核數(shù)的 3/4 左右且不建議超過 8 個(gè)。開太多反而會(huì)因?yàn)榫€程調(diào)度拖慢我在一臺(tái) 32 核機(jī)器上試過開到 16吞吐量相比 8 個(gè)還降了一點(diǎn)。2.2 內(nèi)存存儲(chǔ)與底層數(shù)據(jù)結(jié)構(gòu)的取舍純內(nèi)存這件事本身就是數(shù)量級(jí)的差距。一次內(nèi)存隨機(jī)訪問大概在 100 納秒量級(jí)而一次機(jī)械硬盤尋道是毫秒級(jí)SSD 也是幾十微秒級(jí)差距在四到五個(gè)數(shù)量級(jí)。但光快還不夠Redis 在數(shù)據(jù)結(jié)構(gòu)上做了很多省內(nèi)存的文章這部分決定了你的實(shí)例能裝多少數(shù)據(jù)。舉個(gè)具體例子一個(gè)普通的 String 并不是簡(jiǎn)單地 malloc 一塊內(nèi)存而是用 SDS簡(jiǎn)單動(dòng)態(tài)字符串來實(shí)現(xiàn)頭部記錄了長度和剩余空間好處是獲取長度是 O(1)、拼接時(shí)可以做預(yù)分配、并且二進(jìn)制安全可以存圖片、序列化對(duì)象。再比如小規(guī)模的 Hash底層不會(huì)一上來就用哈希表而是用 listpack老版本叫 ziplist這種緊湊的連續(xù)內(nèi)存結(jié)構(gòu)元素少的時(shí)候省下大量指針開銷。這些細(xì)節(jié)平時(shí)不用關(guān)心但有兩個(gè)配置項(xiàng)跟它直接相關(guān)值得記住hash-max-listpack-entries 128 hash-max-listpack-value 64 zset-max-listpack-entries 128意思是當(dāng) Hash 的字段數(shù)不超過 128、且每個(gè)字段值不超過 64 字節(jié)時(shí)用緊湊結(jié)構(gòu)存儲(chǔ)一旦超過就轉(zhuǎn)成真正的哈希表。轉(zhuǎn)過去之后內(nèi)存占用可能翻好幾倍而且這個(gè)過程是不可逆的——即使你后來把字段刪到只剩 3 個(gè)它也不會(huì)變回緊湊結(jié)構(gòu)。我在一個(gè)存用戶標(biāo)簽的 Hash 上踩過這個(gè)坑前期測(cè)試時(shí)每個(gè)用戶 20 來個(gè)標(biāo)簽內(nèi)存很漂亮上線后運(yùn)營批量打標(biāo)某些用戶標(biāo)簽數(shù)沖到 200整個(gè)實(shí)例內(nèi)存直接漲了 40%。2.3 持久化RDB 與 AOF 的選擇邏輯內(nèi)存數(shù)據(jù)庫最怕的是斷電所以持久化機(jī)制必須搞清楚。Redis 給了兩種方式理解它們的關(guān)鍵是搞明白各自犧牲了什么。RDB是某一時(shí)刻的全量快照通過 fork 子進(jìn)程 寫時(shí)復(fù)制來完成。優(yōu)點(diǎn)是文件緊湊、恢復(fù)速度快適合做備份和災(zāi)備。缺點(diǎn)是兩次快照之間的數(shù)據(jù)會(huì)丟而且 fork 的瞬間如果數(shù)據(jù)量大會(huì)有明顯的內(nèi)存膨脹和短暫卡頓。AOF是追加寫命令日志按 fsync 策略分三檔策略行為數(shù)據(jù)安全性能影響always每條命令都刷盤最高最多丟一條最差QPS 掉一個(gè)數(shù)量級(jí)everysec每秒刷一次最多丟一秒可接受生產(chǎn)常用no交給操作系統(tǒng)可能丟較多最好不建議生產(chǎn)用AOF 的問題是文件會(huì)越來越大所以需要重寫rewrite本質(zhì)上也是 fork 子進(jìn)程根據(jù)當(dāng)前內(nèi)存狀態(tài)生成一份精簡(jiǎn)的命令集。實(shí)際生產(chǎn)里我基本都用混合持久化Redis 4.0 之后支持配置是這樣appendonly yes appendfsync everysec aof-use-rdb-preamble yes開了混合模式之后AOF 重寫時(shí)前半段用 RDB 格式存全量后半段追加增量命令?;謴?fù)時(shí)先加載 RDB 部分再重放命令兼顧了速度和完整性。這個(gè)配置我在這幾年幾個(gè)項(xiàng)目里都用恢復(fù)時(shí)間和數(shù)據(jù)安全性都比較平衡。注意如果實(shí)例內(nèi)存超過 10Gfork 時(shí)的寫時(shí)復(fù)制可能帶來額外的內(nèi)存峰值。建議預(yù)留至少 50% 的空閑內(nèi)存或者把vm.overcommit_memory設(shè)為 1避免 fork 失敗。3. 五種基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)五類真實(shí)業(yè)務(wù)場(chǎng)景Redis 常被叫做數(shù)據(jù)結(jié)構(gòu)服務(wù)器這個(gè)定位很準(zhǔn)確。它的價(jià)值不在于能存 key-value而在于它把常用的幾種數(shù)據(jù)結(jié)構(gòu)做成了服務(wù)端原語你在應(yīng)用層不用自己實(shí)現(xiàn)加鎖和并發(fā)控制。3.1 String 與 Hash緩存對(duì)象時(shí)的兩種打法String 是最基礎(chǔ)的能存字符串、數(shù)字、二進(jìn)制。最典型的用法是緩存整個(gè)對(duì)象序列化后的 JSONSET product:1001 {id:1001,name:某商品,price:99.00} EX 3600 GET product:1001EX 3600 表示一小時(shí)后過期。這種整存整取的方式適合讀多寫少、且每次都要完整對(duì)象的場(chǎng)景比如詳情頁。Hash 則適合需要部分讀寫、或者字段會(huì)獨(dú)立變化的場(chǎng)景HSET user:2001 name A同學(xué) level 3 lastLogin 2024-05-01 HGET user:2001 level HINCRBY user:2001 level 1用 Hash 的好處是可以只更新某個(gè)字段不用把整個(gè)對(duì)象讀出來改完再寫回去減少了網(wǎng)絡(luò)傳輸和序列化開銷。缺點(diǎn)是過期時(shí)間只能加在整個(gè) key 上沒法給單個(gè)字段設(shè) TTL。選型上我的經(jīng)驗(yàn)是對(duì)象字段少、整體讀寫就 String對(duì)象字段多、經(jīng)常單獨(dú)更新某個(gè)字段就 Hash。但要注意 2.2 里提到的結(jié)構(gòu)轉(zhuǎn)換問題字段數(shù)別讓它無限增長。有個(gè)容易忽略的細(xì)節(jié)String 存數(shù)字時(shí)可以直接用 INCR/DECR 做原子計(jì)數(shù)這是做限流、庫存預(yù)扣的基礎(chǔ)。像接口頻控這種場(chǎng)景我是這么寫的# 一分鐘內(nèi)同一用戶最多 60 次 INCR rate:limit:user:2001:202405011200 EXPIRE rate:limit:user:2001:202405011200 60兩次命令不是原子的嚴(yán)格場(chǎng)景需要用 Lua 腳本或者SET key 1 EX 60 NX配合 INCR 的組合來處理。3.2 List 與 Set隊(duì)列、去重與關(guān)系判斷List 是雙向鏈表底層實(shí)際是 quicklist由多個(gè)緊湊節(jié)點(diǎn)串起來支持兩端插入彈出天然適合做隊(duì)列LPUSH queue:task job-001 BRPOP queue:task 5BRPOP 是阻塞版本隊(duì)列空的時(shí)候會(huì)掛起等待超時(shí)返回 nil。用這個(gè)做簡(jiǎn)單的任務(wù)隊(duì)列是可行的但要注意它沒有 ACK 機(jī)制——消費(fèi)者取走消息后如果進(jìn)程崩了這條消息就丟了。要可靠投遞得上 Stream 類型或者專業(yè)的消息隊(duì)列。Set 是無序集合最大的價(jià)值是去重和集合運(yùn)算SADD article:1001:liked user:2001 SADD article:1001:liked user:2002 SCARD article:1001:liked SINTER user:2001:follow user:2002:followSINTER 求交集這個(gè)能力在做共同關(guān)注共同好友時(shí)特別省事一行命令解決不用把兩個(gè)列表拉到應(yīng)用層做雙層循環(huán)。但要注意大集合求交集的復(fù)雜度是 O(N*M)幾萬規(guī)模的集合還行上百萬就要考慮用別的方式了。3.3 ZSet排行榜與延時(shí)任務(wù)的核心有序集合是我個(gè)人認(rèn)為 Redis 最有價(jià)值的結(jié)構(gòu)。它每個(gè)元素帶一個(gè) score按 score 排序底層用跳表實(shí)現(xiàn)插入和范圍查詢都是 O(logN)。排行榜是最經(jīng)典的應(yīng)用ZINCRBY rank:20240501 1 user:2001 ZREVRANGE rank:20240501 0 9 WITHSCORES第一行給用戶加分第二行取分?jǐn)?shù)最高的前十名含分?jǐn)?shù)。ZREVRANGE 是倒序正序用 ZRANGE。另一個(gè)用法是延時(shí)任務(wù)。把任務(wù)的執(zhí)行時(shí)間戳作為 score然后用 ZRANGEBYSCORE 按時(shí)間范圍取到期任務(wù)ZADD delay:queue 1714560000 order-close:3001 ZRANGEBYSCORE delay:queue 0 1714560000 LIMIT 0 100配合定時(shí)輪詢就實(shí)現(xiàn)了一個(gè)輕量的延時(shí)隊(duì)列。我在幾個(gè)項(xiàng)目里用它做過訂單超時(shí)關(guān)閉比引入完整消息隊(duì)列輕量得多精度控制在秒級(jí)完全夠用。3.4 結(jié)構(gòu)選型速查業(yè)務(wù)需求推薦結(jié)構(gòu)關(guān)鍵命令注意事項(xiàng)對(duì)象緩存StringSET/GET體積控制在 10KB 內(nèi)局部字段更新HashHSET/HGET字段數(shù)別超 128簡(jiǎn)單隊(duì)列ListLPUSH/BRPOP無 ACK謹(jǐn)慎用于關(guān)鍵任務(wù)去重計(jì)數(shù)SetSADD/SCARD大集合注意內(nèi)存共同關(guān)系SetSINTER規(guī)模別上百萬排行榜ZSetZINCRBY/ZREVRANGEscore 用 double注意精度延時(shí)任務(wù)ZSetZADD/ZRANGEBYSCORE需要輪詢進(jìn)程配合頻控計(jì)數(shù)StringINCR/EXPIRE建議用 Lua 保證原子4. 從零裝一套能用的 Redis理論講完落到手上。這部分我按裝、配、驗(yàn)三步走配置部分會(huì)把幾個(gè)真正影響生產(chǎn)穩(wěn)定性的項(xiàng)挑出來講。4.1 安裝方式的選擇與取舍三種常見方式包管理器安裝、源碼編譯、容器運(yùn)行。包管理器最省事apt install redis-server或者yum install redis但版本往往偏舊有些新特性用不上。源碼編譯能拿到最新穩(wěn)定版代價(jià)是要自己處理依賴wget https://download.redis.io/releases/redis-7.2.4.tar.gz tar -zxvf redis-7.2.4.tar.gz cd redis-7.2.4 make make install PREFIX/usr/local/redis容器方式適合本地開發(fā)和快速驗(yàn)證docker run -d -p 6379:6379 redis:7.2。但生產(chǎn)環(huán)境用容器要額外注意數(shù)據(jù)卷掛載和內(nèi)存限制容器內(nèi)的 maxmemory 和宿主機(jī)的 cgroup 限制不一致時(shí)容易出現(xiàn) OOM Kill 而不是正常的淘汰。提示編譯前確認(rèn) gcc 版本7.x 之后要求 gcc 5.3 以上。另外make失敗最常見的原因是 jemalloc 編譯不過可以加MALLOClibc參數(shù)繞過。4.2 生產(chǎn)環(huán)境必須改的配置項(xiàng)默認(rèn)配置是給開發(fā)用的直接上生產(chǎn)會(huì)出事。下面這幾項(xiàng)我每次部署都會(huì)過一遍# 網(wǎng)絡(luò)與安全 bind 0.0.0.0 protected-mode yes port 6379 requirepass 你的強(qiáng)密碼 # 運(yùn)行方式 daemonize yes maxclients 10000 # 內(nèi)存 maxmemory 8gb maxmemory-policy allkeys-lru # 持久化 appendonly yes appendfsync everysecmaxmemory一定要設(shè)不設(shè)的話 Redis 會(huì)一直吃內(nèi)存直到被系統(tǒng)殺掉那時(shí)候就不是淘汰幾個(gè) key 的問題了而是整個(gè)實(shí)例掛掉。maxmemory-policy的選擇取決于你的數(shù)據(jù)性質(zhì)noeviction內(nèi)存滿了直接報(bào)錯(cuò)適合數(shù)據(jù)不能丟的場(chǎng)景。allkeys-lru所有 key 里淘汰最近最少使用的純緩存場(chǎng)景首選。volatile-lru只淘汰設(shè)了過期時(shí)間的 key適合緩存和持久數(shù)據(jù)混存的實(shí)例。allkeys-lfu按訪問頻率淘汰熱點(diǎn)數(shù)據(jù)保護(hù)更好4.0 之后支持。我個(gè)人在純緩存實(shí)例上一律用allkeys-lru在混合實(shí)例上用volatile-lru并且嚴(yán)格要求持久數(shù)據(jù)不設(shè) TTL靠這個(gè)約定來保證它們不會(huì)被誤淘汰。4.3 連通性驗(yàn)證與基礎(chǔ)命令實(shí)測(cè)裝完之后別急著寫代碼先手工驗(yàn)一遍redis-cli -h 127.0.0.1 -p 6379 -a 你的密碼 127.0.0.1:6379 PING PONG 127.0.0.1:6379 INFO serverPING 返回 PONG 說明連通。INFO 里重點(diǎn)看幾個(gè)字段redis_version版本、uptime_in_days運(yùn)行天數(shù)、connected_clients當(dāng)前連接數(shù)。再跑一組讀寫驗(yàn)證127.0.0.1:6379 SET test:key hello EX 60 OK 127.0.0.1:6379 TTL test:key (integer) 59 127.0.0.1:6379 GET test:key helloTTL 返回 59 而不是 60是因?yàn)槊顖?zhí)行有極小的耗時(shí)屬于正?,F(xiàn)象。如果 TTL 返回 -1 說明沒設(shè)過期返回 -2 說明 key 不存在——這兩個(gè)返回值經(jīng)常被混淆寫監(jiān)控腳本時(shí)要注意區(qū)分。5. 緩存三大異常每個(gè)都有對(duì)應(yīng)的打法緩存用起來之后真正讓人睡不著覺的不是性能而是數(shù)據(jù)一致性和異常流量。所謂穿透、擊穿、雪崩這三個(gè)詞說的是三種不同的失效模式應(yīng)對(duì)手段也完全不同必須分清楚。5.1 三種失效模式的成因?qū)Ρ犬惓n愋陀|發(fā)條件現(xiàn)象影響范圍緩存穿透查詢根本不存在的數(shù)據(jù)每次都打到數(shù)據(jù)庫可能被惡意利用緩存擊穿熱點(diǎn) key 過期瞬間大量請(qǐng)求同時(shí)打庫單個(gè)熱點(diǎn)緩存雪崩大量 key 同時(shí)過期或?qū)嵗礄C(jī)數(shù)據(jù)庫瞬間承壓全局性穿透的本質(zhì)是緩存里沒有數(shù)據(jù)庫里也沒有查詢永遠(yuǎn)落空緩存形同虛設(shè)。擊穿是緩存里本來有剛好過期了一瞬間所有請(qǐng)求涌向數(shù)據(jù)庫。雪崩則是更大范圍的集體失效。這三者的共同點(diǎn)是把數(shù)據(jù)庫當(dāng)成了兜底所以核心思路都是在緩存層就把請(qǐng)求擋住或者分流。5.2 穿透與擊穿的落地實(shí)現(xiàn)對(duì)付穿透最直接的辦法是緩存空值。查數(shù)據(jù)庫沒查到也往 Redis 里塞一個(gè)特殊標(biāo)記TTL 設(shè)短一點(diǎn)比如 60 秒def get_user(user_id): key fuser:{user_id} cached redis.get(key) if cached is not None: if cached __NULL__: return None return json.loads(cached) user db.query_user(user_id) if user is None: redis.set(key, __NULL__, ex60) return None redis.set(key, json.dumps(user), ex3600) return user這個(gè)做法的隱患是如果攻擊者用隨機(jī) ID 瘋狂請(qǐng)求會(huì)往 Redis 里塞大量空值 key所以通常要配合布隆過濾器在入口先做一層攔截。布隆過濾器判斷一定不存在是準(zhǔn)確的判斷存在有誤判率剛好適合放在緩存前面。擊穿的解法是加互斥鎖保證同一時(shí)刻只有一個(gè)請(qǐng)求去回源def get_hot_data(key): data redis.get(key) if data: return data lock_key flock:{key} if redis.set(lock_key, 1, nxTrue, ex10): try: data db.query(key) redis.set(key, data, ex300) return data finally: redis.delete(lock_key) else: time.sleep(0.05) return get_hot_data(key)注意nxTrue這個(gè)參數(shù)等價(jià)于 SETNX只有 key 不存在時(shí)才設(shè)置成功這是拿鎖的關(guān)鍵。鎖的過期時(shí)間要設(shè)否則持有者崩了會(huì)死鎖。5.3 雪崩的預(yù)防與兜底策略雪崩的預(yù)防核心是打散過期時(shí)間。給 TTL 加一個(gè)隨機(jī)偏移量是最簡(jiǎn)單有效的做法ttl 3600 random.randint(0, 600) redis.set(key, value, exttl)這樣即使批量預(yù)熱過期時(shí)間也會(huì)分散在十分鐘的窗口里不會(huì)同時(shí)失效。除了打散還要做幾層兜底本地緩存比如 Caffeine作為二級(jí)緩存擋第一波流量數(shù)據(jù)庫連接池限流避免被打死關(guān)鍵接口做熔斷降級(jí)返回兜底數(shù)據(jù)而不是直接報(bào)錯(cuò)。我的實(shí)際經(jīng)驗(yàn)有一次批量導(dǎo)入商品后統(tǒng)一預(yù)熱緩存所有 key 的 TTL 都是 7200 秒結(jié)果兩小時(shí)后整批同時(shí)失效數(shù)據(jù)庫 CPU 直接打滿。后來改成預(yù)熱時(shí)按7200 random(0, 1200)設(shè)置再?zèng)]出現(xiàn)過集體失效。5.4 雙寫一致性該怎么做緩存和數(shù)據(jù)庫同時(shí)寫一定有短暫不一致關(guān)鍵是控制窗口和最終一致。業(yè)界主流是 Cache Aside 模式讀的時(shí)候先讀緩存沒有再讀庫并回填寫的時(shí)候先更新數(shù)據(jù)庫再刪除緩存。為什么是刪緩存而不是更新緩存因?yàn)椴l(fā)更新時(shí)兩個(gè)請(qǐng)求的更新順序可能和寫庫順序不一致導(dǎo)致緩存里存了舊值。刪除操作更安全下次讀的時(shí)候自然回填最新值。但先寫庫再刪緩存仍有極小概率出問題讀請(qǐng)求在寫庫之后、刪緩存之前讀到舊值并回填。常用的補(bǔ)救是延遲雙刪——寫完庫刪一次隔幾百毫秒再刪一次。更徹底的方案是訂閱數(shù)據(jù)庫的 binlog異步刪除緩存把一致性保障從業(yè)務(wù)代碼里剝離出來。6. 線上出問題時(shí)我一般從這幾個(gè)命令開始查Redis 的問題看起來五花八門實(shí)際上集中在幾類內(nèi)存漲了、變慢了、連接不上了、數(shù)據(jù)不對(duì)了。每一類都有對(duì)應(yīng)的排查入口。6.1 內(nèi)存類問題的定位路徑第一步看整體redis-cli -a 密碼 INFO memory重點(diǎn)看三個(gè)值used_memory_human實(shí)際使用、used_memory_rss_human操作系統(tǒng)看到的內(nèi)存、mem_fragmentation_ratio碎片率。碎片率在 1.0 到 1.5 之間算正常超過 1.5 說明碎片較多可以考慮開啟activedefrag yes做在線碎片整理或者在低峰期重啟。第二步找大 keyredis-cli -a 密碼 --bigkeys這個(gè)命令會(huì)掃描全庫并列出每種類型最大的 key。注意它會(huì)遍歷所有鍵在數(shù)據(jù)量大的實(shí)例上會(huì)明顯增加負(fù)載建議在從節(jié)點(diǎn)或者低峰期執(zhí)行。找到大 key 之后單個(gè) key 的內(nèi)存占用可以用MEMORY USAGE user:2001如果確認(rèn)是某個(gè)大 Hash 或者大 List 占了幾百兆刪除時(shí)千萬別用 DEL會(huì)阻塞主線程。改用UNLINK它在后臺(tái)線程異步釋放內(nèi)存UNLINK big:hash:key6.2 變慢的常見原因與排查手法Redis 變慢無非幾個(gè)方向慢命令、大 key 操作、網(wǎng)絡(luò)問題、持久化阻塞。先用慢查詢?nèi)罩径ㄎ籆ONFIG SET slowlog-log-slower-than 10000 SLOWLOG GET 1010000 微秒就是 10 毫秒超過這個(gè)閾值的命令會(huì)被記錄。SLOWLOG GET 返回最近的慢命令包含執(zhí)行時(shí)間、命令內(nèi)容、客戶端地址。常見的慢命令有KEYS *全庫掃描生產(chǎn)禁用、FLUSHALL清庫、大集合的SMEMBERS、大 ZSet 的ZRANGE全量取。這些都在主線程執(zhí)行一次就能把整個(gè)實(shí)例卡住。另一個(gè)隱蔽的原因是持久化。開著 AOF everysec 的情況下如果磁盤 IO 跟不上fsync 會(huì)阻塞寫入??梢酝ㄟ^INFO persistence看aof_delayed_fsync這個(gè)指標(biāo)如果它一直增長說明磁盤扛不住了要么換 SSD要么改配置。6.3 連接與命中率類問題連接數(shù)打滿是很常見的線上故障先用這個(gè)看CLIENT LIST INFO clientsconnected_clients接近maxclients時(shí)新連接會(huì)被拒絕。原因通常是應(yīng)用側(cè)連接池配置過大或者連接沒正確釋放。檢查連接池的maxTotal和maxIdle一般建議單實(shí)例連接池控制在 50 以內(nèi)多個(gè)應(yīng)用實(shí)例加起來別超過 maxclients 的 80%。命中率同樣重要INFO stats看keyspace_hits和keyspace_misses兩者相除就是命中率。低于 80% 就要反思緩存策略了可能是 TTL 太短、緩存的數(shù)據(jù)根本沒人訪問、或者 key 設(shè)計(jì)有問題導(dǎo)致查不到。6.4 排查速查表現(xiàn)象首選命令常見原因處理方式內(nèi)存持續(xù)上漲INFO memory大 key、無 TTL、碎片找大 key、補(bǔ) TTL、開碎片整理響應(yīng)變慢SLOWLOG GET慢命令、大 key 操作替換命令、拆分 key連接被拒INFO clients連接池過大、未釋放調(diào)小池子、查泄漏命中率低INFO statsTTL 過短、key 設(shè)計(jì)差調(diào)整策略、重新設(shè)計(jì)持久化卡頓INFO persistence磁盤 IO 不足換盤、調(diào) fsync 策略數(shù)據(jù)不一致業(yè)務(wù)側(cè)日志雙寫順序錯(cuò)、刪除失敗延遲雙刪、訂閱 binlog一個(gè)容易忽略的點(diǎn)INFO命令在高版本里可以帶 section 參數(shù)比如INFO memory只返回內(nèi)存相關(guān)字段比全量 INFO 快很多。寫監(jiān)控腳本時(shí)用分節(jié)查詢能減少對(duì)主線程的影響。最后分享一個(gè)我在實(shí)際運(yùn)維里養(yǎng)成的小習(xí)慣給每個(gè)業(yè)務(wù)線的 key 加上統(tǒng)一的命名前綴比如order:、user:、cfg:配合SCAN命令按前綴遍歷千萬別用 KEYS。這樣做的好處是排查時(shí)能快速圈定范圍做容量評(píng)估時(shí)也能按業(yè)務(wù)線統(tǒng)計(jì)。我一般是這么掃的redis-cli -a 密碼 --scan --pattern order:* | head -100另外新實(shí)例上線前我都會(huì)跑一輪壓測(cè)用 redis-benchmark 把基線摸清楚redis-benchmark -h 127.0.0.1 -p 6379 -a 密碼 -n 100000 -c 50 -t set,get -q這個(gè)基線數(shù)據(jù)的價(jià)值在于線上出現(xiàn)性能問題時(shí)你有個(gè)對(duì)照系——是整體變慢了還是某類命令變慢了一眼就能判斷。沒有基線的排查基本靠猜有了基線排查效率完全是另一個(gè)層次。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
特级大荫道BBwBBwBBW| 成人片视频| 欧美亚洲美少妇一区二区| 五月天久久人妻| 成人免费看吃奶视频网站| 开心五月深爱五月| 欧美性夜| 久久精品性| 91九九九小逼| 国产兽交视频在线播放| 久久久影院| 加勒比综合九九99视频在线播放| 天天操美美| 十八禁啪啪视频| 九九伊人网| 97久久久久久久久久| 国产成人精品必看| 免费网色网站| 秋霞操逼片| 精品国产少妇高潮视频| 色妺妺AⅤ| 亚卅熟女乱色| 亚洲狠狠入| 久久毛卡| 大香蕉92| 亚洲一区中文字幕一区| 久超碰这里只有精品| 加勒比伊人| 大奶啊啊好爽 | 亚洲偷拍欧美激情| 日本成人A片网站| 蜜臀av一区二区三区免费观看| 清纯唯美综合亚洲| 999狠狠综合| 亚洲欧美洲综合| 亚洲色诱惑| 国产精选视频| 青青草久久一区网| 亚洲啪AⅤ永久无码| 大香伊人在线一区| 亚洲国产综合视频| 久久国产三区| 久久精品午夜国产亚洲AV无码| 福利风月五月天影院| 国产在线能看的你懂的| 亚洲狼狼干综合1| 日韩字幕一区| 国产suv精品一区二六| 免费综合亚洲中文| 久热最新在线杭州| 校园春色综合色| 吖在线不卡一区二区国产剧情| 人人操人人射人人干| 最新日韩黄片| 色欧洲| 99在线免费公开视频| 天天综合网AV91| 欧亚乱色熟女一区二区| 日韩猛交| 成人青青草原伊人| 嗯嗯,啊啊,国产精品| 18禁无码永久免费无限制| 少妇丝袜在线观看AV| 亚洲精品久久久久久久蜜桃臀| 日本不卡在线二区三区| 色淫网站优优视频| 激情终合网| 国产乱伦性爱AV| 日本精品999| 欧美大片天天看| 啪啪啪大香蕉| 污污汅18禁网站在线永久免费观看| 视频黄站| 久久久久斤小| 91黑丝少妇| 强奸乱伦AV网站| 色原狠狠天天天| 影音综合网| www色色色com| 嫖老熟女A片一二三区| 久久久久久久| 国产精品久久久久久夜夜夜夜| 日韩偷拍色图| 午夜精品久久久久久久99蜜桃一| 日韩精品免费高清视频在线| 五十路熟女人妻一区二区三区四区五| 久久国语| 中文字幕乱碼在线| 成人情色一区二区| av一区二区三区 中文| 加勒比伊人| 大茄子熟女AV导航| 超碰到97情色| 熟妇人妻一区二区三在线| 久久麻豆一区二区| 高清无码网址| 伊人天堂在线| 久久欧美按摩999| 天天躁日日躁xxxxx| 久久久97| 亚洲网站一区二区在线| 亚洲欧美日韩中文播放| 欧美亚洲小说| 精品人妻一区二区三区日产乱码| 99re这里只有精品2| 99re6国产精品99re| 青青色综合| 色婷婷五月天| 性吧在线视频| 欧美不卡在线美女| 欧美色图片91| 大吊色| 91肏屄网| 红杏大香蕉| 婷婷五月天补不补| 自拍盗摄一区| 高跟伊人julia ann| av在线人气| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 麻豆精品.欧美精品.日韩精品.| 日韩人妻精品中文字幕| 超碰综合色| 久草资源在线视频官方总站日韩丝袜美腿| 毛片17S| 91在线免费观看处女| 大香蕉操久久| 亚洲中文人妻色| 青青草视频爽一爽| 高凊专区人人操| 91亚洲精品青草| 三级片大波波| 久草精品一区 | 六六久久日韩不卡| 久久精品一区| 日韩操呦呦影院在线观看| 后入式视频国产自| 欧美精品宗合| 亚洲无码免费看| 大香蕉人妻| 国产suv精品一区二区四| 亚洲欧洲无码97久久精品| 超碰碰激情97+久| 91天射| 亚州高清av| 97视频在线观看网站| 97在线视频观看免费| 啊啊啊好大好深| 日韩成人无码| 日韩性爱免费视频在线网站| 一本久道久久综合狠狠爱| 啊好大好舒服| 92久久| 午夜福利无毒不卡| 五月激情综合网| 伊人网在线视频| 人人操人人摸超碰| 操逼网站地址| 91 丝袜在线| 夜夜春夜夜操| 操迟操逼在巾线Fre看| 伊人精品久久网站| 黑人天8A∨高清网站| 韩日自拍| 国产精品99精品视频网站| 自慰白浆在线观看| 免费人人搞97| 精品视频在线观看| 日韩欧美成人大香蕉| 加勒比av网| 少妇被c 黄 免费观看| 日本人人操人人操| 日韩天堂av电影在线观看| 人人九九精| 男人天堂黄片| 亚射在线| 97综合网| 开心激情婷婷| 国产熟女自拍| 成人激情无码在线视频| 97超碰巨乳| 亚洲国产精品无码AV久久| 乱伦系列一区二区| 大乔未久88一区| 国产精品白领在线观看| 校园春色 男人天堂| 亭亭在线资源| 又粗又长又爽在线观看| 日日橹狠狠爱欧美超碰| 国产在线强奸视频| 久久深夜无码| 在线有码中文字幕| 99国产精品久久久久久久成人热| 欧美日韩*字幕一区| 精品丰满人妻一区二区三区免费观| 激情情色五月天| 高清国产成人无码| 日韩欧美三级| 狠狠综合网| 青青草原av| 91强奸乱轮| 夜夜操夜夜高潮夜夜爽国产精品区| 日本色色视频网站| 在线观看A啊啊啊| 国产美女自拍AV| 97欧美精品综合| 亚洲色婷婷久久91| 密臀视频一区二区三区| 亚洲 自拍偷拍 欧美| 日韩99神马视频播放| 麻豆国产97在线| 亚洲 se图 欧美电影| 国产二区三区免费视频| 极品内射| 人摸人人操人| 亚洲中文丝袜美腿诱惑字幕| 狠狠色综合网| 性夜影院爽黄A爽免费动漫| 蜜臀久久99精品久久综合| 国色综合天| 97亚洲综合电影| 国产精品爆乳懂色蜜乳| 精品人妻1237| 高潮的A片激情扒开一区| 91性高| 干日本人少妇午夜寂寞影院| 97就爱干| 人妻熟女一区在| 欧美亚洲综合高清在线| 中文字幕av色| 国产又猛又粗又爽又黄| 九九九九九九免费视频| 99热这里只有精品地址 | 97一区二区蜜臀| 免费AV中文网在线观看| 伊人 俄罗斯 a v| 乱欲一区二区| 欧美亚洲手机在线| 91久久午夜无码鲁丝片久久人妻| 波多野结衣被操50分钟免费视频| 久久九九热| 欧美亚洲日韩人妻在线观看| 性爱Av免费| 干妹子| 99热| 很黄很色的视频在线观看| 欧美 亚洲 第一页| 日本三级A片网站com| 婷婷探花久久精品一区| 久久免费看高潮毛片韩国| 97在线观看播放视频| 超碰这里有精品| 日韩有码免费视频| 超碰97久久| 大香蕉久操| V A在线| 亚洲少妇色图自慰直播| 久久久久久久一级黄色打同平台| 日韩乱伦影音先锋| 天美传媒精品一区二区| 99re综合伊人| 99天天超碰| 大屁股xxxxx| 欧美人黑A片无码免视费| 青青欧美| 亚洲18禁| 大香网站| 隔壁邻居波多野结衣中文字幕 | 天天综合91在线| 天天草夜夜草高潮片| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 欧美日韩国内不卡| ,成人免费啪啪视频| 久久久久久免费电影| 美女啊啊啊啊pc| 一级啊性爱在线视频| 精品人妻中文字幕高清| 9Ⅰ超碰| 日日妻色网| 91 丝袜在线| 丰满人妻一区二区三区四| 日韩亚洲国产视频| 视频国产成人精品日本亚洲18| 9/A片 | 久久亚洲一区女同性恋中文字幕| 久久av色| 口爆综合网| 欧美黄色片AAAAA| 国内偷自视频区视频综合| 久久一区二区三区四区五区| 国语少妇精| 97精品全部| 成人在线午夜视频一区| 久久久不卡区一区二区三区久久久| 婷婷五月成人| 青青草天天亲夜夜操网| 91在线精品| 久久久久久久亚洲Av无码| 日本国产欧美一区三区二区| 久久狠狠色噜噜狠狠狠狠97| 青青草中文字幕| 在线天堂资源亚洲| 操久久久久| 97色综合中文网| 91N综合网| 中文在线视频| 日本熟妇自慰性高潮一区二区三区| 97色色色综合网站| 99日韩| AV综合中文字幕干| 麻豆人妻精品一区二区| 久久人妻视频网| 天天摸,夜夜摸| 亚洲天堂男人在线| 91欧美成人色站| 欧美72网页| 久久夜嗨| 99热在线只有精品| 亚洲欧美日韩激情不卡| 永久免费观看的毛片的网站| 亚洲国产欧美一区二区潘金莲| 国产乱色国产精品免费视| 午夜.DJ高清在线观看免费7| 密乳无码| 激情丁香五月婷婷| 91人妻丝袜无码| 黄色高清久久无码依人| 大干人妻| 日本综合色图| 小视频国产| 黄色在线网站| 色色激情| 青青久操| 天美久久久久| 国产肏逼网站| 亚洲二区精品在线观看| 日韩久久三区| 97精品97久久| 中文视频在线观看| 成人性爱av.com| 日韩女模中文造逼| 四月丁香婷婷| 97超碰色中文字幕| 99久久精品国产系列| 亚洲免费在线探花| 超碰久热| 九九九影院| 美女十八禁| 日韩中文字幕视频| 色99视频| 91天美传媒在线观看| 在线二区不卡| 中文字幕精品日韩中文字幕| 日韩人妻精品久久久久| 941超碰| 欧美高清色| 骚人妻少妇视频| 九九热精品视频六| 91快色色色色色| 小草精彩毛片| 青女偷拍网| 日本狂喷奶水在线播放212| 黑丝少妇在线观看| 国产吹潮女在线观看| 国产99999| 狠狠中文字幕| 国产精品午夜成人福利| 亚洲一区中文字幕| 美国aaaaa一级黄片| 日韩精品区二区三区不卡| 欧美 亚洲 另类 综合| 九久精品| 五月色网| 色婷婷A V一二三四区麻豆综合| 一区二区三区免费视频入口| 99热超碰| 射久久| 99精品在线| 超碰9 7女人| 无套内射人妻在线播放| 久久25| 国产午夜视频| 国产1024在线播放| 伊人97色天使| 黄色免费一级在线毛片| 精品久久青青草| 黑丝制服中文字幕 | 96国产精品| 国产亚洲日韩在线三区黑人| 尤物av网站| 97欧美综合| 2020视频1区2区3区| 亚洲在线综合| 亚洲精品久久久久久久蜜桃臀| 久操在97| www.久久最新地址| 国产精品色| 中日韩久久久| 天美传媒av在线| 中文色综合| 国产久久一区二区三区野外在线| 国产精品又黄又猛又粗| 夜夜狼人妻| 国产品精品自在在线午夜免费| 五月天激情网图片| 色与欲影视| 999久久久久久久精| 国产熟女精品一区二区| 成人影 天天操 亚洲| 啪啪综合网| 亚洲成人久久一区二区| 国产女人9999| 青青草天天亲夜夜操网| 综合色91| 丁香婷婷激情五月天无毒不卡 | 日韩无码一区二区三区| 亚洲中文人妻色| 韩国手机不卡无码三级视频| 高清肉丝中文无码| 国产亚洲综合欧美一区| 区二区亚洲婷| 91操熟女视频| 男人的天堂2010| 亚洲成人激情小说视频| 粉嫩小泬久久久一区二区| 肉嘟嘟www视频在线观看高清| 久久国模av| 凸凹视频在线观看| 老熟女91| 少妇蹲下买菜露大唇0| 性吧在线视频| 最新三级网址| 中文字幕第2页| 色91综合网| 天天干人妇| 伊人操| 婷婷综合| 神马久久久久久| 青青草啪啪网| 欧美激情综合色综合啪啪五月| av网站在线看| 日产欧美电影一区二区三区| 碰碰97| 超碰AV在线| 伊人热综合| 国产精品国产自产拍高清AV| 操逼1区| 78m成人视线| 97色诱| 中文字幕99999| 香蕉色网| 人人污日韩一区二区| 日韩乱伦视频| a片 xxxx受爽视频| 久久老熟女| 亚洲区限制级| 中文字幕版| 五月综合久久| 国产懂色精品国产av| 欧美一二三级精品在线| 午夜一区| 男人天堂最新手机版在线青青草| 色色综合网站| 国产午夜精品理论片a大结局| 天美传媒av一区二区| 欧美亚州手机在线| 欧美v亚洲v日韩v最新在线二区| 亚洲97成人在线观看| 久久久性爱| 不卡一区视频| 麻豆精品A片免费观看| 亚洲男人bt天堂| 欧美性爱无码一区二区三区| 久久婷婷色| a亚洲欧美色欲| 伊人网在线观看| 麻豆60秒| 丁香五月影院| 97碰在线视频| 综合色啪| 久久东京国产精品视频| 国产偷拍自拍在线视频| 强奸乱伦免费网站| 欧洲欧美视频一区二区| 永久电影三级在线观看| 91美女视频| 人妻激情在线视频| 无码伊人久久大杳蕉中文无码| 久久男人精品| 天天激情干| 岛国A V在线免费看| 欧美在线91| 国产精品电影大全| 亚洲天堂久久久久久粉红视频| 久久东京热久久| 九九色色| 毛片视频白嫩| 91色黑人少妇| 久肏视频字幕| 五月婷丁香| 国产精品成人无码av| 久久久无码av精| 一级黄色性爱A级片| 无码高清国产AV| 在线国产福利网址导航| 最新的亚洲无吗| 九月丁香综合网| 人人妻人射| 亚洲综合电影| 午夜视频久久久久一区| 思思热久久成人| 人摸人人操人| 婬女免费一二三区A片| 人妻22p| 美女诱惑爱爱| 五十路二区在线 | 成年人黄色小视频网站| 国产网站在线播放| www久久精品| 久久久久13| 日本在线不卡v二区| 蜜乳AV色欲AVAV无码| 激情综合婷婷| 欧美性暴力猛交XXXX | 色五月婷婷麻豆在| 国产白嫩精品久久| 日产123区精品免费观看| 亚洲第二页| 97干在线| 人妻少妇久久中文字幕一区二区 麻豆| 国产精品电| 九热中文字幕| 中文字幕一区二区日韩网| 99久久精品无码一区二区| 噜噜在线| 亚洲国产丝袜在线观看| 91精品人妻一品二品三品| 青青草国产欧美非洲黑人| 欧美人人曰人人操人人射射| 91性高潮久久久久久久久| 超碰97起碰| 亚洲 另类 丝袜 自拍 动漫| 国产18精品亚洲精品| 欧美92| 久久久性| 九九热视频在线观看| 欧亚第一综合网| 风间由美日韩欧美久久| 国产乱伦性爱区| 熟妇在线视频一区二区| 2017天天透天天通天天擦| 天天干嫩逼网| 国产精品极品美女视频| 久操大香蕉手机视频在线看 | 睡产熟女乱伦| 99热在线不卡| 久久啊啊| 亚洲砖码砖专无区2023| 国产丝袜美女诱惑| 黑丝制服中文字幕 | 狠狠爱夜夜| 人人操人人大香蕉| 欧美视频第二页| 中文字幕一区二区视频在线观看| 成人黑料社久久| 久久久不卡区一区二区三区久久久| 漂亮人妻被强中文字幕hd| 91午夜无码| 亚洲国产综合久久天堂| 91中文字幕制服丝袜免费视频| 国产精品美女在线一区| 91挑色欧美| 亚洲自拍偷拍视频在线| 午夜免费视频1000| 四虎免费在线播放| 久久草在线综合视频| 天天干天天日天天射黄色片| 偷拍亚洲情色| 国产精品色片一区二区| 亚洲精品1区| 成人精品在线免费视频| 国产精品老熟女一区二区| 99精品综合久久久久五月天| 日韩国产乱子伦App| 97资源欧美| 熟女激情综合网| 无码91| 亚洲色婷婷久久久综合日本| 丰满人妻一区二区三区在线| 中文字幕97| 日本三级韩三级99久久| 中文字幕视频二区| 夜夜嗨一区二区| 亚洲综合在线91| 色色婷| 亚洲丝袜在线观看| 无码免费一区二区三区啪啪| 99re6在线视频播放免费精品| 亚洲精品日韩国产欧美| 青青青青青手机视频| 丁香色色网| 亚欧洲日韩国产精品| 久久婷婷热| 高潮精品| 亚洲人妻熟妇三十三区| 国产黄色影片在线观看| 乱色老一区二区三区的观看方式 | 久思思热视频在线观看| 欧美91网站| 午夜电影在线观看无码专区| 78m啪啪啪| 91色艳| 1769国内精品视频| 啊啊啊久久久视频| 激情小说五月天| 综合久久少妇中文字幕| 日日夜夜草草草| 欧美日本一区二区a人| 欧美,日韩,中文,另类| av中文在线| 乱伦熟女论坛| 日本天天干天天日一区| 亚洲无码色| 国内偷拍精品一区二区| 欧美综合 站| 国产伦精品一区二区三区在线观| 精品国产乱码久久久久久网站入口| 久久久久久久久久久97| 伊人黄色视频免费观看| 97在线免费看视频| 97日视频| 六月丁香啪啪| 色色色色日本| 中文字幕在线免费观看 | 玖玖视频在线资源一区二区三区| 内射老妇BBWX0C0CK| 亚洲高清在线se| 粉嫩国产精品久久粉嫩| 无码WWW免费视频网站| 九九九九热只有精品| 嗯……啊…嗯嗯…啊…好舒服| 久久国产逼| 夜夜骑日日| 夜夜操天天肏| 国内精品伊人久久久久影院会| 国产毛片片精品天天看视频 | 中文字幕av亚洲在线| 熟女久久久| 国产美女高潮叫床视频| 久久综合av| 欧美亚洲首页| 乱伦Av网| 日夜尻逼网| 日本黄大片在线观看视频| 蜜桃精品一区二区三区久在线| 物业黑人 AV一区| 囯产精品久久久久久久久久二区三区| 91欧美美女日韩国产婷婷| a在线视频免费观看| 老熟女91视频| 人妻少妇久久中文| 亚洲综合影视| 99re视频在线观看这里只有精品| 亚洲成人一区二区精品| 久久婷婷电影网| 亚洲双插| 色香综合天天影视综合 | 精品人妻1区| 亚洲中文字幕熟女少妇一区二区| 国产精品毛片| 亚州色图欧美| 伊人青青一区成人视频在线观看区| 九九香蕉网| 亚洲色图日韩精品| 欧美性爱免费短视频| 欧美一区二区男人天堂| 97精品视频| 男人天堂新在线| 欧美综合亚洲| 精品国产乱码久久久影院| 熟女精品一区二区在线观看| 天天综合网1| 欧美韩国你懂得在线| av大香蕉网站| 欧美一区二区在线资源| 日韩pv中文| 久悠悠av| 九九九网页| 91色碰| 国产精品久久久视频| 亚洲人成网www| 六月丁香网| 98一区二区精品| 久久婷婷色综合一区二区三区| 人人操AV| 久久激情网| 欧美一级三级| 日韩性爱视频免费在线| 激情久久久| 国产超碰| 国产精品电影| 91亚洲不卡一区| 色狠人在线99| 久久日本熟女精品一区| 无卡一区=区| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 91看黄片| 国产黄片精品在线| 网页导航五月天免费一二三区| 精品人人插人人操| 久久综合九九| 日本天堂网| 久久偷偷色综合蜜桃| 老女人91| av2014 日韩在线中文字幕| 欧美性爱一区二区| 欧美日韩黄片精品在线| 日韩色| 久热9| 激情久久久| 日韩一区二区熟女| 九九热精彩视频| 欧美色老汉| 国内亚洲高清无码| 亚洲精品xxx| 色99视频| www.av在线观看| 免费超碰97在线观看| 天天操天天舔| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 人妻 欧美 中文| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 日韩精品一二三| 凹凸视频在线一区二区| 日韩国产乱子伦App| 夜夜操天| 60秒免费视频| 国产馆| 亚洲精品人妻在线| 欧美综合自拍成人自拍第二十页| 大香网伊人久久综合网eew| 九久久精| 丰满人妻一区二区三区四区| 亚洲成人免费电影| 欧美色综合图片| 美女诱惑久久| 激情网色| 亚洲日韩青青草色月| 久久伦理视频久久大香蕉视频| 黄总AV色图| 精品午夜福利| 黄色一级视| 超碰色中文| 欧美色图综合网| 亚洲一卡2卡3卡4卡乱码网站 | 成人蜜乳小视频网站| 久久婷婷五月综合| 午夜AV污污污| 91看黄片| 嗯嗯嗯啊啊啊在线免费观看| 日本高清一本二本免费不卡| av一区二区三区不卡| 中文字幕五区| 夜夜嗨TV| 3P乱轮视频| 中文字幕-区二区三区四区视频中国 | 日本一级一级一级一级| 日本黄色天堂| 国产亚洲精品激情| 欧美亚洲第1页| 日本淫乱女一区二区三区视频| 日欧操屄视频| 欧美日韩人妻少妇 一区二区三区| 无码人妻精品一区二区三区99不卡| 色区久久| 欧美日韩亚洲少妇寂寞影院正在播放 | 久热伊人| 国产精品久久久午夜夜伦鲁鲁| 在线无码网站| 嗯嗯啊啊好大好爽| 在线综合 亚洲 欧美中文字幕| 嗯嗯嗯啊啊啊在线免费观看| 免费视频97| 婷婷性爱| 欧美丝袜中文字幕07在线| 日韩性爱网址| 色天使AV天堂| 人妻中文字幕日韩电影| 十八禁电影伊人网| 日韩成人性爱AV| 91路www| 福利伊人玖玖国产| 97亚洲精品超碰| 国产精品三级视频网站| 偷拍新久久| 九色在线熟女国产黑人| 98福利在线视频| 五月综合婷婷久久网站| 久久久少妇诱惑精品视频| 秋霞一级鲁丝片A片| 人人爽夜夜操| 久久国产熟女影院| 欧美一二三区四五区| 另类TS人妖一区二区三区| 中文字幕av久久爽Av| 99婷婷一区二区| 亚洲免费97免费| 久久无码成人| 日韩在线观看AV| 天天做天天爱天天爽| 天天综合-91入口| 亚洲天堂另类小说男人| 国产精品亚洲色婷婷久久久| 一区 欧美 日韩 麻豆| 天天操天天射天天日| 天天操天天日天天干| 欧美日韩中文亚洲v在线综合| 亚洲中文字幕av | 久久av一级av少妇av高潮| 久久久久久久9最新免费视频观看| 中文字幕日本久久| 亚洲毛片久久| 国产视频一区二区三区久久亚洲天堂 | 欧美日韩婷婷中文| 高跟丝袜AV专区国产| 欧美日韩精品久久久久久久久东北老熟妇| 狠狠狠一区二区三区| 在线日韩精品一区二区三区| 亚洲精品一区二区免费在线观看| 欧美日韩岛国大片在线观看| 97这里有精品| 97日视频| 大香蕉综合在线| 丰满精品人妻少妇久久字幕| 曰韩精品视频一区二区| 久草线上视频免费看| 91丝袜美女国产| 曰本人妻人人澡人人夹| 嗯嗯不要 视频| av婷婷色网| 国产欧美日韩在线不卡第一页| 999久久久| 18禁久久| 人妻无码后入| 91九色在线| 国产亚洲精品精AV.| 婷婷九月丁香| 一区二区 日韩 欧美 国产 传媒| 精品少妇一区二区三区在线视频| 国产 日韩,欧美 自拍| 97丝袜亚洲在线播放| 男人天堂久久精品| 无码WWW免费视频网站| 超碰97人妻| 天天在线91| 国产AV天美| 日韩一级二级| 日韩一级成人毛片免费观看| 免费人成毛片乱码| 中文字幕视频二区| 91n免费处女| 日本一区99| 另类图片五月天| 国产综合网站在线播放| 国产高清吃奶免费视频网站| 欧美性性性| 91欧洲国产成人久久精品网站| 少妇高潮流水av免费| 国产白丝网站| 蜜臀亚洲综合一二三四区| 欧美欲色| 中亚av| 发朗少妇买婬全视频中文| 国产福利小视频高清在线观看| 日韩熟女三十乱伦| 色欧洲| 91制服丝袜| 91九九九逼| 青青操在线亚洲视频观看欧美在线| 国产精品成人在线| 熟妇操花| 最新中文字幕精品在线| 欧美五十路熟| 中文字幕人成乱码熟女香港| 久久国产乱子伦精品免费女,网站| 玖玖资源视频一区二区三区| 国产精品不卡一区二区三区| 日本午夜福利视频| 精品人妻一区二区三区-国产| 婷婷综合久久| 蜜乳AV网址| 日本性爱少妇| 欧美日韩性爱无码| 黄色免费网页无码| 熟女色综合久久| 亚洲自拍天堂| 无码日韩人妻av一| 国产网红精品| 屁屁影院一区二区三区国产| 日韩一性一交一A片俄罗斯 | 久久精品店| 欧美亚洲影视| 欧美另类自拍| 亚洲综合九| 热的中文 热的有码 热的国产| 九九九九免费视频| 人人摸人人舔一区二区| 国产人人干| 亚洲色图片区| 亚洲色图A| 国产亚洲色婷婷久久99精品91 - 百度| 欧美懂色综合网| 精品视频在线观看| {男男暴菊gay无套网站| 亚洲乱色熟女一区| 国产精品视频一区二区三区八戒| AA特级绝黄| 嫖老熟女A片一二三区| 成人看片网站| 日韩啪啪啪啪啪| 色噜噜国产在线| 一区二区三区免费视频入口| 日韩AV一区二区三区四四| 凹凸久久人人| 91粉嫩萝控精品福利网站_精品影音先锋国| 四虎永久在线精品免费网址| 国产无马视频| 日日夜夜干| 九九热久久99精品re| 女人与公拘交酡2020视频| 久久精品国产AV一区二区三区| 欧美高清18A片| 激情啪啪拍91| 亚洲欧美91√| 91爽啪| 尤物一级在线免费观看| 久久春色| 啊啊啊水好多| 97这里只精品| 精品伊人久久久大香线蕉小说| 男人的天堂一区| 欧美 牲| 一区黄二区黄| 免费a在线播放v| 激情无码日韩| 91精品老女人| 九九九九精品视频| 国产情色在线| 国产亚洲精品美女| 亚洲色图 欧美热图 清纯唯美 另类自拍| 激情小说成人日本无码一| 自拍偷拍 日韩欧美| 亚洲 图片 综合91| 久久精品天美| 欧美综合第一页| 性爱动态120秒| 国产又大又硬又长又粗| 好看的91视频| 92一区二区| 色婷五月| 网友自拍第一页| 欧美色偷拍 | 日本欧美国内在线| 后入人妻一区| 久热这里| 亚洲精品无码成人久久久99| 亚洲色图大香| 亚洲欧美国产精品久久久久久久| 绯色一区二区三区不卡少妇| 天天色播亚洲综合网站| 亚洲情色在线| 亚洲综合20p| 婷婷亚洲综合| 精国久久一区二区三区98| 69XX一中文字幕人妻91| 91五月天| 后入精品| 久热香蕉精品在线视频| 啊好大好舒服| 亚州男人天堂| 色狠狠色| 亚洲欧美国产精品久久久久久久| 一区二区三区黄色片a| 久久超碰、| 俄罗斯及免费在线看| 蜜臀少妇一区二区| 欧美人妖内射| 亚洲AV无码AV吞精久久久久| 99国产在线绯色一区| 性猛交| 亚洲成人av色网| 少妇精品| 五月婷婷久久综合| 亚洲AV在线资源| 国产熟女完整版中字| 双插在线| 免费的黄片有限公司| 久久久久性熟视频| 97操综合| 欧美亚洲中文字幕| 综合天天。| 无套内射性感少妇视频| 黄色一区三区| 久久男女激情视频网站| 屁股久久久久久久久| 一本一道vs波多野结衣| 91丨精品丨国产丨丝袜| 你想操日本小逼吗| 精吧天堂| 国产亚洲精品自在线亚洲情侣| 婷婷久草| 国产 v乱码一区二| 日韩成人人妻网站| 国产成人无码啪| 久久人妻少妇| 性爱乱伦一区| 国产精品农村妇女精品| 男男H黄动漫啪啪无遮挡网站| 青青草国产一区二区三区| 日韩性爱再线视频| 大香交| 大香网伊人久久综合| 国产91 丝袜在线播放 | 女人喷水视频在线观看| 亚洲偷拍欧美激情| 超碰人妻在线| 好爽视频在线观看视频| 日韩精品人妻系列无码天堂| 日本国产亚洲一区在线观看| 91久久堂| 五月丁香社区婷婷日韩欧美精品影院 | 色综合尤物| 亚洲色宗合| 欧美中文字幕一区 | 国产一二三在线视频五十路| 亚洲中文字幕有码视频一区二区三区| 国语av狠狠色丁香婷婷综合激情| 操B久久| 在线无码操| 大香蕉淫人网| 熟女色图在线| 熟女六十路| 九九亚洲| 色九九九综合| WWW黄片COM| 国产后入| 日韩欧美中文字| 天天干一干| 亚洲欧美色图小说| 97久久国产精品| 熟女精品一区二区三区| 欧美日韩另类在线| 亚洲图片偷拍欧美| 九九久久首页| 夜嗨影院| 国产在线能看的你懂的| 久久久久久久9最新免费视频观看| 农村妇女一级二级三级视频| 国产成人 综合亚洲 天堂| 国产精品69久久久久久久| 久久日韩毛| 午夜久久无码1000合集| 亚洲激情视频| 韩国三级三级BD在线| 欧美日韩国产色图在线| 日韩情色一区二区| 2017大香蕉国产精品久久| 强免费黄色网址| 人人操 欧美| 上床啊啊啊| 男人天堂综合| 1024亚洲中文字幕久在线看片你懂的 | 在线亚洲丝袜视频网站| 日本曲间由美性生活片| 天天视频综合在线观看视频| 中国AAAAAA黄色片| 欧亚 另类 久| 天综合网欧美| 欧美日韩222| 东京热亚洲一区二区| 国产91精品福利在线| 91被操| 日本久久超碰| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 色拍偷亚洲| 中文在线久久字幕| 污啪啪啪视频| 久久亚洲av成人无码国产| 日本黄色大片一级视频免费麻豆| 偷拍综合网| 婷婷激情丁香| 亚洲骚男同com| 乱久久久| 秋霞一区二区三区四区五区六区七区| 欧美色图天堂在线| 婷婷性爱| 久久‘黄片视频| 乱欲一区二区| av强奸乱轮| 操日韩第| 亚洲精品一区二区精品| 大学生美女口爆| 人妻丝袜一区二区三区在线| 国产久9| 91插B网站| 国产丸一视频| 学生妹天天看| 久久久久78| 人妻少妇精品久久久| yiren97| 久久久性爱视频| 人妻无码后入| 久久久久久91香蕉国产| 亚洲丁香花色| 夂久色| 1956日韩精品| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 91老熟女老女人国产老太| 久久久国产精品人妻丝袜| av亚洲天堂资源网站| 一区二区三区日韩欧美| 色爱欲亚洲| 久久久av爱| 和协影院中文字幕三区| 国产乱人妻精品入口| 99精品高潮| 天天干1区2区在线| 国产精品伦理| 中文字幕一区二区三区50路| 78超碰| 日欧操屄| 日韩欧美成人午夜福利| 国产精品制服丝袜清纯唯美| 国产不卡免费在线视频| 操屄不卡视频| 五月婷久久| 操少妇很爽av| 黑操B| 99精品网站| 熟女久久久| 五月天久久人妻| 国产亚洲色婷婷久久99精品91 - 百度| 精品无码久久久久久久久果冻糖心| 午夜福利国产欧美日韩夜夜| 在线岛| 日韩在线观看中文字幕视频| 久久露脸国产老熟女| 九九精品美女高溯喷水| 日欧毛片久久| 97在线播放| 秋霞网无码| 国产欧美日韩一区二区三区| 秋霞欧美性爰视频| 青青网三级视频| 久久久国产精品人妻丝袜| 91国产精品熟女| 亚洲无码久久久久久久| 啊视频在线| 欧美狠狠弄| 超碰午夜| 精品78|