亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

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
返回資訊列表
欧美成人黄网色网站| 亚洲美女精品| 久久久艹艹艹| 亚洲综合在线高清| 亚洲精品1区| 999在线电影香蕉| 日韩欧美中文字亚洲慕| 人妻内射一区二区在线视频| 色色色热| 精品v日韩欧美国产| 777超碰| 人妻黑丝袜电影| 久久久久国产精品喷潮免费观看臀 | 日本三级一区二区 在线| 自拍啪啪视频| 97热视频在线观看| 精品福利视频| 国内毛片无码一级毛片| 国产三级资源在线观看| 狠狠91| av影院十区| 色情亚洲日本成人| 欧美专区在线| 9久综合网| 亚洲熟妇一,二,三期| 男人天堂最新手机版在线青青草| 91撸色网 玖玖网 欧美| 欧美精品另类人妖xxxx| 最近的最新的中文字幕视频| 操逼网站视频漫画国产| 亚洲综合另类小说色区亚洲成av人片在www | 中文字幕精品资源在线| 十八禁av无码免费网站APP| 啊啊啊想要| 99热国产精品| 亚州日韩97| 久久视网78| 久久久久日本视| 日韩啪啪啪啪啪| 91人妻中文| 高清有码一区二区| 91综合网| 久操网无码在线| 大香蕉免费3| 蜜臀av网址| 久久綜合很很很| 神马久久中文字幕| 蜜臀久久99精品久久久久| 日本高清一本二本免费不卡| 欧美日本不卡在线| 大鸡巴久久| 狠狠色五月亚洲91| 久久九九97| 天堂性色| 大香久久| 欧美日韩在线视频网站| 久久双插| 高跟丝袜AV专区国产| 久操网无码在线| 日本精品无码三级网站| 任你草| 亚洲操逼网| 99热成人| 青青青操| 久久精品视频一区三区小泽玛利亚| 中文字幕文字幕无码一区二区三区电影99| 亚洲色天堂九9| 91国模| 日本性爱视频一级| 韩国黄色片精品久久久| 国产欧美美女免费观看视频| 久久久久深夜无码| 黄片免费看的| 日韩成人免费电影| 天堂九九九九九九九九九| 性色国产东北露脸精品视频| 精彩久久中文| 欧美人妻制服| 色婷婷视频| 大香蕉九九| 98一区二区精品| 又黄又粗又硬又长又大| 人妻久久一区二区三区| 日韩丝袜二区| 热天堂一区二区| 东京成人一区| 91n处女在线观看| 蜜臀久久久99久久久久 | 日韩啪啪视频| 小视频国产| 国产亚洲色婷婷久久99精品91葵花宝典 | 精品国产乱码久久久久久久久1| 国产超碰国产97| 天天澡天天爽日日av| 色97国产69香蕉| 久久久精品| 超碰人人超在线观看| 91久久精品国产| 欧美色亚洲色| 一级毛片久久久久久久女人18| 日本一级二级三级网站| 亚洲偷拍欧美激情| 亚洲中文字幕在现观看| 人妻精品综合中文字幕在线| 男女啊啊啊| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 日本成人在线不卡一区二区三区| 熟女五十路一区二区三| 日韩中字av一区| 热G综合热G中文| 色吧5亚洲| 韩国一级做A片免费的| 大香蕉十区| 精品视频一二三中文| 日韩免费看黄片| 欧美国产一区二区三区麻豆传媒 | 国内毛片热久久思思热| 麻豆区99999| 亚洲色图8| 亚洲图片激情综合另类| 久久97资源 网| 熟女人妻一区二区三区| 超碰99在线观看| 98福利在线视频| 国产传媒午夜理伦精品| 内射中出日韩在线观看视频| 精品无码秘 人妻一区二区| 99热精品在线| 超碰97久| 天天爱天天韩国日本牛牛牛牛| 自拍啪啪视频| 激情五月综合网| 男人天堂免费| 日韩中文字幕二区| 精品国产a∨一区天美传媒| 韩国午夜理伦三级好看| 99国产精品自在自在| 唐山老熟妇露脸啪啪叫| 亚洲中文sv| 国产中文字幕在线点播| 免费亚洲国产精品久久一区| JIZZJIZZ国产精品喷水| 青青草原伊人网| 性爱乱伦网址| 久久久久久人体| 亚洲中文字幕三级在线| 78精品| 中文字幕精品一区二区精品| 怡红院网站在线视频| 国产女人成人精品视频| 日本一级真人黄色性爱视频| 成人日韩中文字幕| 久久性爱大全| 97亚洲中文| 夜夜夜久久| 桃花色综合影院| 十八禁黄色成人网站观看| 国产女乱淫真高清免费视频| 国产精品农村妇女| 少妇同性| 人妻久久久| 四虎午夜影院| 精品福利| 91男同| 337p大胆噜噜噜噜噜91Av| 蜜臀中文字幕| 麻豆色99999| 国产精品交换一区二区| 岛国黄| 九九九九精品视频| 午夜欧美神马久久久久| 国产小u女在线观看| 亚洲综合999| 97伪v| www.激情| 成人性爱美曰韩| 熟妇人妻精品一区二区| 大肉棒导航| 九九无码| 伊人网青青| 久久9免费视频| 日韩乱码av| 人人射人人操人人摸| 久久精品| 天天色欧美| 亚洲诱惑天堂| 美美91成人国产精品欧美精品久久久久久久| 成人精品在线| 亚洲欧美在线观看2021| 小说区 图片区色 综合区| 加勒比五月天| 亚洲男人天堂2019| 噜噜噜无码AV一级一级久久影院| 欧美日韩性爱电影在线| 日本欧美韩国国产在线| 亚洲人成在线放东京热| 日本欧美中文字幕| 日韩一级二级三级| 另类图片五月天| 大香蕉在线视频重口味毛片在线| 亚洲精品一区二区三区新线路| 亚洲Av无码成人精品国产| 国产欧美日本亚洲精品 | 凹凸久久人人| 国产福利一区二| 懂色Av一区二区三区| 欧美在线中M| 欧美色图 人妻| 日韩AV中文字幕电影| 99在线精品观看99| 亚州国产精品乱| 国产三级电影免费观看| 久久肏大逼| 欧美专区日本专区| 国产精品无码论坛| 天天插天天操| ss久久| 视频二区美腿丝袜制服人妻欧美| 五月丁香综合| 99热超碰| 69精品人人人人| 天天日日本| 91是天天| 99999这里都精品| 玖玖爱伊人玖玖爱| 日夜尻逼网| 91热色| av2014 日韩在线中文字幕| 97射欧美| 99re视频在线播放青草| 日本精品五区| 黄色大片免费在线| 国产AV久久久蜜爱影集| 激情四射婷婷四五月天| 少妇与黑人高潮在线| 欧美色997| 青青伊人久久| 青青草影视蜜久久| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 欧美黑人XXXⅩ高潮交| 人妻少妇精品一区二区三区| 亚州色站 日韩电影| 精品999日本| 嗯~啊~快点 死我视频免费看网站| 亚洲自拍青操视频| 91这里只有精品| 岛国在线国产| 日本色色的视频| 久久香蕉网| 日本日日色视频| 91美女視頻| 999国产精品999久久久久久| 中日韩熟女| 中文字幕五区| 激情婷婷黑人91| 国产强奸无码乱伦| 屁屁影院一区二区三区国产| 中文字幕精品资源在线| 超硑97精品| 五月天AV资源| 久久无码一区二区二三区性色| 在线人人人人人人精品超| 亚洲天堂中文字幕无码男同| 本道在线| 91亚洲欧美| 日韩性爱网址| 免费9 1久久| 国产精品久久久午夜夜伦鲁鲁| 亚洲欧美天堂| 综合色啪| 亚洲欧洲日产国产综合网| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 午夜超爽| 国产亚卅97| 91色堂| 中国AAAAAA黄色片| 麻豆精品久久久久久久| 欧美日韩国产精品久久色婷婷| 日韩兔费看黄片| 久久av成人无码免费| 殴美,日韩国产伦精品| 校园春色家庭伦理欧美激情| 一道α片欧美| 国产精品久久久久久夜夜夜夜| 91粉嫩萝控精品福利网站_精品影音先锋国| 久久精品视频久久久| 久久中文字幕女同性恋一区| 日韩三A大片在线观看| 欧美毛片在线网| 国产风韵犹存熟妇三区| 欧美日本一区二区a人| 青青草吊丝| 亚洲女人91| 91人妻素女| 大香蕉一人在线| 国产精品不卡高清在线观看| 亚洲第一页色| 男人的天堂VA| 欧美午夜视频精品久久| 欧美桃色网| 色嗨嗨在线| 激情终合网| 久草精品国产99| 亚洲一区二区三区久久 亚洲一区二区| 91n.欧美| 粉嫩av在线一区二区| 欧美日韩人妻婷婷一区| 蜜乳性色无码专日粉嫩骚逼AV| 久久久婷婷| 日韩操啪| 呦女网站| 精品少妇一区二区三区在线视频| 中文字幕免费看| 亚洲色图欧美视频| 伊人国产AV| 亚洲操人| 97久久国产| 久久超碰久| 国产成人五月天丁香花| 久久久一级| 欧美日韩国产成人高清| 黄色AV影视| 天美传媒AV在线播放| 久久东京国产精品视频| 欧美色图20P| 九九热视频在线观看| 97色综合中文网| 欧美亚洲激情小说| 一本色道综合久久欧美| 久久久久久久综合,国产| 国产 亚洲 一二三四| 麻豆伊人网| 乱伦3P视频| 麻豆AV一区二区天美传媒| 日日狠狠久久偷偷色综合免费| 亚洲性网| 91精品人妻一区二区三区蜜桃臀| 人人看欧美性爱| 怡红院亚洲怡春院av| 超碰av在线| 91日韩网站| www.操| 精品一啪| 国产成人91一区二区三区| 无码视频一区二区| 国产一区二区啪啪视频| 中文字幕国产在线天堂| 日日AAvv| 97干天天| 熟妇人妻精品一区二区视频色欲| av绯色| 先锋女优在线观看视频| 男人的天堂日韩| 国产原创精品| 看一级黄色视频| 午夜男女爽爽大片免费观看| 18精品一二区| 日韩欧美中文字| 日韩久久三区| 婷婷视频在线免费观看| 在线毛片片免费观看| 天天爱综合网| 91久久国产综合精品| 久久久九97| 午夜爽爽爽在线观看永久入口姬片| 欧美日韩中文字幕人妻| 青青草一区二区三区四| 天美传媒在线一区| 少妇被玩视频二三区| 静品嫩模一区二区| av一区二区三区 中文| 色网色网色网色网色网色| 亚洲交换| 大干人妻| 亚洲综合校园春色| 九九九九九九九九九九九九九九九女| 色综合中文字幕不卡| 色婷久久| 无码抄逼网| 成人免费性爱视视| 亚洲精品久久久久毛片A片拉屎 | 亚洲天堂电影网99999| 少妇一区二区三区在线观看| 欧美 综合| 天天综合~91入口| 欧美强奸乱能| 无码操逼网| 久久亚洲欧美中文字幕国语| 欧美日韩午夜精品一区二区三区 | 丰满人妻一区二区三区免费,| 成年人黄色小视频网站| 一区二区三区四区免费视频| www.伪伪| 美女熟妇色| 成年人网站在线免费观看| 蜜臀久久99精品久久久电影| 色图综合网| 丁香婷婷五月| 日本αv| 日韩精品在线放| 84YTCOM性无码| 一个人免费视频观看在线WWW| 91天天| 超碰色综合| 麻豆三极片| 98人妻精品一区二区色欲| 成人蜜乳小视频网站| 精品久久久av无码免费| 久久久久久亚洲Av无码| 少妇xx精品| 亚洲Av无码成人精品国产| 亚洲黄色a级片| 国产精品久久久三级无码| 国产福利精品最新在线| 日日夜夜天天| 日影院久久婷婷夜夜网| 亚洲中文丝袜美腿诱惑字幕| 9久久久久| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 国产精品电影推荐| 超碰97人人乐| 日韩肏逼视频| 日本天天操| 欧美v亚洲v日韩v最新在线二区| 偷窥自拍A片| 欧美黑人XXXⅩ高潮交| 国产农村妇女精品一二区| 日本蜜桃| 综合五月天| 人人操人人爽人人操人人| 色黄污美女啪啪啪免费网站| 日韩精品在线观看网站| 69AV女优男人的天堂| 久久久久久少妇| 超碰导航97| 色激情综合网站| 无码高清专| 欧美日韩99精品麻豆传媒| 亚州色图第三区| 婷婷亚洲中文字幕在线| 啊灬啊灬啊灬啊灬高潮奶出了免费视| 999久久久九九九九| 久久久一区二区三区三州| 五月色网| 久久久久久久久久久久欧美日| 亚洲资源吧| 制度丝袜99| 成人资源中文字幕在线观看天天| 风月影院男女十八禁| 伊人国产成人av网站| 中文字幕人成乱码熟女香港| 热久久91婷婷| 中文字幕av一区二区三区人妻少妇| 天天综合网日韩| 欧美性爱一级操| 男人综合网| 欧美日韩日产免费网站看| 狠狠操狠狠插| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 91路www| 日本成人在线不卡一区二区三区 | 久久久久久裸体| 成人国产二区三区在线,男女精品。| 在线看的av| 亚洲国产剧情少妇激情| 久久久日本电影| 家庭乱伦网站国产| 色香在线| 中国一级特黄大片护士| 九九久久国产精品| 啊v在线观看视频| 九九亚洲视频| 性高潮久久久| 成人性爱电影一区二区| 欧美三级免费伊人| 国产在线能看的你懂的| 久草久热| 91爱网| 色色国产| 久久尹人大香焦视| 99精品成人免费看| 日本不卡中文| 婷婷午夜| 麻豆一区二区AV天美| 青娱乐日韩无码| 精品一区二区2| 一起草精品人妻| 偷拍亚洲情色| 日韩中文字幕二区| 99热销国产这里有精品| 欧美性爱系列| 美欧色综合| 睡产熟女乱伦| 日韩三级av片| 青青草在线视频人人想人人上| 成人精品无码| 精产国品一区二三产品| 手机在线播放国产福利| 久热网| 长长久久88视频| 无码人妻一区二区三区免费九色| 亚洲情色五月天| 亚洲视频中文一区| AV99热18这里只有精品| 国产综合网站在线播放| 狠狠97| av天天在线观看| 波多野结衣之双飞调教在线播放 | 亚洲日韩欧美一区二区| 大香蕉黄色一区| 97亚洲精品超碰| 91美女视屏| 日韩卡一卡二卡三在线| 亚洲一区二区中文字幕| 亚洲少妇色| 秋霞Av理论一级在线| 无码人妻丰满熟妇奶水区毛片| 国产网站在线播放| 女沟厕偷窥piss小便| 亚州国产成人精品女人久久 | 国产女人视频三四五区| 国产精品国产| 91麻豆天美国产| 精品国产肉丝袜在线拍国语| 超碰色男人操熟女| 久久夜夜| 亚洲不雅视频1区二区| 日日嗨AV一区二区夜夜| 无码一区二区三区四区五区六区七区八区九区十区视频 | 91人妻人人妻| 欧洲熟妇xxXx欧美老妇裸体 | 啊啊好多水| 91婷婷伊人狠人| 熟女人妻一区二区三区| 中文字幕奈奈美被公侵犯| 久久超碰网| 欧美亚洲今日在线| 一卡二卡在线播放| 国产成人精品一区| 动漫av中文| 大香伊人在线一区| 啊啊啊啊啊操我视频| 色色亚洲| 狠狠久久亚洲欧美专区| 长长久久88视频| 日韩性爱高清免费视频| 国产小视频91| 亚洲一卡2卡3卡4卡乱码网站 | 品亲网欧美品亲网| 1二区9| 日韩精品第3页| 天天爽夜夜欢视| 你操综合| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 欧美性爱日韩高清| 家庭乱伦国产精品| 74成人在线| 香伊人在线| 国产精品视频91久久| 男女性无套 免费九一| 欧美狠狠| a片 xxxx受爽视频| 欧美色欧美| 98人妻精品一区二区色欲| w w w.久久精品| 欧美性爱综合,免费| 国产精品99精品视频网站| 欧美成熟性爱精品| 国产AV色黄看到爽| 成人aⅴ一区二区三区| 黑人嘿嘿嘿超爽免费视频| 精品区国产区一区二区三区| www久| 1956日韩精品| 蜜臀99999| 亚洲色图伊人网| 婷婷探花久久精品一区| 亚洲欧美色图片| 成人小说另类在线| 国产精品久久久久久久黄无码| 日美免费黄片| 中亚av| www.99热在线只有精品| 日韩不卡一二三四| 青青青青青手机视频| 日韩免费av片高清无码| 國產尤物AV尤物在線觀看| www.99色| 99在线观看无大码| 色原狠狠天天天| 日本人妻最新在线中| 吖在线不卡一区二区国产剧情| 国产高清26uuu| 这里只有精品视频| 无码视频一区二区| 日韩精品啪啪啪| 欧美中文字幕日韩在线| 色婷婷综合网站| 神马午夜久久久| 超碰色大香蕉| 午夜精品久久久久久久久久蜜桃 | 一卡二卡三卡| 国产亚洲精品久久久久小| 中文字幕av乱伦| n1038 一二三区| 国产尤物在线三区| 豆花视频操逼网址| 黄色网址久久精品欧美喷水| 色偷偷男人的天堂麻豆| 青青操网| 久热99| 91少妇通奸网站| 草草电影院| 国产99 中文字幕日韩小视频| 超碰在线人妻不卡| 日本一区不卡| 丁香五月自拍| 五月天亚洲网| 天天摸夜夜添无码小视频| 99超碰色| 久久久四区| 中文字幕 国产 精品| 嗯嗯啊啊视频一区二区三区| 亚洲九九九| 久久99操天天日| 女人天堂网| 久久九九视频九九视频| 青娱乐大香蕉| 亚洲春色欧美激情自拍| 国产超碰国产97| 亚洲黄色| 婷婷五月天成人| 后入人妻无码| 插欧洲美女欧美精品| 日韩 欧美 国产 麻豆| 亚洲无码国产精品久久| 天天综合网在线| 懂色Av| 亚洲日韩肥臀视频在线观看| 亚洲欧美不卡线| 日韩三级视频一区二区三区| 97久久久久| 亚洲欧美日韩综合在线尤物| 久久久精选| 日韩免费性爱视频在线观看| 噜噜噜亚洲精| 91欧美| 97亚洲在线| 99re9在线| 亚洲婷婷丁香在线| 女一区二区| 伊人网青青| 性爱AV天堂| 蜜乳AV一区二区三区四| 综合网亚洲1| aaa一级黄片| 国产精品欧美在线观看| 青娱乐亚洲热| 国产又黄又爽又刺激久久久久久| 蜜桃久久久久久久久久久久| 亚洲高清无码在线桃色| 91模特在线观看| 狠狠操狠狠爱| 3PAV乱伦视频| 蜜臀99999| 一级久久久久久久久久久| 天天干夜夜操一区二区| 五月天综合网| 91性高朝久久久久久久久| 97在线观看免费视频l| 色噜噜人妻丝袜a∨先锋影 | 国模限制级电影| 日韩有码免费视频| 91在线免费精品视频| 东北女人| 色99视频| 澳门黄片一香蕉视频| 91久久久久久久| 婷婷中文字幕| 人人玩人人添人人澡免费| 日韩专区久久久| 另类图片五月| 日韩A优精品在线观看| yazhououmeizongya| 天天日B狠狠操| 国产欧美日韩一区二区三区| 小电影欧美91| 九热大香蕉| 日日碰狠狠添天天爽超| 婷婷婷婷婷婷久久久久| 超碰9 7女人 | 欧美日韩国产三级黄色| 亚欧美综合网| 激情黄色五月天| 婷婷五月天补不补| 日韩A优精品在线观看| 大色综合| 青青草华人在线欧美在线| 人妻在线中出视频| 婷婷久久五月天| 亚洲欧美综合区自拍另类| 久久久偷拍| 精品妇操一区二区三区| 好吊色一区| 中文字幕 人妻不满 在线视频| 日韩熟女乱伦中出| 极品白嫩美少妇在地板上位骑射淫水泛滥| 任你干在线视频| 高清不卡一二三区视频......| 亚洲最大网站av| 亚洲?V无码专区在线电影| 亚洲加勒比| 成人AV在线网站| 超碰天天操| 96精品久久久久中文字幕| 婷婷中文字幕| 国产做?爰片久久毛片?片美国| 久综合国内精品自在自线| 又大又大又大又粗爽高潮观看| 国产91 丝袜在线播放| 久艹99| 国产精品天干天干综合网麻豆| 夜夜操av亚洲一区二区| 91色艳| 啊啊啊不要好疼视频| 激情色色| 色婷五月| 91九色精品熟女内射| 国产九九九九九九九九| 亚洲一区二区三区AV无码| 欧美成人四级在线播放| 人人艹亚洲| 国产一级137片内射麻豆| 欧美高清无码免费视频高清版| 91亚洲在线| 校园春色五月天| 男人亚洲天堂| 欧洲在线性爱视频| 欧美色www亚洲国产阿娇要播| 亚洲色天| 亚洲成人精品在线一区| 91色人妻| xxxx网站亚洲精品| 风流老熟女一区二区三区l| 在线国产福利网址导航| 国产第25页在线观看| 新婚人妻扶着粗大强行坐下| 亚洲欧美国产其他二区| 操逼日韩无码 | 蜜桃臀久久| 青青操日韩| 97国产超碰| 国产精品久久久久久亚洲色欲| 日韩操p| 先锋色眉乱伦资源| 狠狠激情综合狠狠操中文字幕| 人妻人人操| 极品色社| 东北老女人的激情视频| 330dv亚洲成年视频网| 91女优在线观看 | 欧美日韩1234| 欧美的性爱网站免费| 日韩欧美中文| 激情五月综合网| 人妻出轨一区二区三区| 蘋果手機免費看成人Av| 综合网少妇| 操逼无码操逼| 五月天玖玖资源站| 97久久久久久久精| 亚洲人妖网| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 在线欧美69V免费观看视频| 亚洲综合另类| 亚洲暴力强奸AV| 午夜婷婷| 亚洲污污网站| 98超碰欧美| 精品一区二区国产日韩| 欧美色999| 69视频入口| 久久久久亚洲av综合波多野制衣| 欧亚三区动漫| 九九亚洲色在线观看| 99999re| 国产精品乱人伊人网| AV九九| 99在线无码精品秘 入口黑人| 日本岛国黄色网址| 久久一二三级一一一| 天天综合网亚洲综合网| 国产精品直播在线观看直播| 日韩乱伦影音先锋| 91久青| 99精品在线| 国产亚洲精品久久久久小| 91Chinese在线| 欧美少妇性乱| 天天日天天干天天操| 久久AV无码网址| 欧美狠狠操| 日韩有码专区| 欧亚性爱视频免费看| 欧美天堂日韩三级国产传媒| 九九九九九九九九九国产精品| 亚洲无码免费看| 蜜色网色哟哟| 亚洲男人的天堂va亚洲男人社| 岛国视频免费在线观看| 97超碰天天爱天天爱| 色欲久久99国产精品久久久久久| a级成人毛片免费视频高清| 日日夜夜国产综合| 99久久精品国产系列| 激情第四色| 97超碰影音| 成人美女av| 91老熟女老女人国产老太| 人人看黄色视频| 91色综| 色欧洲| 色婷婷六月| 精品人妻一区二区三区蜜桃视频| 一本一道波多野毛片中文在线| 91新在线欧美| 国产无码久久高清| 男人的天堂2018.| 探花精品 一区二区| 大香蕉伊人色偷偷在线| 九色黄站| av天天在线观看| 人人妻人人爽一区二区三区| 99精品在线观看| 国语精品av| 自偷自拍的亚洲视频| 日韩91网| 熟女六十路| 亚洲高潮影院| 久久性爱视频| 久操精品| 精品人妻夜夜草| 欧美日韩黄片精品在线| 嗯嗯,好大,好爽,好骚 | 欧美精品xxxwww| 欧美少妇性乱| 免费亚洲黄色视频在线观看| 东北操逼| 六月色色| 亚洲色人| 骚熟女吞| 午夜高清成人在线视频| 欧美成人精品欧美一级乱黄一区二… | 青苹果影院男人的天堂| 欧美成人A√在线一区二区| 神马久久中文字幕| 国产色精品午夜大片| 日韩欧美麻豆 | 韩国三级色呦呦| 亚洲夜色在线| 国产不良强奸视频免费看| 中国熟女网站| 色爱国产| 婷婷色综合欧美日韩| 国产又大又粗又长视频在线| 欧美日韩操逼动图| 日韩欧视频| 北条麻妃99精品青青久久| 女同女同恋久久级三级| 亚洲图片视频小说| 99re6国产精品99re在线| 欧美色视频在线| 91天美免费| 中文字幕视频2区| 亚洲AV秘 精品久久老牛影视| 欧美综合中文| 超碰97玖玖爱| 男男H黄动漫啪啪无遮挡网站| 欧美 亚洲 在线| 男人的天堂2000| 99只有精品| 一区二区三区黄色片a| 91色夜| 亚洲和欧美裸体美女双飞视频| 99久久九九| 手机在线A片| 欧美在线啊啊| 亚洲s色图| 色婷婷成人综合| 在线99热| 久久国产乱子伦精品免费女人| 91爱| 丝袜美腿91| 97精品视频网站| 婷婷久草一区二区三区| 国产精品久久久久久久毛片1| 欧美亚洲情色| 超碰欧美97资源| 91高跟美女在线播放| 天美精品av| 国产三级电影免费观看| 亚洲伊人a线观看视频| 校园春色五月天| 日韩成人人妻网站| 久草热制服丝袜在线观看 | 欧美精品三区| 校园春色亚洲色图| 老鸭窝日丰县女人| 91综合国产精品| 中文字幕加勒比海高清无码免费视频| 国产亚洲精品自在线亚洲情侣| 手机在线A片| 日韩免费av片高清无码| 欧美亚洲今日在线| 视频在线观看青青99国产| 国产精品高潮久久AV| 2001天天操| 国内91熟女人妻丝袜天天精品视频在线| www国产天美久久久| 国产欧美日韩一区二区三区| 秋霞一集毛片观看| av影片在线观看不卡| 男人的午夜天堂| 精品美女少妇一区二区| 欧美成人精品一区二区男人蜜臀| 走光一区92下载| 绑缚麻绳人妻寝取完整版| 污到发麻的视频 国产| 国产欧美日韩女同性恋ww喷水精品 | 超碰 av 女人天堂| 一区中文字幕二区日韩| 日本精品88888888| 亚洲中文字幕有码视频一区二区三区| 亚洲天堂综合AV| 国产成人亚洲精品自产在线| 人妻激情偷乱视频一区二区三区 | 欧美性爱五月天| 99久久9| 污啪啪啪视频| 麻豆天美久久91| 日韩在线视频1234| 熟妇一区二区三区| 亚洲欧洲色情高清| 天天摸天天舔天天操| 夜夜青青无码影院| 我想要啊 啊 啊| 正宗无毛一线天嫩逼| 日本欧美不卡| 久久AV无码AV| 日本三级A片网站com| 凹凸久久人人| 天天干人妇| 91在线色综合| 一区中文字幕二区日韩| 天天综合网~91入口| 综合熟妇一区二区三区| 一区二区视频在看| 久久国产在线一区二区| 中文字幕一区二区三区高清| 国产情侣自拍在线播放| 天天爽爽爽爽| 色情亚洲日本成人| 国内外毛片在线观看| 少妇无码999| 亚洲天堂五月天国产| 日韩欧美国产一区二区三区四区| 日本精品高清一二区一本到| 污啪啪啪视频| 诱惑人妻欧美一区在线播放| 欧美色图片欧美色图| 欧美亚洲情色| 亚洲蜜乳av| 99色在线观看| 国产精品亚洲四五区在线观看| 色香91| 国产精品精品系列在线观看| 亚洲最新a在线观看| 25国产精品免费观看| 久久內射| 欧美se综合| 国产乱伦性爱区| www.色综合| 99啪啪| 98超碰欧美| 高潮毛片无遮挡高清免费| 欧美视频在线视频免费va| 欧美最婬乱婬爆婬性视频 | 日韩欧美麻豆 | 久草男人天堂| 欧美色图亚洲色| 狠狠色狠狠色狠狠五月| 日本超碰在线国产一区| 成人久久久精品| 一区在线精品中文字幕| 超碰人人超在线观看| 五月天伊人| 97中文热色| AA特级绝黄| 丰满少妇一区二区三区四区观看| 骚熟女AV网| 一区不卡在线观看av| 久久久九97| 88在线一区二区三区| 国产一级特黄大片处女| 97色插| 麻豆 美女 丝袜 人妻 中文| 青草青草久热| 人妻少妇三级| 午夜国产综合视频在线观看 | 精品国产乱子伦一区二区三区,精品一| 亚洲一曲日韩精品| 台湾佬中文娱乐自偷自拍| 亚洲无码日韩电影| 丁香九月激情啪| 日本熟妇色熟妇在线视频播放| 91AV入口| 欧美另类色| 五月天伊人网| 九九碰九九爱97超碰| 欧美亚洲清纯| 欧亚性爱啪啪| 天天射夜夜| 人人看欧美性爱| 少妇三P| 免费日韩黄片| 美国久久一二三四| 无遮挡又黄又刺激的视频| 旡码电影特区| 成人性交免费视频| 亚洲天堂区| 亚州男人天堂| 亚洲人成网www| 国产成人五月天丁香花| 大香蕉啪啪啪| 狠狠躁伊人中文字幕| 国产久久久久久久久一区二区 | 六月激情婷婷| av影院十区| 婷婷五月天av| 中文字幕一区二区无码成人| 99性爱| 青青草毛片| 日本裸体久久色噜噜| 久操91视频| 久久色一区二区| 自拍视频一区在线观看| 4虎在线视频| 蜜乳av首页| 亚洲高清91| 日韩人妻资源网| 午夜性生活av免费在线看| 国产久久一区二区三区野外在线| 亚洲精品国产精品成人| 久久男人网| 精品人妻一区二区视频| 人人摸人人舔一区二区| 日韩黄色成人性爱| 夜色91| 国产肏屁眼视频| 美女写真| 黑人性欧美| 91精品国产综合久久久蜜臀| 日本色色视频网站| 天天综合网合集91| 一本久道久久综合狠狠爱| 亚洲欧美天堂| 啊啊啊好大好湿| 国产在线视视频有精品| 久久激情婷婷| 夜夜嗷嗷一区二区| 国产精品久久久久久久久AV大片| 大香蕉中文网| 久久男人网| 操逼网免费无码视频| 久操97| 天天操美美| 五月丁香啪啪啪| 秋霞成人做爱| 亚洲猛交| 又摸又舔在线观看网站| 天天色综合天天操| 18禁看网站一区| 超碰这里有精品| 美女人妻色网站| 久久国内| 超碰精品日韩欧美国产| 99最新日韩偷拍视频| 美女啊啊啊啊啊啊啊| 中文字幕精品日韩中文字幕| 夜夜躁狠狠躁日日躁av| 久久99草| 偷拍 精品 另类 四区| 久久香蕉综合一本到3atv| 国产偷拍网站| 精品人妻高清麻豆av| 国产亚洲色婷婷99精品91| 日本久久99| 噜噜噜在线视频| 欧美爱爱97| 黄页网站成人免费| 性性欧美| 香一区二区三区| 亚洲成人久久美女| 一级做a爰片久久毛片图片| 神马麻豆福利院| 久久大线蕉一区| 啊啊啊啊一区| 国产乱伦性爱AV| 欧美黄片免费在线观看视频| 伊人国产成人av网站| 精品人妻少妇| 玖日综合网| 粉嫩小泬久久久一区二区| 午夜久久一区二区无码中出| 五月大香蕉| 亚洲一区二区精品福利| 26uuu欧美日韩| 国产一级舔足在线观看| 蜜臀久久久99久久久久 | 淫荡网址| 色图四区| 97人人爱人人乐| 97超碰伊人| 男人天堂久久精品不卡| 久久久久9999精品九九九| 久久一二三四五六七八九区区区| 91欧美偷拍| 三级AV入口| 秋霞一级鲁丝片A片| 神马久久久久久久| 欧美日韩久久精品爱爱| 天天影视91看看| 欧美人妻熟女在线| 97操综合| 人妻人久久精品中文字幕| 欧美洲精品一级| 亚洲怡春院| 老色鬼成人精品视频下载大在线观看| 天天色怡春院| 狠操91,com| 亚洲综合校园春色| 97超碰人操| 美女让帅哥通她小鸡鸡| 国产精品人妻无码久久久互動交流| 天天狂操夜夜狂日| 亚洲影视综合| 极品色| AAAA欧美日韩| 国产精品第一区第一页| 亚洲男人久久综合天堂| 国产一区自拍欧美日韩| 性在久久久久久| www网站黄| 性吧在线视频| 中文字幕一二三区| 啊啊啊啊啊啊啊好爽不要| 欧美色图 人妻| 久久久久幕乱码| 久久内射| 美女天天干|