国产成人欧美一区二区三区vr_久久国产精品人人爽人人爽_国产精品永久免费播放_肉欲啪啪a∨无码精品一区二区_国产超短裙jk丝袜在线_亚洲AV片高清资源在线观看_国模无码一区二区三区久久_国产成年人未进视频_中文字幕无码精品夜_一区二区三区在线视频免费看_亚洲成AV人片在线观看网址_日本激情视频高清综合久久_亚洲午夜视频福利_国内大量揄拍人妻精品視_久久国产精品福利二区三区

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(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è)商品詳情頁(yè)的接口。那時(shí)候數(shù)據(jù)庫(kù)的 QPS 已經(jīng)被壓到貼著地板走頁(yè)面每次刷新都要連表查十幾張表高峰期接口響應(yīng)時(shí)間直接干到三秒以上。后來把詳情頁(yè)那份聚合數(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ù)庫(kù)讀得快這個(gè)描述沒錯(cuò)但太淺。真把它放進(jìn)架構(gòu)里你得先明白它替代的是哪一段鏈路否則用著用著就會(huì)出現(xiàn)緩存加了一堆接口還是慢或者數(shù)據(jù)對(duì)不上這類問題。1.1 從一次接口超時(shí)反推它解決的問題回到開頭那個(gè)詳情頁(yè)的例子。當(dāng)時(shí)那條鏈路的耗時(shí)分布大致是這樣的數(shù)據(jù)庫(kù)連接池等待、多表 JOIN、結(jié)果集序列化、網(wǎng)絡(luò)傳輸。真正壓死駱駝的是 JOIN 和連接池爭(zhēng)搶因?yàn)樵斍轫?yè)的讀請(qǐng)求量是寫請(qǐng)求的幾十倍每次讀都要重新拼裝一遍數(shù)據(jù)數(shù)據(jù)庫(kù)的 buffer pool 命中率再高也頂不住這種重復(fù)勞動(dòng)。Redis 在這里的價(jià)值不是快而是把一次復(fù)雜的計(jì)算或查詢結(jié)果變成一次 O(1) 的內(nèi)存讀取。這兩者的差別在于數(shù)據(jù)庫(kù)快是因?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ù)庫(kù)的查詢能力全丟了后來要做按手機(jī)號(hào)模糊搜索、按注冊(cè)時(shí)間排序全得在應(yīng)用層手寫最后又灰溜溜地加回?cái)?shù)據(jù)庫(kù)查詢。所以第一件事要先劃清邊界。1.2 Redis 與關(guān)系型數(shù)據(jù)庫(kù)的職責(zé)分工我的劃分原則很簡(jiǎn)單數(shù)據(jù)庫(kù)負(fù)責(zé)真相Redis 負(fù)責(zé)效率。具體到落地下面這幾類數(shù)據(jù)適合放進(jìn)去讀多寫少、且允許短暫不一致的熱點(diǎn)數(shù)據(jù)比如商品詳情、配置項(xiàng)、字典表。有明確過期語(yǔ)義的數(shù)據(jù)比如登錄態(tài)、驗(yàn)證碼、短信頻控計(jì)數(shù)。需要原子性計(jì)數(shù)的場(chǎng)景比如庫(kù)存扣減的預(yù)扣、接口限流、文章閱讀數(shù)。需要跨進(jìn)程共享的臨時(shí)狀態(tài)比如分布式鎖、任務(wù)隊(duì)列、秒殺排隊(duì)。反過來下面這些我基本不往 Redis 里塞需要復(fù)雜條件查詢、聚合統(tǒng)計(jì)的業(yè)務(wù)主數(shù)據(jù)。單條體積超過幾十 KB 的大對(duì)象尤其是列表頁(yè)會(huì)批量取的。需要強(qiáng)事務(wù)保證的跨實(shí)體寫操作。生命周期極短且無復(fù)用價(jià)值的臨時(shí)數(shù)據(jù)。這里有個(gè)判斷口訣如果這份數(shù)據(jù)丟了業(yè)務(wù)能不能靠數(shù)據(jù)庫(kù)重建能重建的才適合放進(jìn)緩存層不能重建的說明它是真相的一部分應(yīng)該留在數(shù)據(jù)庫(kù)。還有一點(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ù)庫(kù)不擅長(zhǎng)的結(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è)線程輪詢處理成千上萬(wàn)個(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)頭部記錄了長(zhǎng)度和剩余空間好處是獲取長(zhǎng)度是 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)營(yíng)批量打標(biāo)某些用戶標(biāo)簽數(shù)沖到 200整個(gè)實(shí)例內(nèi)存直接漲了 40%。2.3 持久化RDB 與 AOF 的選擇邏輯內(nèi)存數(shù)據(jù)庫(kù)最怕的是斷電所以持久化機(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ǔ)你在應(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)景比如詳情頁(yè)。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ù)別讓它無限增長(zhǎng)。有個(gè)容易忽略的細(xì)節(jié)String 存數(shù)字時(shí)可以直接用 INCR/DECR 做原子計(jì)數(shù)這是做限流、庫(kù)存預(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)幾萬(wàn)規(guī)模的集合還行上百萬(wàn)就要考慮用別的方式了。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ī)模別上百萬(wàn)排行榜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ù)庫(kù)可能被惡意利用緩存擊穿熱點(diǎn) key 過期瞬間大量請(qǐng)求同時(shí)打庫(kù)單個(gè)熱點(diǎn)緩存雪崩大量 key 同時(shí)過期或?qū)嵗礄C(jī)數(shù)據(jù)庫(kù)瞬間承壓全局性穿透的本質(zhì)是緩存里沒有數(shù)據(jù)庫(kù)里也沒有查詢永遠(yuǎn)落空緩存形同虛設(shè)。擊穿是緩存里本來有剛好過期了一瞬間所有請(qǐng)求涌向數(shù)據(jù)庫(kù)。雪崩則是更大范圍的集體失效。這三者的共同點(diǎn)是把數(shù)據(jù)庫(kù)當(dāng)成了兜底所以核心思路都是在緩存層就把請(qǐng)求擋住或者分流。5.2 穿透與擊穿的落地實(shí)現(xiàn)對(duì)付穿透最直接的辦法是緩存空值。查數(shù)據(jù)庫(kù)沒查到也往 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ù)庫(kù)連接池限流避免被打死關(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ù)庫(kù) CPU 直接打滿。后來改成預(yù)熱時(shí)按7200 random(0, 1200)設(shè)置再?zèng)]出現(xiàn)過集體失效。5.4 雙寫一致性該怎么做緩存和數(shù)據(jù)庫(kù)同時(shí)寫一定有短暫不一致關(guān)鍵是控制窗口和最終一致。業(yè)界主流是 Cache Aside 模式讀的時(shí)候先讀緩存沒有再讀庫(kù)并回填寫的時(shí)候先更新數(shù)據(jù)庫(kù)再刪除緩存。為什么是刪緩存而不是更新緩存因?yàn)椴l(fā)更新時(shí)兩個(gè)請(qǐng)求的更新順序可能和寫庫(kù)順序不一致導(dǎo)致緩存里存了舊值。刪除操作更安全下次讀的時(shí)候自然回填最新值。但先寫庫(kù)再刪緩存仍有極小概率出問題讀請(qǐng)求在寫庫(kù)之后、刪緩存之前讀到舊值并回填。常用的補(bǔ)救是延遲雙刪——寫完庫(kù)刪一次隔幾百毫秒再刪一次。更徹底的方案是訂閱數(shù)據(jù)庫(kù)的 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ì)掃描全庫(kù)并列出每種類型最大的 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í)千萬(wàn)別用 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 *全庫(kù)掃描生產(chǎn)禁用、FLUSHALL清庫(kù)、大集合的SMEMBERS、大 ZSet 的ZRANGE全量取。這些都在主線程執(zhí)行一次就能把整個(gè)實(shí)例卡住。另一個(gè)隱蔽的原因是持久化。開著 AOF everysec 的情況下如果磁盤 IO 跟不上fsync 會(huì)阻塞寫入??梢酝ㄟ^INFO persistence看aof_delayed_fsync這個(gè)指標(biāo)如果它一直增長(zhǎng)說明磁盤扛不住了要么換 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命令按前綴遍歷千萬(wàn)別用 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
返回資訊列表
欧美欧美啪啪视频| 日韩国产品视频中文字| 日韩本不卡视频在线观看 | 欧美激情高清性猛交| 人妻出轨一区二区三区| 女人午夜视频777| 亚洲色图欧美色图另类图片| 东北操逼| 国产综合久久久鬼色| 日韩人成网站在线播放| 国产精品96| 欧美日韩亚洲五月天婷婷| 久久老子无码午夜伦不卡| 亚洲97在线观看| 艳尻美人妻| 人人操人人狠狠操| 久久精品毛片免费不卡| 久久亚洲欧美中文字幕国语| 亚洲色人| 欧美色九九| 天综合网欧美| 佐山爱中文字幕| 久精品无码av一区二免费国产在线观看 | 99久久网站| 亚洲**2021在线观看| 风骚少妇视频中文字幕| 欧美激情一区二区| 国产婷婷一区| 亚洲av夫妻操穴网| 亚洲精品视频在线播放| 家庭乱伦网站国产| 国产不卡免费在线视频| 四虎影视永久在线免费| 国产丝袜美女在线一区| 日本人妻中文字幕精品| 日韩AV无码网站| 精品国产乱码久久久A| 日日干夜夜骑| 日日碰视频网| 97免费在线| 久久天堂网| 高潮综合网| 中文字幕超碰CAO| 99精品网站| 中文字幕一区二区三区人妻少妇在线| 69超碰综合| 91人妻爽爽人人做人人澡| AV综合中文字幕干| 日本九九九九| 欧美嗯啊……在线观看视频免费| 国产成人主播| 亚洲九九视频| 丰满人妻一区二区三区| 婷婷色色五月天福利| 97欧美视频| 欧美影院一区二区三区| 国产毛片久久久久久久| 久久精品人体AV| 色色婷婷丁香| 中文字幕91综合| 亚洲天堂另类小说男人| 老熟女熟妇| 在线情色电影 91大| 亚洲精品蜜桃久久久久久久| 久草线上视频免费看| 五十路人妻在线| 欧美热图99| JuliaAnnXXX888| 精品久久97| 美女黄站| 强歼乱伦资源网| 天天色播亚洲综合网站| 久久五月份| 色欲人妻一区二区在线| 国产91专区| 天天综合网在线91| 精品久久久久久中文字幕视频免费| 欧美亚洲今日在线| 不卡av在线中文字幕| 韩国黄片aaaa| 色综合98| 久久激情四射婷婷丁香五月天| 97日韩欧美亚洲| 免费人成毛片乱码| 午夜影美女日鸡鸡天天视频国产| 婷婷综合在线| 97硬碰| 国产精品制服丝袜中文字幕日韩一区二区三区 | 成人精品一区二区91毛片不卡| 粉嫩不卡一区二区性爱| 九九玖玖精品| 校园春色五月天| 色天使亚洲综合在线观看| 欧美十八禁在线看| 97视频900| 亚洲欧洲日韩中文字幕一区| ..日韩av毛片精品久久久| 自偷自拍的亚洲视频| 欧美老熟另类| 欧美春色| 色久桃花影院在线观看| 欧美日韩99精品麻豆传媒| 91 丝袜在线观看| 香蕉欧美| 91粉芽高清在线一区二区| 超碰97在线色男人??| 久久久久亚洲| 91 刺激在线| 国产精品久久久蜜臀| 9久9久| 岛国在线免费视频| 亚洲欧洲美腿丝袜| 东北女人高潮视频| 人人透人人操| 久草草一二三四区久久| 九九九久久久| 99精品无码| 99久久9| 免费观看国产小粉嫩喷水精品午| 日本不卡二三区| 九久精品| 69超碰综合| 92大香蕉| 26uuu国产| 亚欧美综合网。| 国产精品电影大全| 色月天AV导航| 国产一在线观看| 久久久久久久久久久97| 亚洲欧美在线丝袜| 亚洲色吧网| 大香蕉淫人网| 大香交伊人网| 国产精品9999| 亚洲精品蜜桃久久久久久久| 亚洲 自拍偷拍 欧美| 97se综合网| 黄片www视频免费| 加勒比大香蕉视频在线| 福利视频网站| 亚洲91网。| 精品欧美老熟女一二区| 超碰97男人| 免费1级a做爰片观看| 久久蜜色情在线视频xxx免费观看| 精品999999| 加勒比AV网| 亚洲密乳AV| 天天综合色电影| 亚州性色| 色盈盈影院| 无码一区二区精品视频久久久春药| 久久本道| 亚洲无线码一区国产欧美国| 无人区高清电影免费观看一区二区三 www.qmcai2.com | 婷婷在线精品| 伊人网青青| 成人热久久精品| 久久国产免费激情视频| 欧美亚洲韩国视频十五区| 超碰人人干| 99re98| 国产AV人人 夜夜人人澡| 中文字幕精品一区二区精| 男人天堂无码| 亚91亚洲网| 亚洲国产精品无码AV在线| 欧美综合自拍亚洲综合图| 夜间福利片1000无码| 美女天天干| 红杏大香蕉| 看免费的黄片| 男人天堂新在线| 国产高清不卡视频| 亚洲无线码一区国产欧美国| 青春草莓视频在线观看网址| 蜜臀一二三区| 欧美天堂日韩三级国产传媒| 静品嫩模一区二区| 国产丝袜欧美在线视频| 69国产对白刺激| 91欧美综合在线| 日韩人妻少妇 一区二区三区| 欧美极品美女aaaaaa级黄片| 91伊人久久在线| 激情丁香五月| 大屁股xxxxx| 两女互慰AV高潮喷水在线观看| 久久久青青草| 本道在线| 区自美91| 欧美情色男人的天堂| 欧洲站一级二级三级h| 亚洲综合小说另类图欧美视频激情小说色五月天 | 97美日韩视频| 亚洲综合99999| 中文字幕av乱伦| 国产成人在线观看网址| 亚洲 欧美 日本 国内 首页| 久久大线蕉一区| 亚洲av在线免费观看| 新久久AV| 日韩人妻丝袜中文字幕| 国产女人视频三四五区| 九九九999久久久网站| 日韩女优中文字幕| 丁香五月激情网| 国产精品一二三在线看| 天天激情干| 欲香欲色| a亚洲欧美色欲| 人妻娇喘 激情视频| 久草男人天堂| 日韩精品国模| 99久在线精品99re8a| 后入 亚洲 美女 射| 91精品黄在线观看| 无码国产精品久久久久| 免费精品福利在线观看| 国产 亚洲 丝袜 制服| 99国产精品视频尤物| 人人妻人人爽一区二区三区| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 日本色色的视频| 黄色AAAAA欧美| 亚洲成人无码影院| 黄色AAAAAAAAAAA大片| jk白丝没脱就开始啪啪| 黄色一级视| 中文字幕 国产 精品| 丁香六月东京热| 欧美色性爱| 无码人妻丰满热妇又大又粗| 亚洲黄网在哪免费看| 日韩性爱再线视频| 这里只有精品久久| 亚洲成人色情五月天丁香花| 国产乱弄免费在线视频。| 久久一区,青青青青草视频在线播放| 中文字幕视频2区| 艾草av| 欧美另类自拍 | 热99re69精品8在线播放| 一本一道久久综合久久| 国产精品夜夜| 综合欧美亚洲| 欧亚性爱在线视频| 国产欧美亚洲精品a第2页| 熟女乱伦二区| 九九玖玖精品| 96久久久精品| 天天伊人| 亚洲 欧美 制服 另类 自拍| 欧美国产日韩清纯唯美| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | av一区二区三区四区五区久草臀| jiujiujiujingpin| 青青草大香蕉视频| 亚洲黄片免费在线播放| 99久久9| 抽插爽| 久久久久久久久女黄| 九九九九九精品| 国产最火爆久久国产网站网站| 啪啪免费| 超碰国产情侣自拍网| 农村妇女精品一区二区| 人妻91少妇| 蜜乳视频网站| 116美女午夜| 黑人精品久久97| 欧美劲爆第一页| 欧美色www亚洲国产阿娇要播| 911av网站免费观看| 婷婷五月天网| 国产精品另类一区大香蕉| 精品一区二区三区国产| 熟女六十路| 亚洲中文制服诱惑| 人人操人人精品影片| 精品日韩人妻精品一二三区| 久久五月天婷婷| 亚洲淫色网中文| 怡春院久久| 亚洲三区视频| 啊啊啊啊啊啊好湿好爽视频| 日日操夜夜操天天操免费观看麻豆| 国产日逼视频| 亚洲五区熟女| 操国产逼| ss久久| 欧美人妻制服| 殴美牲| 丝袜 中出 制服 人妻 美腿 中文字幕| 中文字幕国产| 日韩 成人 有码| 成人国产视频在线观看| 亚洲91少妇| 亚洲素人网| 日逼视频日本| www.男人天堂| 日韩精品碰碰| 久久久久9| AV乱伦专区| 嗯啊不要在线观看嗯啊| 麻豆一区二区三区在线看| 中文字幕美女91| 亚洲丝袜色| 69久久| 四色永久成人网站| 亚洲九九视频| 人妻少妇久久久| 欧美人妖内射| 俺去也婷婷| 少妇高潮九九九九九九九| 强奸乱伦av电影| 91九色丰满高潮| 黄色一级视| 另类欧美| 99久久久久| 日本免费二区三区| 丰满人妻-区二区三区免费| 九九九999久久久网站| 色欲天天综合网| 狠狠97| 丁香五月综合| 日韩免费在线观看不卡| 精品久久99| 久久精品国产精品一区| 97资源欧美| 日本免费专区| 2017天天拍大香蕉| 好舒服视频| 亚洲αv一区二区三区| 久欲AV| 女优免费一区二区永久| 17c嫩草51久久91嫩草| 久久久性爱视频| 日韩一级特黄av毛片| 国产日本顶级一区二区三区| 99热超碰| 播播亚洲小说亚洲| 亚洲欧美另类激情小说| 国产天美传媒精品| 91粉芽高清在线一区二区| 亚洲一区日韩精品中文字幕| 久久久久婷婷精品av电影| 日韩欧美成人性爱在线| 国产精品农村妇女| 久久宗合亚洲| 男人的天堂亚洲| 天天干天天燥| 淫骚熟女一区二区三区| 成人在线日韩| 伊人影院综合是一个与深夜成人在线| 欧美激情专区| 精品一区二区2| 久久综合日韩亚洲欧美| 国产亚洲国产超碰| 亚洲成人精品在线一区| 99操逼| www.高清无码诱惑一区.com | 超碰97导航| 亚洲一区二区三区四区视频| 肏逼视频日本| 暴力av在线| 日韩欧美成人大香蕉| 51一区二区三区| 国产精品白领在线观看| 97精品一区二区视频在线观看| 啊啊啊啊啊操我视频| 久9视频| 东北丰满熟女国产一区 | 久操网视频| 国产又黄又粗又猛大片| 91肉丝| 91操熟女视频| 男人天堂网手机版婷婷| 天天干天天日天天射黄色片| 青青草九九九九九| 9久久精品| 欧美日韩在线国产在线| 少妇3P性爱自拍| 试看日韩黄片| 久久无码一区二区二三区性色| 久久久性爱| 国产av色网| 91少妇通奸网站| 97色色,97综合| 97超碰逼| 欧美在线官网| 美女露胸露尿口| 激情六月天| 柠檬AV导航| 超碰成人免费| 日韩三级视频一区二区三区| 亚洲色图激情小说| 人妻夜夜爽天天爽麻豆三区网站| 欧美日韩m| 操逼不卡中文字幕| www.国产高潮精品| 亚洲五月婷婷| 激情五月天视频| 99日精品欧美国产| 五月婷婷AV| 日韩无码成人电影| 操人妻少妇中文| 九九热精品在线| 操人91| 国产丝袜视频| 厕所偷拍在线| 亚洲永久AV无码精品秋霞| 99九九久久| 99精品人人爽| 骚货操死你| 亚洲欧洲综合| 17c嫩草51久久91嫩草| 亚洲无码精品AV久久久| 国产精品黄色三级av| 无码操逼网| 大香蕉一线视频| 9色在线| 亚洲综合一| 嗯嗯啊啊好大好爽| 欧美 亚洲精品首页| 超碰地址久久| 伊人精品久久网站| 99精品在线播放| 欧美日韩夜夜| 一区=区三区视频| 成人片视频| 久久精品超碰| 国产精品69人妻无码久久久| 五月天精品| 夜夜操91744565| 国产中文日韩欧美一区二区三区人妻丝袜美腿| 欧美三四五区| 久久成年片色大黄全免费网站| 人妻一区视频| 国产精品一区人妻精品阁在线| 国产精品色哟哟| 天天爽入口| 超碰97男女| 久久这里是精品| 九热视频| 加勒比伊人综合| 91内射| 每日更新AV| 久久综合久久综合人久久夜精品| 久久激情四射婷婷丁香五月天| 精品一级毛片在线观看| 无套内射性感少妇视频| 91久久18禁| 天天做天天爱| 国产视频不卡在线观看| 欧美另类自拍| 日本熟妇自慰性高潮一区二区三区| 日韩91网| 亚洲最大网站av| 欧美精品丝袜久久久中文字幕| Julia Annxxxxx| 人人操人人干xxx| 日韩999| 91精品免费| 久久精品一区二区一8| 天天干人妇| 欧美午夜视频| 欧美偷拍区| 亚洲AV无码久久久国产精品| 蜜桃传媒一区二区亚洲| 欧美+日产+中文| 日韩女模中文造逼| 后入福利视频| 国产91精品福利在线| 色九月综合| 蜜臀一区二区三区在线| 久久99操天天日| 丁香7月婷婷| 欧美强奸一区二区诱惑| 久久↗↗| 黄色AAAAA欧美| 69超碰综合| 91黑丝操| 日本一级二级三级网站| 亚欧操逼片在线观看 | 黄页视频网站野外| 亚洲丝袜色图| 午夜国产综合视频在线观看| 色香阁在线| 国产偷人伦激情在线观看| 好湿好紧好爽 视频| 久久久久久九| 97一区二区蜜臀| 精品蜜乳AV免费观看| 91欧美偷拍| 不卡中文字幕aⅴ在线| 91嫩草欧美| 国产成人综合在线播放| 91无摭挡| 六月婷婷色综合| 9丨久久九九九| 午夜精品久久久久久久男人的天堂| 欧美日韩人妻精品系列一区二区三区| 成人资源中文字幕在线观看天天| 91激情国产| 在线视频免费播放一区| 性色av一区二区| 欧美人与性动交a美精品| 97超碰超欧美。| 色婷婷亚洲婷婷| 免费试看60秒| 人人爽人人精品乱人伦AV| 91干熟女| 狠狠久久手机视频精品| 大屁股熟女一区二区三区| 久久五月丁香| 精品午夜福利| 樱花草社区www中国| 久久夜黄色无码A级大片| chaopen97久久| 天天色悠悠激情| 国产久久成人| 日本三级精品| 西西美女视频网| 影音先锋日本一区二区| 青青草视频爽一爽| 久久鲁干| 91天堂网| 欧美色图小说综合 | 人妻天堂三区| 亚洲第91页 | 国产狂喷潮在线精品| 精吧天堂| 99爱久久视频频| 黄片色区软件| 伊人天天久久动态图| 亚洲 综合 第一页| 天堂av2019| 伊欧美综合视频| 久久精品国产亚洲av水密被窝| 精品久久久久瑟瑟| 亚洲人妻AV| 日逼视频日本| 日本成人免费一区二区三区| 操久久久久| 有码免费观看| 一区二区三区在线资源| 亚洲av影院在线观看| 中国农村熟妇毛片视频| 91n处女在线观看| 加勒比海成人视频网| 2020中文字幕| 99热超碰在线| 天天看天天在线精品| 哑洲在线| 免费的av网| 亚洲1区| 5月婷婷6月六月丁香| 十八禁啪啪视频| 加勒比综合88| 91色夜| 久操免费视频| 九九九国产精品| 综合性视频99| 日韩熟女精品无码专区一区二区| 色妺妺在线视频| 日本色婷婷| 欧美综合区| 一区二区三区免费岛国片| 亚洲无码超碰免费| 国产Av超碰| 激情 欧美 亚洲 小说| 午夜精品久久久久久久久久蜜桃 | 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 午夜福利免费福利视频| 国产精品毛片?v一区二区三区| 黄骗免费网站| 日本影视久久免费| 男女啪啪网站免费视频| 国产亚洲精品A在线观看下载| 91亚洲色人| 激情干在线| 992这里有精品| 男女91| 五月天亚洲网| 日韩大香蕉| 大香蕉乱级| 久久精品国产亚洲AV无码电影| 五月婷久久| 久9久| 91国产丝袜美女| 欧美天天综合网版| 亚洲图片日本AⅤ欧美在线| 亚洲最大的综合性av| 男人夜色天堂ss| 夜夜福利| 97资源久久| 色网在线视频观看免费| 欧美一级三级| 日韩欧美天天爽爽爽天天爽爽| 丝袜美腿91| 色黄污美女啪啪啪免费网站| 亚洲黄网在哪免费看| 91在线美女| 色婷婷一区二区三区久久午夜成人不| 亚洲无992tv| 中国乱伦一区二区| 日韩AV色图| 啊啊啊轻点在线观看| 久草尤物| 人人色97| 久久中久文96| 麻花豆传媒剧国产MV出差| 亚洲男人的天堂亚洲| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 熟妇女人妻呻吟久久AV| 欧美人与动性人交a| 神马久久69| 色婷五月天| 肉动漫无遮挡h在线观看| 99色日| 中文字幕97色| 亚洲AV噜噜狠狠网址蜜桃动漫| 最新中文字幕精品在线| 色色99| 久久、1234| 视频二区美腿制服人妻欧美| 天天躁日日躁AAAAXXXX国产 | 亚洲综合精品国产一区| 久久111| 亚洲人天堂| 狠狠色婷婷7777久| 日本五区不卡| 日韩人妻免费精品| 日本孕妇孕交| 免费看黄视频亚洲网站| 欧美视频激情久久久久久| 中国一级αV| 欧美性天天影视| 友优传媒精品在线一区二区| 日韩性爱高清免费视频| 日韩专区久久久| 久久久久国产精品喷潮免费观看臀| 97色色色综合网站| 家庭乱伦国产精品| 久久久精久久久| 中文字幕欧美丝袜07资源| 青青草日韩无码| 欧美的精品的视频| 中文字幕五区| 精品人妻一区二区三区四区不卡在| 狠狠色婷婷7777久| 亚洲美女精品九九视频| 亚洲综合97中文网| 人人看黄色视频| 这里是精品| 黄人人操人人操| 夜夜爽夜夜操| 精品少妇后入一区二区三区四区人妻巨乳 | 亚洲九九九| 狠狠躁AV| 中文字幕黄片在线| 亚洲色资源| 色欲日韩欧美在线一区| 欧美日综合| 蜜桃视频精品一区二区| 中文字幕丰满人妻日本| 大吊色| 美中日韩无码| 精品免费囯产一区二区三区| www.狠狠干.coom| 日本孕妇一区二区视频操逼免费看 | 偷拍综合网| 97色视频在线| 国产福利影视| 91色图| 日本精品性生活久久久| 伊人女女资源在线观看| 97在线免费看视频| 久久精品72| 免费精品福利在线观看| 99re在线| 天堂亚洲精品久久老牛| 色婷婷丁香五月天| 欧州一区二区三区四区| 精彩久久中文| 亚洲天堂人妻一区二区| 最新三级网址| 91亚洲电影| 欧美大色交| 精品一区二区三区蜜桃臀赵总 | yazhousetuoumei| 天天天天天天天天天天干美女| 全国男人天堂网| 国产精品久久久蜜臀| 熟女视频久久| 久久久久亚洲三级电影| 欧美综色欧| 青女在线| 九九久久久久久爱| 婷婷天堂站| 日韩无码操逼片| 人妻熟女一区二区在线视频| 激情文学欧美| 人妻AV在线| 高清一区AV无码| 大香蕉人妻久久| 中文字幕第23区| 97超碰天天| 中文字幕精品一区二区精品| 国产大学生口爆吞精合集| 97aiaiai| 人妻夜爽夜夜爽| 国产日韩欧美| 熟女自慰久久久| 久7色| 91黑人无码激情在线| 无码 黑人一区二区三区| 熟女人妻一区二区三区| 9美女超碰在线免费观看| 18禁在线视频| 丁香九月婷婷| 嗯嗯不要 视频| 久草成人影片| 男人天堂免费| 亚州欧美总和| 少妇色综合| 伊人伊人LD| 超硑97精品| 久久久久久久少妇| 天综合网| 91网站18在线观看| 清柠毛片| 五月婷婷激情综合| 99色综合| 成人丁香五月| 五月天色色色| 在线国产探花| 五月婷婷久久综合| 婷婷五月天激情网| 超碰在线91| 99这里只有精品| 人妻久久久| 蜜臀久久99精品久久久久久久久| 色婷婷影视| 99热这里| 大香蕉十区| 99抽插| 亚洲成人色情五月天丁香花| 亚av顶级裸体一区二区三区四区五区| 妇人噜噜| 久久美国毛片| 极品人妻少妇综合| 60秒不遮不挡| 日本淫乱女一区二区三区视频| 无码人妻精品酒店| 成人精品在线免费视频| 久久精品国产精品一区| 国产美女销魂在线观看不卡| 国产一级137片内射麻豆| 亚洲一区二区三区不卡国产欧美| 四虎影视永久在线免费| 午夜精品探花| 日韩另类色图| 熟女自慰久久久| 国产精品久久久久久夜夜夜夜| av日韩中文字幕| 天天看片青娱乐| 国产福利电影| 91狼人| 日韩美脚一区二区网站| 99综合自拍| 99最新日韩偷拍视频| 日本媚薬中文字幕在线| 熟女激情综合网| 久久九九视频九九视频| 久久五月天婷婷| 色诱中文字幕| 综合熟妇一区二区三区| 啊啊啊好想要| 色综合av男人天堂| 亚洲中文字幕97久久精品少妇| 宅男91视频在线播放| 亚洲熟女乱综合一区二区三区| 亚洲天天天| 成 人 A V免费视频在线观看| 亚洲日韩美国人妻| 综合色图亚洲欧美| 亚洲性少妇| 亚洲天堂男| 99性爱在线观看| 啊啊啊啊啊好多水| 狠狠操夜夜| 欧美性天天影视| 人妻五十路在线| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 色色色999| 色爱欲亚洲| 澳门色噜噜色噜噜色噜噜色噜噜色噜噜| 国产av激情无码久久天堂| 啪啪啪大香蕉| 男女性扦B| 老司机深夜18禁污污网站| 成人欧美一区二区三区黑人一| 亚洲色图 图片| 国语对白露脸XXXXXX| 在线99热| 天天天堂影视日韩亚洲91| 91狠狠综合| 亚洲成人久久美女| 96久久久精品| 国产午夜精品理论片一二三区区 | 男人天堂导航| 日韩国产成人自拍视频| 啊操爽品善一区二区三区| 亚洲天天操| 另类小说五月天| 亚洲少妇自拍中文字幕懂色| 18禁精品网站在线看| 97干色天堂| 欧美大片91| 天天爽天天爽| 97久久久久| 亚洲中文字幕精品久久久久久直播| 日本黄色裸日本黄色裸体| 国产一级内射高清视频| 99久在线精品99re8热| 国产热av| 综合久久六月久久婷婷| 18禁久极品美女久久哦哟呀!| 天堂69亚洲精品中文字| 中文字幕视频在线观看一区二区| 日韩91网站| 激情六月婷婷| 97在线免费看视频| 又大又白奶子| 91日韩| 亚洲欧洲小说图片视频| 欧美中文综合| 中文字幕二区日韩天堂| 日韩情色一区二区| 欧美图片偷拍| 亚洲人妻在线精品| 亚洲狼狼干综合1| 伊人网青青| 北京美女一区二区| 高清无码一区二区三区| 欧美成人色| 国产操逼逼网| 亚洲成人在线资源| 天天日天天操心| 俄罗斯及免费在线看| 视频在线观看一二三区| 欧美在线永久天堂| 欧美日韩人妻婷婷一区| 国产又粗又长又爽又色| 熟人人妻少妇精品久久| 中文字幕精品一区二区精品| 欧美一级在线观看成人| 操一区| www网站黄| 夜色综合| 欧美日韩一干二干| 亚洲精品中文字幕一区在线视频 | 日韩免费av片高清无码| 黄色视频60分钟| 九九热精彩视频| 日韩女模中文造逼| 91麻豆天美| 中文字幕AV片| 伊人色综合网| 午夜福利激情在线视频| 91美女高潮| 亚洲无套久久嗯嗯| 国产一区二区三区免费视频在性观看| 久久精品99久久久久久| 丁香六月天| 一级特黄aaa大片在线观看成人一级片在线观看 | 国产美女激情| 亚洲超碰在线| 免费看片黄| 91痴汉| 91亚洲欧美色图| 色爱国产| 日韩高清黄片| 亚洲 欧美 第一页| 青草香蕉网| 99久久综合| av天堂天堂av日韩| 日韩一二三区| 骚货 中文字幕 av| 午夜性| 五月开心网| 亚洲国产欧美另类自拍| 亚洲97超碰| 另类成人首页一区| 久草视频制服诱惑| 91狠狠综合久久久久久| 亚洲日韩美国人妻| 亚洲精品国产精品成人| 精品国产乱码久久久久久久久久毛片| 精品国产99| 国产精品麻豆成人AV艾秋| 日本欧美一区二区三区免费| 亚洲精品97| 九九精品网| 校园春色中文字幕AV| 久久久不能久久久久| 色婷婷成人| 97欧美性爱| 欧美精品23| 日韩欧美加勒比| 久久久久久中文| 伊人伊人LD| 久久久噜噜噜久久久| 丁香五月色| 国产精品岛国片在线观看| 国产综合在线视频网站| 九九综合九九综合| 天堂亚洲精品| 操少妞在线视频| 亚洲色图国产另类| 日韩国产十八禁| 九一屌逼| 国产视频一区二区三区久久亚洲天堂| 五月综合色| 狠狠色婷婷777| 日本中文字幕在线视频| 天天做日日做天天欢。| 欧美一级特黄淫片在线观看| 亚洲av无码国产精品字幕| 国产精品视频内谢女人| 中文字幕一区二区视频在线观看| 欧成人精品H无码| 欧州91高潮| 天美传媒AV在线| 97av在线观看| 男人的天堂 在线一区| 97视频在线播放| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 麻豆AV一区二区天美传媒| 男人天堂久久精品不卡| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 欧美综合综合| 校园激情狠狠四射| 一区二区三区精品视频| 欧洲一级性爱视频在线观看| 日韩一区二区三区四区五区| 天天色播亚洲综合网站| 日韩中文字幕二区| 色婷婷成人| 亚洲 欧美 中文 日韩超碰| 刺激性视频黄页| 欧美一二在线| 欧美一级专区免费大片 | 国产成人无码网站在线视频| 开心五月激情网| 亚洲91少妇| 欧美亚洲影视| 久久久久久裸体| 亚洲午夜精品久久久中文影院| 欧美日韩欧美| 久久久久久网址| 一级二级三级黑人无码| 色色色色日本| 色色激情| 国产大片精久久久久久| 91激情综合| 欧美狠狠狠| 国产二区三区免费视频| 免费看国产曰批40分钟怎么下载| 久久精视频美日韩在线视频| www.夜夜| 91熟女综合| 91日韩网站| 狠狠操,使劲操| 天天做日日爱夜夜爽| 男人的天堂2010| 97 超碰 人人做 人人爱| 九九九九九九九| 亚洲有码视频二区| 国产精品视频麻豆入口| 天天爽天天| 亚洲中文字幕日产无码久久| 天天综合91入口| 亚洲一区日韩精品| 色婷婷丁香| 双插在线| 超碰人妻97| 日韩人妻中文视频| 99re6国产精品99re在线| 91欧美巨乳| 午夜男女爽爽大片免费观看| 在线国产一区二区av| 欧美色图中文字幕| 97精品全部| 密乳AV免费观看| 超AV色女| 欧美亚洲系列| 干干干天天| 亚洲s在线观看| 91 亚欧| 小视频玖玖| 不卡人妻少妇精品毛片一区23区视频| 五月天人妻综合| 青草草免费网站av| 激情自拍 校园春色| 97操97干| 蜜乳AV一区二区三区四| 五月天伊人| 999综合网| 天天日夜夜爽| 国产丝袜高跟美女av免费观看| 男插女青青影院| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 校园春色综合| 超碰久久.com| 另类小色呦| 九七毛片九九毛片| 99亚洲精品| 欧美亚洲丝袜美女电影| 好吊色综合| 99热官网| 老熟女综合网| 日本日皮视频逼| 色五月激情AV在线| 伊人久久在线视频观看| 熟女中出视频| 亚洲无码 国产无码| 亚洲91av| 大肥女高潮bbwbbwhd视频| 天天插天天干| 78超碰| 麻豆亚洲Av成人无码一区精品| 熟妇人妻丰满久久久久久久无码| 欧美久久伊人| 欧美性五月| 日韩AV熟女乱伦| 欧美,日韩,中文,另类| 热99这里只有精品| 久久久久久免费电影| 日韩精品永久在线观看| 超碰社区97| 大香蕉五月天婷婷| 5252色欧美在线男人的天堂| 亚洲欧洲国产综合av| 精品少妇高潮久久| 九九综合色| 丁香激情网| 91制服丝袜中文字幕| 玖玖人人爱| 少妇厨房愉情理伦片bd在线观看| 九九久久国产精品| 日本免费一级AAA大片器| 欧美日韩人妻婷婷一区| 日韩欧美国产高清视频| 男生通女生屁股| 日日日日日| 九九九精品| 日韩钢筋无码高清啾啾啾| 91碰超| 亚洲激情深爱文学小说网站| 国产精品亚洲美女久久久久| AV色女综合| www鬼畜国产男人的天堂| 人人干人人操人人爱| 男人的天堂在线| 久久久97| 2023天天操夜夜操| 日日妻色网| 九九热最新| 久久成人国产精品| 久久成人网站| 一二三四免费视频| 一区二区三区亚洲| 亚洲午夜蜜臀| 手机av天堂久久久久| 久久精品福利影院| 色综合 加勒比| 熟妇熟女亚洲天堂网| 秋霞网—男女啪啪亚洲免费体验区| 久久成人午夜狠狠| 亚洲熟妇自偷自拍另欧美| 国产精品一区av在线| 欧美丝袜亚洲| 天天综合网91入口| 自慰白浆在线观看| 牛牛AV人人夜夜澡人人爽| 欧美高潮| 暖暖精品二区三区观看| 熟妇操花| 蜜乳成人AV| juliaann丝袜| 色亚州人久干视频在线观看免费版| 日韩精品99999| 国产A v无码专区| 久久久精品网站| 免费草草草草草视频| 91女神在线视频| 精品久久久亚洲AV成人网站| 操操操五月天婷婷丁香影院| 精品人妻一区二区三区四区| 超碰人妻中文在线| 日韩天美| HEYZO高无码国产精品227| 国产精品久久妻无码网站| 怡红院成人视频| 国产乱子伦一区二区三区免看| 久操黄色视频| 国产精品青草综合久久| 国产亚洲精品农村妇女| 视频一区二区免费在线| 日韩大香蕉AV影片| 伊人在线大香蕉视频久久| 亚洲av热热色| 色噜噜人妻av 中文字幕| 99操视频| 国产精品久久伊人| 99精品视频在线观看免费| 国产精品福利资源在线尤物| 97综合激情| 999色欧美中文字幕| 九热超碰| 91欧美综合在线| 91网站18在线| 欧美大香蕉97| 十八禁网站在线| 色婷婷五月天| 欧美99热| 天天看,天天做| 国产精品蜜乳AV| 欧美日韩 强奸乱伦| 操日韩第| 无码丰满熟妇一区二区浪潮AV| 人人爱人人乐人人操| 97国产超碰| 国产97在线视频| 中文乱码字幕观看视频| 97久久超碰日韩精品| 亚洲成人在线乱码色午夜| 少妇熟女视频一区二区三区| 大香蕉色欲AV| 国产精品高朝久久久久久久| 久久亚洲色图中文字幕| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 超碰国产情侣自拍网| 一本久道久久综合狠狠爱| 99色色网| 久久五月份| 神马久久久久眼| 99国产精品在线观看| 欧美韩国你懂得在线| 欧美色性情| 精品欧美乱码久| 久久高潮妇女视频| 不卡在线观看视频| 熟女探花啪啪| 国产亚洲深夜激情| 26uuu性物| 日本精品第一视频在'|