日韩精品一区二区三区在线视频放-无码中文字幕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è)緩存這么簡單而是一套需要認(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 和連接池爭搶因?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é)分工我的劃分原則很簡單數(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è)連接。這帶來的好處非常直接不需要加鎖不存在競態(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 并不是簡單地 malloc 一塊內(nèi)存而是用 SDS簡單動(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)生成一份精簡的命令集。實(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è)做簡單的任務(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簡單隊(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í)屬于正常現(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ī)偏移量是最簡單有效的做法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
返回資訊列表
日本精品免费一区二区三区四区| 无码人妻一区二区三区四区老鸭窝| 老女人碰碰在线碰碰视频| 黑丝日韩av丝袜av| 久久久久久久久国产| 欧美 日韩第一性色| 区自美91| 中文字幕欧美日韩三级| 国产日韩精品人妻久久久久色欲网站| 免费的黄片wwwwww| 性欧美天天| 日韩精品一区,二区 九九...老司机| 久久9免费视频| 啊v在线观看视频| 日本操逼无码| 人人射人人操人人摸| 婷婷丁香六月天| 亚洲色图加勒比| 亚洲精品骚逼| 操东北女人| 乱伦1色页| 久久亚洲不卡| 婷婷五月天无码| 欧美天天综合在线| 92人人操人人| 亚洲男人的天堂V| 中文字幕乱偷人妻久久艾草网| 亚洲综合草草| 爱爱动态试试看6 0秒| 久湿久久| 天天色天天干天天射| 日韩有码免费视频| 亚州国产成人精品女人久久 | 麻豆国产97在线| 天天躁日日躁xxxxx| 懂色AV一区二区三区| 欧美青青视频| 无遮挡男女激烈动态图| 九九精品热| 屌妞视频久久久久久久久久久久| 四季AV综合网址| 欧美一二三| 无码九九九九| 天天懆天天日| 亚州操操穴网| 超碰超碰超碰超碰的大鸡吧操黑丝袜| 岛国AB视频| 超AV色女| 老司机香蕉久久久久| 国产熟女完整版中字 | 欧洲亚洲人妻无码高清久久三区四区| 日韩性爱1级片视频| 长长久久曰曰夜夜成人网| 天综合网欧美| 操逼免费视频无码国产| 很很很很操| а√天堂资源官网在线资源| 猛交交| 97超级色碰碰| 国产精品麻豆免费视频| 蜜伊人色综合97| 美女91| 国产三级日产三级韩国三级| 五十路二区在线| 热思思免费视频| 久久久A∨| 97精品一区二区三区免费| 秋霞一级视频在线观看免费| 欧美性色综合网| 狠狠超| 五月婷婷综合在线| 天天综合网在线91| 99自拍视频在线| 欧美国产操逼| 97超级色碰碰| 狠狠色噜噜狠狠狠狠狠色综合久久| 欧美亚州手机在线| 蜜臀中文字幕| 久久久久13| 欧美同性恋 的搜索结果 - 91n| ..日韩av毛片精品久久久| 99re69综合| 五月天我淫我色av| 国产精品肉丝自拍| 高清有码一区二区| 日本免费不卡二区| 内射夫妻三片| 久久久久亚洲精品| 日本成人A片免费看| 欧美A√综合网 | 婷婷五月天激情四射| 草莓精品视频| 国产精品午夜福利| 乱伦熟女区| 大香蕉92| 91Chinese在线| 欧美激情一| 极品尤物在线观看| 大香久久| 日本淫色网| 日本不卡一区| 劲爆欧美人妖三区91| 狠狠操夜夜| 国产蜜臀精品一区二区尤物| 丰满欧美少妇| 浓厚中出中文字幕在线| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 校园春色亚洲无码| 在线国产一区二区av| 国产av色网| 欧美性生活综合| 久久一区二区三区四区五区| 亚州色图狠狠干| 人人 操人人 操人人| m欧洲一级午老| 日韩一级特黄av毛片| 婷婷色网| 久久精品国产72国产精品福利| 国产日韩中文字幕欧美| 欧美久久九九| 日韩操逼性鲍| 91A欧美电影网站| 欧美毛片在线网| A一区片| 91N综合在线| 欧美一级国产一级| 欧亚 另类 久| 9超碰免费| 国产黄色在线播放观看| 久久中文字幕在线观看| 91jk色拍| 精品国产肉丝袜在线拍国语| 欧美在线啊啊| www.男人天堂| 25国产精品免费观看| 国产精品成久久久久午夜午夜| 大香蕉欧美国产日韩高潮| 欧美日韩中文亚洲v在线综合| 伦理第一页| 99热精品国产| 国内自拍 日韩激情 99| 亚洲一区日韩精品中文字幕| 91国产丝袜美女| 精品一区二区啪啪啪| 激情小说亚洲| 蜜臀在线看片| 亚洲。日韩。欧美| 久久久久国产精品片区无码直播| 日韩啊V| 伊人久久大香蕉线AV五月天| 九九aV| 无码人妻一区二区三区色欲aⅴ | 无码精品人妻一区二区三区妖精 | 欧美韩国你懂得在线 | 嗯嗯啊中文字幕| 欧美性爱91| 色777999综合| 97精品视频免费| 国产激情久久久| 岛国片在线视频网站| 国产精品3| 精品妇女一区二区三区| 久热香蕉精品在线视频| 久久国产在线一区二区| 黑人性暴力毛片| 色www精品视频在线观看| 欧美国产日韩清纯唯美| 韩日无码在线观看| 一级片视频啪啪| 精品人妻一区二区三区四区| 老女人碰碰在线碰碰视频| 欧美黄片视频在线观看免费 | 色女女女导航| 欧美色五月| 18禁网站在线播放| 影视综合无码少妇| 欧美高清18A片| 骚货操死你| 美女诱惑在线一区| 内射黑人| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 五月婷亚洲精品天堂| 亚洲熟妇综合久久久久久| 日本一二三高清| 天天干美少妇一区| 精品超碰中文在线| 狠狠综合| 婷婷五月天基地| 无码最新| 国产精品美女在线一区| 日日摸天天爽夜夜欢| 亚洲,欧美,综合网| 蜜区区视频79| 综合欧美色图| 久草电影网| 狠狠躁日日躁夜夜躁A| 国产精品 午夜福利| 亚州色交| 亚洲少妇喷视频看| 国产999精品久久久久久| 成人片在线播放| 强免费黄色网址| 国产精品久久久无码AV网站| 免费观看的黄色的网站| 亚乱色| 在线A日本| 一区二区三区亚洲| 亚洲天堂AV在线播放| 久久黄片国产一区二区| 国模私拍一区二区三区神乳| 一级岛国大片| 不卡av在线中文字幕| 18禁无码永久免费无限制| 天天看天天日天天操| 天天爽天天操啊啊啊| 久热热| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 中文字幕艹艹| 蜜臀AV成人精品蜜臀AV久久| 1204av韩国| 中文字幕少妇色| 欧美国产视频| 天天看特黄的免费网站| 十八禁电影伊人网| 97超碰9| 91东北熟女| 天天综合网日韩| 免费试看60秒| 激情 欧美 亚洲 小说| 两女互慰AV高潮喷水在线观看| 欧美激情性爱视频网站| 国产剧情AV不卡在线观看| 午夜福利视频在线一区| 极品五月天噜噜| xxx亚洲午夜天堂| 欧美少妇第一页| 欧美激情视频一区二区三区不卡| 日本美女性生活久久久久久久| 婷婷三区| 国产精品久久久九九九| 一本色道人妻久久| 欧亚无码视频| 黄色一区二区秘书性感| 9久久精品| 无码抄逼网| 青青操青娱乐| 91成人社区| 热久久无毒不卡| 一区二区三区麻豆| 操逼天美3区| 欧美成人黄网色网站| 久久精品国产72国产精品福利| 久久9精品| 亚洲国产一级黄色视频| 免费看A片毛毛片在线播| 97人妻碰碰中文无码久热丝袜| 屌色在线97视频| 日日黄色三级网站| 深夜国产福利| 国产精品毛片?v一区二区三区| 熟女人妇一区二区三区| 女人天堂AV五区在线| 人妻天天爽夜夜爽爽| 日韩图区| 丰满人妻一区二区三区四区| 啪啪啪精品| 日本在线播放不卡一区| 天美欧美国产| 久久精品电影在线| 国产野战露脸在线播放| 大香蕉五月天婷婷| http://qxhbdz.com| 99蜜桃臀亚洲成人在线观看| 日日爱99| 天天操天天射天天日| 看一级黄色视频| 日产国产精品中文久久婷婷| 日本高清一本二本免费不卡| 91熟女综合| 精品久久久av| 偷拍自拍在线视频观看| 国产亚洲精品av一区| 天天肏夜夜肏| 澳门黄片一香蕉视频| 国产偷拍自拍在线视频| 97人人爱人人做人人乐| 水滴偷拍| 影音先锋中文字幕日本好一区二区| 五月丁香六月婷| 欧美亚州综合图片| 网站A V在线| 中日亚韩免费视频| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 国产一区二区精品在线视频| 亚洲性天堂| 性开放中文AV高清无码免费看| 日韩偷拍色图| 骚货 中文字幕 av| 国产日韩色综合| 野狼激情网| A男人的天堂| 热思思免费视频| 先锋精品av色鲁| 国产精品第一页国产大屁股视频免费区i| 国内外内射高清视频| 国产精品自产拍在线观看社区| 高树玛利亚无码流出| 热热色中文无码| 色欲日韩欧美在线一区| 啊啊啊啊啊啊啊网址在线观看| 高清有码一区二区| 国产又粗又又黄又猛| 四虎精品一区| 人妻啪| 亚洲熟女国产综合另类| 99999re| 女人爽到高潮潮喷18禁网站| 欧美丝袜美女电影一二三四区| 午夜人人操| 91精品成人www| 懂色AV一区二区三区| 97超碰国产亚洲精品| A片大香蕉在线| 九九九九88| 中文字幕乱亚洲美女精品一区| 五月天激情影院| 美国三级日本三级久久99| 国产后入| 啪啪视频mP4| 国内伊人久久久久久网站视频| 欧美性生活综合| 2003天天干夜夜操| 乱论91| 大香蕉欧美国产日韩高潮| 边做饭边操逼逼| 中文字幕在线观看第二页| 久久久96| 白丝1区2区3区| 翔田千里A片一区二区| av在线人气| 精品视频在线观看精品| 青青草吊丝| 色在线视频导航| 亚洲有码 视频一区| 黄在线| 一级黄色性爱A级片| 99精品网站| 在线观看免费视频国产| 96久久久精品| 国产黄色av大片网站| 日韩一级二级在线| 岛国福利在线精品播放| 欧美 亚洲 另类 综合| 一级性爱啪啪视频| 欧美性综合| 亚洲午夜福利在线影院| 九七超碰人人乐| 日韩在线观看中文字幕视频| 亚洲三级。日韩三级| 99九九精品| 欧美偷拍| 麻豆人妻少妇在线免费观看| 中国一级特黄大片护士| 久久是精品| 麻豆国产免费影片| 超碰97人妻在线| 亚洲aw毛茸茸在线| 成年女人黄网站| 超碰97.com| 夜夜爽爽爽| 2024年最新色情网站在线观看| 在线观看十八禁| 麻豆国产视频精品观看| 乱操9999| 亚洲青青青视频在线| 国产丝袜美女在线一区| 欧美日韩97在线| 99精品久久| 色五月AV| 91美女国产在线| 久久精视频美日韩在线视频| 亚洲丝袜综合| 性交一区二区在线播放| 黑操B| 99re免费视频精品全部| 亚洲中文字幕av| 强上我不卡卡| 成人精品无码| 射欧美综合| 国模精品娜娜一二三区| 日本一区二区亚洲综合| 亚洲极品| 超碰 97国产熟女| 午夜福利视频在线一区| 秋霞午夜成人福利片片| 俺也射| 青娱乐亚洲热| 欧美一区二区观看在线| 少妇被c 黄 免费观看| 91超碰碰在线| 男人兔费天堂| 精品一区二区综合熟妇| 日韩91网| 亚洲人91| 欧美人妻久久精品二区三区 | 美女91网站| 久湿久久| 亚洲人在线| 啪啪视频亚洲第一| 99无码狠狠久久| 九九九九九九九九九九精品视频| 色色综合网站| 2019天天干天天操| a片久久久久久久久久久久 | 1024手机看片欧美日韩| 一区二区激情国产熟女| 欧美视频一区二区在线| 国产精品盗摄 偷窥盗摄| 欧亚三区动漫| 亚洲综合校园春色| 久久久穴999| av天堂5| 国产欧美日本亚洲精品| 天天看片青娱乐| 九九九九九九免费视频| 中出789在线视频| 日韩pv中文| 欧美黄色大香蕉一区二区| 手机看片日韩人妻| 校园春色综合网| 久久人妻一区二区三区高清| 久久爽爽精品| 精品国产污一区二区三区| 另类天堂| 国产精品久久久久久久黄无码| 国产强奸无码乱伦| 九九九九九精品| 1204金沙人妻懂旧版免费| 伊人久久88国产女| 国产福利第一视频| 无码抄逼网| 亚洲第一狼人丝袜美女另类| 中国一级特黄大片护士| 另类小说综合网| 亚洲无992tv| 神马久久久久久久| 久久人妻熟女一区二区| 亚洲女优有码无码高清| 天天操天天干美女网址导航| 人妻少妇久久| 中文字幕无码不卡啪啪| 伊人991| 美女91在线观看| 美骚妇av高清在线| 丁香五月大香蕉| 成年人一级黄色毛片大全在线观看| 精品国产丝袜一区二区三区乱码| 中文日本免费高清| 天天综合网日韩7799| 亚洲欧美日韩免费电影| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 园内精品自拍视频在线播放| 国产一区二区三区白丝| 老熟妇一区二区三区…| 强奸乱伦av电影| 99re国产精品视频| 99re免费视频精品全部| 91精品国产日韩欧美综合| 欧美A片中文字幕| 国产人妖的免费的视频| 上海一级黄片| 亚洲制服欧美另类内射| 果冻国产精品麻豆成人av| 日韩欧美字幕亚洲一区二区| 欧美亚洲中文字幕| 五月天激情国产综合婷婷婷| 思思99热| 日本三级人妻a人妻一在线| 看黑人AV不卡| 亚洲黄a三级三级三级看三级| 久草资源欧美在线视频| 啊啊啊啊好大好硬啊啊啊啊啊| 男人的天堂日韩| 69久久| 丰满人妻一区二区三区免费| 成人线上超碰| 日本1区2区不卡视频| 久久国产热视频97电影| 国产小视频91| 日产狠狠干| 欧美国产日韩清纯唯美| 欧洲免费一区二| 亚洲视频一二区| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 国产精品天干天干综合网麻豆 | 久久亚洲AV无码白度| 精品无码欧美三级| 370p日韩欧美亚洲精品| 亚洲色图欧美视频| 中文字幕老熟妇黄色视频| 国产精品老熟女一区二区| 国产一区二区三区不卡手机在线| 天天天天天天天天综合| 蜜臀在线看片| 国产白丝在线| 一区二区影视| 中文字幕丰满子伦无码专区在线视频最新| 成人性爱av| 日韩成人在线性爱视频| 97精品综合久久| 高清不卡视频| 蜜臀在线看片| AV乱伦国产| 国产福利小视频高清在线观看| 把腿张开老子CAO烂你| 中文字幕一区av| 欧美激情亚洲色图| 日本五区不卡| 88xx成人精品视频| 超碰在线人妻| 极品内射| 亚洲人综合19| 熟女乱伦A| 精品国产一区二区三区av在线资源| 久久色人体 | 亚洲AV永久无码一区仙野| 麻豆国产免费影片| 神马久久久久久久久久久久| 97伦综合| 手机在线中文字幕国产| 熟妇艹鸡八| 骚逼一区二区| 91美女小视频| 日韩午夜精品一区二区三区电影| 91久久久久久久| 九九热视频这里只有精品| 青青青草原| 日韩无码精品综合久久| 亚洲色五月| 操少妞在线视频| 国产精品久久久啊| 日本色色色视频| 日韩久久超碰色| 亚洲欧美清纯| 8050午夜少妇无码| 国产十八禁视频| 91肉丝| 激情视频网址| 日韩欧美中文字| 国产精品视频91久久| 人人干人人搞人人摸| 99www.bibizy香蕉资源国产一区二区三区高清 | 国产深喉| 日本视频在线观看污污污| 日本免费不卡二区| 九久9精品| 久久久久亚洲Aⅴ无码| 330Dv国产女人终合视频极品人与兽 | 中国大陆国产高清AⅤ毛片| 久久xxxx| asc国产精品| 久久性爱视频免费看| 亚洲五月婷| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 国产精品嫩草影院免费| aaa淫乱视频| 91久久| 狠狠干狠狠干| 91 综合网| 97久久超碰| 一区二区视频你懂的| 黄人人操人人操| 激情五月婷婷| 99av| 亚洲激情网一二三四区| 丝袜AV一区二区三区| 国产高潮AA片免费看| 天天干1区2区在线| 亚洲无码AV九九九| 国产和美国毛片| 欧美综合娱乐久久| 十八禁黄色成人网站观看| 熟妇色99| 超碰久久中文| 探花精品 一区二区| 小草三级久久观看| 青春草莓视频在线观看网址| 800zy一区二区| 性欧美91| 天天91~综合入口| 91欧美网| 亚洲日本韩国极品一区二区| 大香蕉欧美| 亚洲色欲一区二区三区| 91一区二区三区蜜桃| 久久婷婷国产一区二区色| 亚洲不卡一| 午夜天堂啪啪| 好涩综合| 久久99热这里只频精品6学生| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 一区二区三区日韩欧美 | 亚洲精品一卡二卡三卡福利视频网站| 大香蕉www.超碰| 97bbn| 亚洲 国产 精品一区| 精品国产乱码久久久久久日本公司| 亚洲AV无码成人精品久久| 91中出在线| www.色婷婷| 丰满人妻-区二区三区免费看| 六月丁香网| 精品国产一区探花在线观看| 精品网站9999| 人人看人人爰人人操| 97精品97久久| 九九热精品| jazzjazz国产精品麻豆| 中文字幕精品亚洲熟女| 亚洲情色第一页| 人人玩人人添人人澡免费| 婷婷激情五月综合| 嗯啊不要在线观看嗯啊| 亚洲天堂一区二区久久| 96一区二区三区| 2011国产精品| 无码av永久免费专区网站| 97色欧洲| 亚洲不卡AV在线| 人妻偷拍一区二区三区| 国产精品久久久蜜臀| 中日韩熟女| 激情小说在线视频| 亚洲爱爱视频一区二区| 欧美黄页在线| 小视频玖玖| 欧美少妇人妻| 激情小说亚洲图片| 久久a久久| 黑人免费福利视频| 一卡二卡三卡| 综合色拍| 密桃99999| 久干9操| 东京热双插| 久久久草草精品| 青青草日逼视频| 亚洲图片偷拍视频区| 成年人网站在线免费观看| 88在线一区二区三区| 亚洲色图20p| 婷婷伊人綜合中文字幕小说| 日本日逼高清| 亚洲av成人精品一区| 啊啊啊啊二区好大| 艹我哪美一区无码| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 欧洲亚洲人妻无码高清久久三区四区| 五月天偷拍| 亚洲av无线观看| 欧美十八禁视频| 亚州综| 国产九九九九九九| 国产丰满少妇久久久精品影院| 日本一本一区二区三区四区五区欧美日韩中文字幕 | 天天射夜夜| 99色悠悠| 激情五月天婷婷| 蜜乳AV一区| 国产精品ⅴ无码大片在线看.| 青青草久草| 熟人人妻少妇精品久久| 国产AV线| 粉嫩av一区二区三区四季| 久操 高清| 99国产天美| 欧美综合骚| 啊啊啊好爽快点啊啊啊嗯嗯| 99色天堂| 欧美99热| 亚洲AV成人无码一区二区三区在线观看 | 久久av一级av少妇av高潮| 中文字幕人妻资源在线| 91爱网| 东京太热男人的天堂久久久| 91网站在线播放| 蜜臀th| 日产成人久久| 97超碰免费人人性爱| 国模不卡一本二本三电影| 99热超碰| 国产在线不卡导航| 98色网| 色鬼在线综合| 97任你吞精| 手机看av网站在线看| 蜜乳AV一区| 日欧亚洲二三区大片不卡| 中文字幕人成乱码熟女香港| 自怕偷自怕亚洲精品| 岛国黄片网站| 亚欧免费| 97综合| 91操熟女| 欧美成人一级麻豆| 黄色视频高清无码网站| 51国产午夜精品视频| 日本操逼无码| 欧美se综合| 青青青青操国内视频在线| 欧美激情精品| 欧美美女视频| 久9re热视频这里只有精品| 91操操操操| 欧美精品23| 无码免费在线观看黄色片| 亚洲精品一二区| 操逼操逼逼操操逼91| 久久久久国产精品喷潮免费观看臀| 手机在线人成免费视频| 日欧操屄视频| 激情五月天网站| 在线观看十八禁| 中文久久一区| 97一区二压| 超碰视97中文| 2017天天插| 91丨人妻丨国产丨丝袜| 无码精品久久| 久久riav中文精品| 91|九色|国产熟女| 99热精品免费| 天天综合影院91| 亚洲日韩东京热一区| 国产熟女自拍| 97超碰欧美手机| 91久久| 亚欧成人综合影院| 日韩乱插| 精品视频日日夜夜| 330dv亚洲成年视频网| 欧美玖玖爱免费玖玖| 日韩久射综合| 84YTCOM性无码| 国产精品麻豆视频网站| 九九无码视频| 999久久久久久久精| 天天内射| 青青草原av| 久久永久无码人妻视频| 精品中文字幕第一页| 国产成人网站在线观看| 久久99网站| 九九九久千久久激情蜜桃在线看 | 国产女生在线| 95精品在线| A啊啊在线观看| 欧美日韩亚洲少妇寂寞影院正在播放| 日韩本不卡视频在线观看| 久久伊人最新网址视频| 青草青草久热| 亚洲 欧美 天天| 91久久久久久久| 欧美se综合| 色天使亚洲综合在线观看| 天天干干天天干干| 色狠狠色| 人妻无码久久一区二区三区免费| 亚洲日韩狠狠撸视频| 伊人专区一区二区三区| 偷窥自拍A片| 在线视频一区二区传媒| 精品国产乱码久久久| 国产精品一区二区久久精品| 超碰人人在线| 久久九七| 夜夜躁狠狠躁日日躁av| 婷婷久久五月综合激情| 五月天色色网站| 搞中出视频在线观看| 中文字幕激情小说| 草草网站影院白丝内射| 亚洲天堂性爱| 欧美日韩国产精品久久色婷婷| AV一起草在线| 99精品在线观看| 亚洲性猛交| 一区二区三区不卡视频| 国产精品免费视频人成| 欧美嫩性色| 精品视频一区二区| 国内毛片婷婷六月色| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 五月丁香成人网| 熟女精品一区二区在线观看| 加勒比99999| 亚洲天堂人妻熟妇视频| 天美一二三在线观看Av| AV女优男人的天堂| 日本精品第一视频在'| 色情亚洲日本成人| 美女被啪到深处抽搐视频| 91Chinese在线| 9999九九九久久久| 欧美日韩啪啪电影| 熟女性视频| 亚洲综合色图欧美| 亚洲色图尤物视频| 欧美性天天影视| 中文字幕黄色一起草| 欧美日韩激情无码专区| 极品内射| 色吧91| 精品超碰中文在线| 亚州欧美在线| 人、人、摸,人、人、草| 色偷综合| 中文操逼字幕| 91neishe| 国产精品国产精品国产| 免費黃色視頻觀看一| 欧美爱国产综合、| 国产女人91精品嗷嗷嗷嗷| 神马久久69| 又粗又长又爽在线观看| 人妻无码后入| 国产亚洲日韩欧| 日本一二三高清| 亚洲婷婷丁香在线| 久无码| 桑老女人九区| 蜜乳av首页| 九九九九九九精品| 日韩黄色成人性爱| 校园春色美腿丝袜 | 岛国视频免费在线观看| 4虎在线视频| 淫荡少妇免费| 久久久一区二区| 殴美大黄片| 色天使AV天堂| 91超碰人人操| 亚洲中文sv| 人妻少妇久久久| 97超碰人妻| 欧美激情总合网| 超碰在线人人射| 成人片在线播放| 91性情| 欧美亚洲国内自拍| 亚洲欧美综合| 综合网久久| 亚洲囯产精品女人久久久| 日韩美女高潮喷水视频| 伊人五月天激情| 天天拍天| 色9999日韩国产| 久草资源在线| 热天堂一区二区| 黄色大片免费在线| 91久久国产综合精品| 日韩欧美俄罗斯A片| 色网亚洲人| 五月激情小说| 三级日本一区二区三区| 北京美女一区二区| 亚洲97久久精品亚洲| 久啪视频| 天天日少妇逼AV| 思思热在线视频免费| 国产偷人妻精品一区二区在线| 欧美日韩一区二区三区四区蜜桃| 国产精品69久久久久久久| 九九无码视频| 国产97亚洲| 屌妞视频久久久久久久久久久久| 少妇3P性爱自拍| 91青青| 夜夜操天天肏| 中文字幕久热视频在线| 黑人性暴力毛片| 女优视频第10页| 1769国内精品视频| AV在线播放网址| 久久午夜伦| 免费无码国产精品v片在线观看| 精品国产乱码久久久久久日本公司| 婷婷视频网| 欧美性爱综合,免费| 激情文学 国产一二三aV| 天天插夜夜操| 九t超碰| 99国产精品在线观看| 色情乱伦AV| 一级性爱网| 久草热制服丝袜在线观看 | 91麻豆天美传媒在线| 亚洲天堂久| 国产综合操逼高清| 一区二区乱码福利| 亚洲国产蜜臀系列在线观看| 日韩三级视频一区二区三区| 免费观看国产小粉嫩喷水精品午| 97K超碰在线| 一区二区三区日韩欧美| 天天躁日日躁AAAXX| 欧美色网| 青青草影视蜜久久| 综合干干干av久久久综合网| 91人妻尻屄视频| 国产肏逼网站| 亚洲熟女一区二区| 青娱乐大香蕉| 水野优香在线观看| av天堂天堂av日韩| 在线视频97| 久久久久久裸体| 中文字幕视频一区视频二区| 熟女突然公开看18禁影片 | 99国产人成精品| 成年女人黄网站| 3PAV乱伦视频| 天天天天天超碰| 五月婷婷激情综合| 国产高清精品福利| 亚洲无码视频免费在线观看网址!| 五十路熟女在线不卡观看一区二区| 欧美久久婷| 狠狠干,狠狠操| 亚洲av影院在线观看| 伊人五月天婷婷| 久久春色| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 色鬼在线综合| 久操综合在线| 久久久97| 久久久久久久国产视频| WWW.操逼.COM| 大奶的诱惑| 夜夜嗨一区| 啊好爽快点-国产一区二区三区撒尿在线-成人AV | 蜜桃香蕉久草精品在线| 青青操少妇| 超碰亚洲97| 国产AV毛片| 国语精品对白| 久久妇| 神马久久久久眼| 六月丁香网| 999岛国大片| 精品国产一区二区三区四区在线看 | 在线视频免费观看午夜| 久久久久久999| 深夜激情 | 老女人综合网| 亚洲欧洲自拍| 欧美日本不卡| 韩国国产欧美情侣视频在线| 97干天天| 欧美日不卡| 久碰视频| 五月婷婷基地| 国产亚洲精品农村妇女| 久热影视| 亚洲欧美色图小说| 天天爽天天操啊啊啊| 国产一区二区在线看| 视频在线观看青青99国产| 国产亚卅97| 快点操死我| 亚洲乱色视频一区、二区在线| 麻豆2区1区天美| 五月丁香啪| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 久久免费99精品久久久久久| 干超碰碰熟女| 中出欧美| 欧美一二三| 成人性交免费视屏| 青青青在线高清视频在线一二三四区| 欧美热图99| 日本三级韩国三级美三级91| 欧美成人一区二区| 日韩大香蕉精品在线视频| 精品少妇人妻| 精品无码一区二区人妻久久蜜桃| AV色五月天| 色777999综合| 日本不卡免费二区| 亚洲综合色图欧美| 亚洲 在线| 性91| 女性91网站| 免费人成毛片乱码| 三级日韩一区二区三区| 人人玩人人添人人澡免费| 人妻81p| 国产日韩欧美亚洲精品95| 天天干人妇| 五月激情在线| 蜜臀久久99精品久久综合| 熟妇人妻一区二区| 日韩噜噜69| 亚洲综合情色| 亚洲中文字幕久久无码精品| 欧美精品庄| 一起草在线视频| 91精品国产91久久福利| 日本日逼高清| 一本色道综合久久欧美| 在线色导航| 国产玖玖| 超碰在线观看av不卡| 欧美一级A片不卡视频。| 久久精品国产亚洲AV无码电影| 国产精品爽爽va在线观看98| 亚洲欧美中文日韩视频中国语| 婷婷综合五月| 日本有码影片下载| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 中文在线视频| 自拍六区| 极品销魂美女一区二区| gogogo免费高清看中国国语| 睡产熟女乱伦| 婷婷香蕉欧美在线一区二区三区| 中文字幕天天天天天| 成人天天爽| 亚洲男人的天堂va亚洲男人社| 曰韩人妻中文字幕在线| 亚洲成人av电影在线| 激情小说五月天| 91人人看| 91精品免费| 丝袜亚洲综合| 色色毛片| 久久久免费的精品| 麻豆人妻精品一区二区| 97超碰资源网| 综合少妇网| 国内偷自视频区视频综合| 色婷婷综合视频| 啊嗯好大视频在线观看| www久久精品| 亚洲āv网址在线观看| 亚洲日韩国产欧美综合v| 色综合98| 天天大干大香蕉| 在线播放成人高清免费视频| 国产美女销魂在线观看不卡| 亚洲各类熟们中文字幕| 亚洲中文字幕妇伦久久| 欧美在线综合| 亚洲丝袜诱惑| 国产高清26uuu| 日韩中文字幕二区| 美女露胸露屁股| 欧美精品不卡一二三四在线91| 色色色日本| 天天做天天爱| 亚拍在线| 啊啊嗯嗯好爽| 亚洲熟女中文字幕在线| 精品人妻视频一区二区三区蜜桃视频| 国产熟女一区二区| 亚洲 日本 国产 综合| 成人 日韩欧美一区| 一区二三区四区视频大全套| 亚洲校园激情| 欧美偷拍区| 国产女上位好爽在线| 四虎影视国产精品| 91东京热男人的天堂| 久超碰在| 校园春色美腿丝袜| 综合另类| 国产精品久久久久av| 蜜屁Av| 超碰在线人妻中文字幕| 欧美黄片视频在线观看免费| 操逼999| a亚洲欧美色欲| 久久精品国产精品亚洲艾通辽熟妇| 久久久久78| 午夜国产成人精品视频 | 麻豆影音天美视频| 91亚洲情色| 激情久久av一区av二区av| 妇人噜噜| 亚洲欧美天堂| 人妻AV在线| 久久精品国产97欧美精品亚洲 | 福利在线黄片| 精品人妻一区二区三区视频| 91春色| 激情六月天| 国产又粗又长又大的视频| 全免费a敌肛交毛片免费| 青久操| 日本国产亚洲一区在线观看| 亚洲天堂中文字幕无码男同| 婷婷九月丁香| 欧美性巨大╳╳╳╳╳高跟鞋| 亚洲吊色| 无码高清少妇久久| 91肏屄网| 亚洲性网| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 欧苏综合色综合| 精品黑人一区二区| 欲射影视| 午夜福利一区二区影院| 不卡九肏| 国语精品对白| 五月婷婷爱六月丁香色| 婷婷五月天色网| 熟女人妻一区二区三区| 91老熟女老女人国产老太| 欧美精品一区二区少妇免费A片| 久久超碰、| 婷婷av在线中文字幕| 97精品国产97久久久久久户外免费| 人妻少妇精品久久久久久久| 乱人伦 国语对白:视频直接看| 精品少妇99| 无码国产精品午夜不卡(| 超碰久久.com| 97色婷婷| 国产熟女自拍| 在线性黄高清免费视频| 91操熟女视频| 天天做天天爱| 男人综合网| 日夜啪电影| 久久精品国产亚洲AV清纯| 夜夜操av亚洲一区二区| 国产精品内射婷婷一级二| 亚洲综合影片| 久久久久免费看少妇A片特黄| 嫩草影院永久在线制服丝袜| 97在线精品观看视频| 超碰午夜| 亚洲乱熟女一区二区三区大香蕉| 91蜜桃传媒精品久久久一区二区| 色综合色欲色综合色综合色综合| 91狠狠综合久久| 97AV爱| A一区片| 大香蕉伊人在线成人AV在线观看| 亚洲牲交| 肉丝无码中文高清| 超碰超碰95| 国产热av| 婷婷国产精品九区| 亚洲丝袜在线观看| 欧美视频在线第3页| 亚洲无码 国产无码| 口爆欧美91| 加勒比久久综合网高清| 天堂亚洲精品|