日韩精品一区二区三区在线视频放-无码中文字幕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 救場是好幾年前一個(gè)商品詳情頁的接口。那時(shí)候數(shù)據(jù)庫的 QPS 已經(jīng)被壓到貼著地板走頁面每次刷新都要連表查十幾張表高峰期接口響應(yīng)時(shí)間直接干到三秒以上。后來把詳情頁那份聚合數(shù)據(jù)整成一份 JSON 塞進(jìn) Redis超時(shí)率當(dāng)天就掉下來了。從那以后我對這個(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)對再到線上排查的實(shí)操手法我會按我自己踩過的順序講一遍。看完你至少能做到兩件事知道什么數(shù)據(jù)該往 Redis 里放、什么數(shù)據(jù)不該放以及在它出問題的時(shí)候知道從哪幾個(gè)命令開始查。1. 先搞清楚 Redis 到底在項(xiàng)目里補(bǔ)的是哪塊短板很多人對 Redis 的第一印象是內(nèi)存數(shù)據(jù)庫讀得快這個(gè)描述沒錯(cuò)但太淺。真把它放進(jìn)架構(gòu)里你得先明白它替代的是哪一段鏈路否則用著用著就會出現(xiàn)緩存加了一堆接口還是慢或者數(shù)據(jù)對不上這類問題。1.1 從一次接口超時(shí)反推它解決的問題回到開頭那個(gè)詳情頁的例子。當(dāng)時(shí)那條鏈路的耗時(shí)分布大致是這樣的數(shù)據(jù)庫連接池等待、多表 JOIN、結(jié)果集序列化、網(wǎng)絡(luò)傳輸。真正壓死駱駝的是 JOIN 和連接池爭搶因?yàn)樵斍轫摰淖x請求量是寫請求的幾十倍每次讀都要重新拼裝一遍數(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ī)號模糊搜索、按注冊時(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ù)的場景比如庫存扣減的預(yù)扣、接口限流、文章閱讀數(shù)。需要跨進(jìn)程共享的臨時(shí)狀態(tài)比如分布式鎖、任務(wù)隊(duì)列、秒殺排隊(duì)。反過來下面這些我基本不往 Redis 里塞需要復(fù)雜條件查詢、聚合統(tǒng)計(jì)的業(yè)務(wù)主數(shù)據(jù)。單條體積超過幾十 KB 的大對象尤其是列表頁會批量取的。需要強(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è)屬性意味著成本和容量都是硬約束。一臺 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)了跨請求共享狀態(tài)的需求。如果只是幾千條數(shù)據(jù)的后臺管理系統(tǒng)查詢走索引完全夠用引入 Redis 只是多了一個(gè)需要運(yùn)維的組件。但只要出現(xiàn)下面任意一種情況它就值得上了同一份數(shù)據(jù)一秒內(nèi)被讀幾十次以上需要給接口做頻率限制需要給多個(gè)服務(wù)實(shí)例共享會話需要做排行榜、延時(shí)任務(wù)這類數(shù)據(jù)庫不擅長的結(jié)構(gòu)。這些都是硬需求跟項(xiàng)目規(guī)模無關(guān)。2. 單線程還能這么快底層到底做了什么Redis 是單線程的這句話流傳太廣以至于很多人第一次聽到會懷疑它扛不住并發(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)對高吞吐場景比如大 value 的批量讀寫提升明顯因?yàn)槠款i從 CPU 計(jì)算轉(zhuǎn)移到了網(wǎng)絡(luò)拷貝上。配置上對應(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è)。開太多反而會因?yàn)榫€程調(diào)度拖慢我在一臺 32 核機(jī)器上試過開到 16吞吐量相比 8 個(gè)還降了一點(diǎn)。2.2 內(nèi)存存儲與底層數(shù)據(jù)結(jié)構(gòu)的取舍純內(nèi)存這件事本身就是數(shù)量級的差距。一次內(nèi)存隨機(jī)訪問大概在 100 納秒量級而一次機(jī)械硬盤尋道是毫秒級SSD 也是幾十微秒級差距在四到五個(gè)數(shù)量級。但光快還不夠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)制安全可以存圖片、序列化對象。再比如小規(guī)模的 Hash底層不會一上來就用哈希表而是用 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)存儲一旦超過就轉(zhuǎn)成真正的哈希表。轉(zhuǎn)過去之后內(nèi)存占用可能翻好幾倍而且這個(gè)過程是不可逆的——即使你后來把字段刪到只剩 3 個(gè)它也不會變回緊湊結(jié)構(gòu)。我在一個(gè)存用戶標(biāo)簽的 Hash 上踩過這個(gè)坑前期測試時(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ù)會丟而且 fork 的瞬間如果數(shù)據(jù)量大會有明顯的內(nèi)存膨脹和短暫卡頓。AOF是追加寫命令日志按 fsync 策略分三檔策略行為數(shù)據(jù)安全性能影響always每條命令都刷盤最高最多丟一條最差QPS 掉一個(gè)數(shù)量級everysec每秒刷一次最多丟一秒可接受生產(chǎn)常用no交給操作系統(tǒng)可能丟較多最好不建議生產(chǎn)用AOF 的問題是文件會越來越大所以需要重寫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)對應(yīng)五類真實(shí)業(yè)務(wù)場景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緩存對象時(shí)的兩種打法String 是最基礎(chǔ)的能存字符串、數(shù)字、二進(jìn)制。最典型的用法是緩存整個(gè)對象序列化后的 JSONSET product:1001 {id:1001,name:某商品,price:99.00} EX 3600 GET product:1001EX 3600 表示一小時(shí)后過期。這種整存整取的方式適合讀多寫少、且每次都要完整對象的場景比如詳情頁。Hash 則適合需要部分讀寫、或者字段會獨(dú)立變化的場景HSET user:2001 name A同學(xué) level 3 lastLogin 2024-05-01 HGET user:2001 level HINCRBY user:2001 level 1用 Hash 的好處是可以只更新某個(gè)字段不用把整個(gè)對象讀出來改完再寫回去減少了網(wǎng)絡(luò)傳輸和序列化開銷。缺點(diǎn)是過期時(shí)間只能加在整個(gè) key 上沒法給單個(gè)字段設(shè) TTL。選型上我的經(jīng)驗(yàn)是對象字段少、整體讀寫就 String對象字段多、經(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ǔ)。像接口頻控這種場景我是這么寫的# 一分鐘內(nèi)同一用戶最多 60 次 INCR rate:limit:user:2001:202405011200 EXPIRE rate:limit:user:2001:202405011200 60兩次命令不是原子的嚴(yán)格場景需要用 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í)候會掛起等待超時(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ì)列輕量得多精度控制在秒級完全夠用。3.4 結(jié)構(gòu)選型速查業(yè)務(wù)需求推薦結(jié)構(gòu)關(guān)鍵命令注意事項(xiàng)對象緩存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)三步走配置部分會把幾個(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)會出事。下面這幾項(xiàng)我每次部署都會過一遍# 網(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 會一直吃內(nèi)存直到被系統(tǒng)殺掉那時(shí)候就不是淘汰幾個(gè) key 的問題了而是整個(gè)實(shí)例掛掉。maxmemory-policy的選擇取決于你的數(shù)據(jù)性質(zhì)noeviction內(nèi)存滿了直接報(bào)錯(cuò)適合數(shù)據(jù)不能丟的場景。allkeys-lru所有 key 里淘汰最近最少使用的純緩存場景首選。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è)約定來保證它們不會被誤淘汰。4.3 連通性驗(yàn)證與基礎(chǔ)命令實(shí)測裝完之后別急著寫代碼先手工驗(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è)都有對應(yīng)的打法緩存用起來之后真正讓人睡不著覺的不是性能而是數(shù)據(jù)一致性和異常流量。所謂穿透、擊穿、雪崩這三個(gè)詞說的是三種不同的失效模式應(yīng)對手段也完全不同必須分清楚。5.1 三種失效模式的成因?qū)Ρ犬惓n愋陀|發(fā)條件現(xiàn)象影響范圍緩存穿透查詢根本不存在的數(shù)據(jù)每次都打到數(shù)據(jù)庫可能被惡意利用緩存擊穿熱點(diǎn) key 過期瞬間大量請求同時(shí)打庫單個(gè)熱點(diǎn)緩存雪崩大量 key 同時(shí)過期或?qū)嵗礄C(jī)數(shù)據(jù)庫瞬間承壓全局性穿透的本質(zhì)是緩存里沒有數(shù)據(jù)庫里也沒有查詢永遠(yuǎn)落空緩存形同虛設(shè)。擊穿是緩存里本來有剛好過期了一瞬間所有請求涌向數(shù)據(jù)庫。雪崩則是更大范圍的集體失效。這三者的共同點(diǎn)是把數(shù)據(jù)庫當(dāng)成了兜底所以核心思路都是在緩存層就把請求擋住或者分流。5.2 穿透與擊穿的落地實(shí)現(xiàn)對付穿透最直接的辦法是緩存空值。查數(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 瘋狂請求會往 Redis 里塞大量空值 key所以通常要配合布隆過濾器在入口先做一層攔截。布隆過濾器判斷一定不存在是準(zhǔn)確的判斷存在有誤判率剛好適合放在緩存前面。擊穿的解法是加互斥鎖保證同一時(shí)刻只有一個(gè)請求去回源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è)否則持有者崩了會死鎖。5.3 雪崩的預(yù)防與兜底策略雪崩的預(yù)防核心是打散過期時(shí)間。給 TTL 加一個(gè)隨機(jī)偏移量是最簡單有效的做法ttl 3600 random.randint(0, 600) redis.set(key, value, exttl)這樣即使批量預(yù)熱過期時(shí)間也會分散在十分鐘的窗口里不會同時(shí)失效。除了打散還要做幾層兜底本地緩存比如 Caffeine作為二級緩存擋第一波流量數(shù)據(jù)庫連接池限流避免被打死關(guān)鍵接口做熔斷降級返回兜底數(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è)置再沒出現(xiàn)過集體失效。5.4 雙寫一致性該怎么做緩存和數(shù)據(jù)庫同時(shí)寫一定有短暫不一致關(guān)鍵是控制窗口和最終一致。業(yè)界主流是 Cache Aside 模式讀的時(shí)候先讀緩存沒有再讀庫并回填寫的時(shí)候先更新數(shù)據(jù)庫再刪除緩存。為什么是刪緩存而不是更新緩存因?yàn)椴l(fā)更新時(shí)兩個(gè)請求的更新順序可能和寫庫順序不一致導(dǎo)致緩存里存了舊值。刪除操作更安全下次讀的時(shí)候自然回填最新值。但先寫庫再刪緩存仍有極小概率出問題讀請求在寫庫之后、刪緩存之前讀到舊值并回填。常用的補(bǔ)救是延遲雙刪——寫完庫刪一次隔幾百毫秒再刪一次。更徹底的方案是訂閱數(shù)據(jù)庫的 binlog異步刪除緩存把一致性保障從業(yè)務(wù)代碼里剝離出來。6. 線上出問題時(shí)我一般從這幾個(gè)命令開始查Redis 的問題看起來五花八門實(shí)際上集中在幾類內(nèi)存漲了、變慢了、連接不上了、數(shù)據(jù)不對了。每一類都有對應(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è)命令會掃描全庫并列出每種類型最大的 key。注意它會遍歷所有鍵在數(shù)據(jù)量大的實(shí)例上會明顯增加負(fù)載建議在從節(jié)點(diǎn)或者低峰期執(zhí)行。找到大 key 之后單個(gè) key 的內(nèi)存占用可以用MEMORY USAGE user:2001如果確認(rèn)是某個(gè)大 Hash 或者大 List 占了幾百兆刪除時(shí)千萬別用 DEL會阻塞主線程。改用UNLINK它在后臺線程異步釋放內(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è)閾值的命令會被記錄。SLOWLOG GET 返回最近的慢命令包含執(zhí)行時(shí)間、命令內(nèi)容、客戶端地址。常見的慢命令有KEYS *全庫掃描生產(chǎn)禁用、FLUSHALL清庫、大集合的SMEMBERS、大 ZSet 的ZRANGE全量取。這些都在主線程執(zhí)行一次就能把整個(gè)實(shí)例卡住。另一個(gè)隱蔽的原因是持久化。開著 AOF everysec 的情況下如果磁盤 IO 跟不上fsync 會阻塞寫入??梢酝ㄟ^INFO persistence看aof_delayed_fsync這個(gè)指標(biāo)如果它一直增長說明磁盤扛不住了要么換 SSD要么改配置。6.3 連接與命中率類問題連接數(shù)打滿是很常見的線上故障先用這個(gè)看CLIENT LIST INFO clientsconnected_clients接近maxclients時(shí)新連接會被拒絕。原因通常是應(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é)查詢能減少對主線程的影響。最后分享一個(gè)我在實(shí)際運(yùn)維里養(yǎng)成的小習(xí)慣給每個(gè)業(yè)務(wù)線的 key 加上統(tǒng)一的命名前綴比如order:、user:、cfg:配合SCAN命令按前綴遍歷千萬別用 KEYS。這樣做的好處是排查時(shí)能快速圈定范圍做容量評估時(shí)也能按業(yè)務(wù)線統(tǒng)計(jì)。我一般是這么掃的redis-cli -a 密碼 --scan --pattern order:* | head -100另外新實(shí)例上線前我都會跑一輪壓測用 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è)對照系——是整體變慢了還是某類命令變慢了一眼就能判斷。沒有基線的排查基本靠猜有了基線排查效率完全是另一個(gè)層次。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
天天综合欧美综合| 亚洲日韩久久精品一区| 亚洲在线a| 国产原创自拍| 97超碰日韩| 久草视频制服诱惑| 亚洲一曲日韩精品| 夜夜嗨老熟女AV一区二区三区| 国产亚洲深夜激情| 美国久久一二三四| 黄色视频特级毛片| 清纯唯美亚洲综合| 日韩精品电影| 99久久久| 亚洲春色一区二区三区| 日韩精品三级片长长久久| 18禁网站在线播放| 欧美色图91| 艳美熟妇先锋一二三区| 色官网在线| 国产精品人妻无码久久久互動交流| 大稥蕉免费视频这里只有精品| 超碰91在线| www.一本大99| 欧美在线官网| 色五月综合| 另类欧美色| 精品.99999| 久草免费福利在线播放| 欧美激情在线观看视频| 色婷婷蜜臀av| 92福利社视频| 亚洲好看强奸乱伦| 手机在线中文字幕国产| 国产午夜在线观看| 91插B网站| 狠狠中文字幕| 色色五月天激情| 色妇综合网| 久久国语| 天美传媒av 在线| 天天综合网日韩7799| 亚洲综合图色在线| 強姦亂倫a| 日韩 女同 综合| 成人在线视频二区| 中日韩欧美精品无码AⅤ一区二区| 怡红院成人视频| 不卡码视频| 日韩性爱播放| 日韩免费看黄片| 国产老太乱伦一区| 欧日韩一二三f区| 国产大片精久久久久久| 婷婷日韩一区二区三区中文字幕在线| 国产真实野战在线视频| 欧美探花网| 九九九一二三| 亚洲少妇在线影音| 天综合中文| 日韩成人大片在线观看| 国产精品一区二区校花| 日韩偷拍一区二区三区| 亚洲色宗合| 久久久极品| 91少妇香蕉久久精品| 国产精品电影| 中文字幕在线观看丝袜| 婷婷在线播放| 亚州精品丝袜-不卡成人免费| 日本3级一区二区免费| 黄色AAAAA欧美| 人人潮人人摸| 大香蕉强奸乱伦| 在线人人人人人人精品超| 韩三级a视频在线观看| 老熟妇乱轮| 精品黄色电影| 熟妇乱伦一区二区| 亚洲色欧美| 91丝袜视频在线观看| 伊人网在线点播| 国产97综合| 色香综合天天影视综合 | 中文字幕在线高清男人的天堂 | 色婷婷婷五月天激情四射| 泰国AV在线观看| 91人妻爽爽人人做人人澡| 婷色五月| 黄页大片在线观看| 天天天肏屄欧美| 色婷婷在线视频精品导航| 人人喜人人妻| 9九九国产| KK色在线影院| 人妻干天天| 欧美激情另类一区二区| 亚洲中文日韩精品| 操b网站亚洲无码| 天天看人人操屄犊摸阴| 600国产精品视频| 高清国产成人无码| 91久久久亚洲| 久久高清欧美国产| 夜夜嗨视频| 亚洲天堂AV在线播放| 亚洲猛交| 天天视频网站黄| 日韩A优精品在线观看| 综合网色| 日本精品88888888| 久久久久96| 熟女少妇视频| 免费人成在线观看网站品爱网| 视频在线观看免费一区二区三区| 色婷婷激情| 蜜臀亚洲中文| 超碰 欧美| 精品国产一区探花在线观看| 男人的天堂啪啪| 日韩78m视频| 人妻精品一区一区三区蜜桃91| 97超碰超| 日韩乱伦视频| 91伊人大香蕉| 亚洲熟女综合网| 逼逼逼逼操操操操操操操操操午夜剧场| 欧美亚洲日本激情在线| 亚洲AV高潮| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 久久大陆| 色婷婷六月丁香七月婷婷| 欧洲性爱无码区| 亚洲天堂AV在线播放| 九九精品热| 超碰中文字幕人妻草一区| 久久高潮妇女视频| 国产精品无套内谢| 日本丝袜美腿人妻九九| 日本在线伊人啪啪| 99热综合| 午夜久久久| 99久久精品无码一区二区毛片免费 | 91在线免费精品视频| 99在线精品观看99| 国产精品一区在线播放| 日本操嫩b网| 96AV精品| 午夜操一操| 搡老熟女老女人老熟妇免费视频| 极品后入免费视频| av一区二区三区不卡| 99精品在线| 伊人在线大香蕉视频久久| 亚洲人妻中文在线视频| 国产不卡精品91| 五月天精品| 久久久久成人亚洲国产| 亚洲色悠悠久久88| 无码人妻精品一区二区中文| 久久久久久久78| 999精品乱码| www.色婷婷色综合| 97视频免费在线观看| 99爱在线视频| 91岛国动作片| 久久人妻丝袜一区二区三| 免费99精品国产自在在线| 亚洲精品三区在线观看| 蜜臀在线网站| 麻豆性爱视频在线播放| 四虎免费在线观看| 1区2区3区在线视频| 亚洲欧美91| 亚洲日产专区| 欧美色图亚洲色| 一区二区你上我| 性欧美91| 精品久久久久9999| 逼操网站| 男人天堂欧美| 国产十八禁视频| 日本欧美亚洲高清在线看| 日产成人久久| 欧美色棕合| 91AV入口| 97亚洲自在精品在线观看| 丁香五月成人| 99视频这有这里有精品| 国产91丝袜在线播放蜜月| 亚洲国产无码精品首页久久久| 99re99在线视频| 99国产精品人妻人伦| 中国AV美女| 青青草无码视频| 久久ww| 国产熟女精品一区二区| 亚洲十八禁止| 日韩亚洲美女一区久久| 99性爱在线观看| 欧美激情 亚洲色图| oumeisetu综合| 伊人网综合在线视频| 情色大香蕉| 日韩二级| 加勒比大香蕉视频在线| 又大又长又粗又爽又黄| 久久免费少妇| 91国产丝袜美女| 水澄无码AV| av绯色| 欧美性暴力猛交| 日韩钢筋无码高清啾啾啾| 第一高清av中文字幕| 日韩熟女三十乱伦| 超碰人妻久久| 韩国嫰模上门援交视频| 九X超碰| 久久久久久欧美精品se一二三四| 国产成人拍国产亚洲精品| 国偷自 一区| 蜜桃久久久久久久| 好吊妞转入那个网| 婷婷色网| 婷婷视频网| 操操逼操操逼操操逼逼| 国产二区视频在线观看电影| 高清无码人妻久久久一区二区三区aⅴ| 四虎国产成人精品免费一女五男| 五月婷在线| 國產尤物AV尤物在線觀看| 一级性爱视频免费观看 | 中字幕人妻一区二区三区| 久久久久久久| 亚洲美女精品九九视频| 91精品无码人妻系列| 亚洲人精品久久久喷水| 三级网色| 夜嗨影院| 熟女精品va中文字幕| 乱伦一二三区| 亚洲欧洲自拍图片专区满春格| 97在线观| 91老司机视频| 亚洲中文字幕一区二区| 色九色久| 91中文字幕在线观看| 成人黄页| 亚洲精品 欧美精品| 美女91在线观看| 天堂av2019| 一起草av| 欧美亚洲美少妇一区二区| 亚洲天堂另类小说男人| 青青草乱入乱欲视频在线观看| 欧美美女在线高潮999| 亚洲欧美中日韩| 99.色网| 澳门成人网站久国产日韩| 清纯唯美激情四射| 探花视频免费观看国产专区| 啊好大好舒服| 熟女突然公开看18禁影片| 夜夜福利| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 久久五月天婷婷| 人人透人人操| 99国产精品视频尤物| 91制服丝袜中文字幕| 一区二区 电影 亚洲| 午夜色婷婷| 色就色综合| 曰韩中文人妻视频| 男人的天堂va在线| 91九色丨风韵犹存| 日韩大香蕉AV影片| 噜噜噜亚洲精| 干B网| 亚洲 欧美 日韩另类 麻豆| 白丝少妇一区二区| 欧美日韩亚洲天堂网| 女色视频社区| 97网址www| 91美女丝袜诱惑视频| 黄aaaaaaaaaaaaaaaaaa色网站| 久久 国产 无码| 中文字幕精品免费一区二区| 成人网站 免费观看| 在线天堂999| AV老汉| 欧美色图私拍91| 一区二区三区日韩欧美| 亚洲欧美日韩有码| 十八禁一区二区无码观看| 天天操人人操骚逼网站| 噜噜噜亚洲精品| 很狠操| 偷拍视频青青草在线视频| 国产精品网址| 精品成人亚洲午夜电影| 婷婷五月综合在线| 嗯……啊…嗯嗯…啊…好舒服| 亚洲五区熟女| 久久精品电影在线| 九九热国产| 色色毛片| 色99视频| 97国产色图| 成人三级片一区二区三区视频| 亚洲色图图片| 91粉嫩萝控精品福利网站_精品影音先锋国 | 日日狠狠久久偷偷色综合免费| 97国产超湿| 亚洲大胆人体av| 97视频免费播放| 黄色一区二区秘书性感| 麻豆AV一区二区| 久久久久久99999国产精品| 日韩成人性日韩成人性爱视频在线免费观看| 丝袜人妻av一区二区| 欧美成人一区二区三区在线播放 | 日本97久久| 久久无码成人| 国产色精品午夜大片| 人人插人人摸人人| 亚洲 欧美 另类 日韩 人妻一区| 亚洲欧美清纯| 99综合视频一体| 色拍偷亚洲| 黄色人人| 亚洲色资源| 国产精品久久久久久久毛片1| 国产白领连续中出在线观看| 91熟女网| 一区二区高清视频| 婷婷色色五月| 美女诱惑久久| 91老司机在线视频免费观看| 人妻天堂网| 婷婷伊人綜合中文字幕| 亚欧操逼片在线观看| 高清国产性猛交xxxx乱大交| 国产精品网站免费| 精品一区二区成人| 五月天亚洲网| 男人兔费天堂| 国产精品女同| 妇女视频网站| 青青草天天亲夜夜操网| 国产精品黄色三级av| 欧美色图中文字幕| 精品丝袜无码一区二区三APP| 有码人妻系列| 日本国产欧美高清在线| 欧美性爱超碰97| 欧美视频在线第3页| www熟女乱伦com| 亚洲欧洲色情高清| 国产超碰在线| 玖玖爱在线视频免费观看| 九九九九免费高| 99操碰| 国产精品999aaa| 9长久久精品| 久久女婷| 成人激情无码在线视频| 伊人久久AV诱惑悠悠| 极品后入免费视频| 91精品国产综合久久久蜜臀| 欧美日本中字另类在线| 看全色黄大色大片免费视频| 国产一区二区三区,在线观看观看| 国产精品无码AV网站| 思思热在线视频免费| 一区二区三| 亚洲色宗合| 91在线免费观看处女| 欧美美女自慰一区二区三区| 伊人精品视频| 国产AV中文| 精品国产乱码久久久久久口爆网站| 女人香蕉久久毛毛片精品| 久久嫩草国产成人一区| 日本在线一二| 婷婷激情五月| 久久欲| 久久久久精| 91精品大奶人妻| 成人小说视频在线精品欧美| 综合另类| 国产午夜福利专区综合| 曰韩中文人妻视频| 98人妻精品一区二区色欲| 亚洲男人天堂2017| 久热这里只有精品9| 亚洲有薄码区久久在线一区| 蜜臀av中文字幕| 亚洲图片在线| 日本久久久精品电影| 久热大香蕉网站| 亚洲天堂电影网| 9997se| 亚州欧美在线| 亚洲欧美不卡线| 国产成人久久精品蜜臀| www.亚洲黄色| 欧亚在线视频| 青草视频在线看看看看看看看看看| 国产一区二区三区影片| 91美女中出| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 亚洲限制级在线| 色天堂综合| 亚洲素人综合| 欧美综合娱乐久久| 日本人妻伦在线中文字幕| 在线有码中文字幕| 91在线无码精品秘 软件| 亚洲天堂中文字幕无码男同| 欧美色997| 国产中午字一暮区| 国产高清亚洲日韩一区| 美女国产一区二区久久| 91亚洲不卡一区| 久污| 操人人| 中文字幕 人妻不满 在线视频| 久久神马影院| 欧美激情 一区| 日韩操逼HD| 精品国产乱码久久久久久日本公司| 95人妻爽爽人人做人人澡| 少妇内射www在线观看视频| 亚洲综合性网址| 色婷婷日韩精品一区二区三区| 亚洲中文丝袜美腿诱惑字幕| 国产精品美女久久久久AⅤ国产馆| 人人射人人操人人摸| 人人摸人人干| 日韩欧无码一区二区三区免费不卡 | 欧美性高潮在线| 蜜臀久久99精品久久久电影| 欧美黑人91| 男男H黄动漫啪啪无遮挡网站| 国产九月婷婷| 欧洲亚洲少妇| 超碰人人在线| 欧美综合色,www| 在线国产探花| 啊啊啊啊免费视频| 9 9精品一区二区三区| 亚洲人精品久久久| 日韩无码成人电影| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 日韩av不卡在线看| 日日躁夜夜躁狠狠躁超爽| 国产精品一区二区三区,亚洲综合| 一区,二区,三区网站| 美女裸体无遮挡永久免费观看网站| 97色干| 天天躁日日躁狠狠躁| 日韩av熟女一区二区三区成人| 青青草福利视频| 中文字幕日产av人| 免费一级a毛片久久久久久鸭绿欲| 亚洲激情在线| 久草加勒比一区在线| 影音先锋乱伦资源| 中文字幕一区二区三区蜜桃视频| 午夜黄色免费在线观看| 亚洲加勒比久久日本道| 亚洲视频二区 | 国内毛片欧美香蕉精品| 亚洲色图加勒比| 欧美经典一区二区三区| 日韩久射综合| 国产精品在线网站| 五月激情小说| av在线一区二区三区| 九久9精品| 91总综合网| 天天干,夜夜爽| 国产黄片精品在线| 午夜啪| 欧美视频在线第3页| 国产乱人妻精品入口| 五月激情在线| 欧美经典一区二区三区| 天天草天天日| 诱惑网综合| 国产丁香精品露脸视频| 亚洲天天影视色综合| 中文字幕日产av人| 2011国产精品| 夜夜爽77777| 欧美自拍偷拍综合图片| 久伊人网78| 秋霞男人网| 国精品一区二区三| 久操99| 国产刺激视频| 日产狠狠干| 99久久综合| 激情丁香五月婷婷| 99色视频| 中文字幕制服欧美久久一区| 日韩美女久久一区二区三区| 国产精品久久久视频| 91亚州日韩高清| 久久久久久久一级黄色打同平台| 屁股久久久久久久| 亚洲精品国语在线播放| 欧美极品美女aaaaaa级黄片| 一区二区乱码福利| 1人人看人人摸人人操| 九九热三级片| 久久中文字幕人妻熟av女蜜柚| 家庭乱伦性爱av| 天天弄天天操| av一区二区三区四区| 青青操少妇| 亚洲激情色片| 久久久久密臀视频| 97国产精品在线观看| 大香蕉日韩| 亚洲在线| 久久亚洲AV无码专区首页| 色婷婷九月天天综合| 天天爽夜夜操| 天美传媒Av在线| 国产伊人精品在线| 麻豆国产精品午夜视频| 精品少妇人妻av久久免费| 国产树林里野战在线看| 99re9在线| 天美传媒Av在线| 亚洲人久久久久日| 超碰成人最新最好看| 中文字幕老熟妇黄色视频| av麻豆啪啪| 91天天综合| 777奇米影视777四色| 狠狠躁AV| 久久香蕉国产线看观看亚洲女人 | 中文在线久久字幕| 99操| 色欲av国内精品久久久久久| www成人啪啪18秘 免费| 免费网站观看www在线观| 亚州欧美另类| AAA久久| 亚洲日韩东京热一区| 97精品久久| 五月激情综合网| 99久久免费看精品国产一区| 日本一级婬片试看三分钟| 日本一区三级韩国| 热热色91| 激情四射婷婷四五月天| 91 丝袜在线播放| 三级三级三级日本99| 亚洲一区二区中文字幕| 日本在线激情一区二区三区| 亚洲青青草| 国产女人成人精品视频| 精品国产网站| 91亚洲欧洲| 日本熟妇一区二区三区| 久9九综合在线| 九九99精品| 欧美草草高清日韩视频| 婷婷九月| 午夜小电影在线插入淫高潮| 天天综合网一91网| 久久伊人最新网址视频| 在线视频一区二区传媒| 日韩欧美成人综合在线| 色偷偷超碰亚洲| 婷婷丁香五月激情啪啪| 久久αⅴ| 日韩av三四区| 新版天堂中文资源8在线| 蜜臀久久99精品久久久久久成人小说| 日韩人体偷拍| 综合操逼| 囯产精品久久久久久久久久梁医生| 欧洲一区二区三区免费| 一区二区娱乐网站| 99这里只有精品国产| 毛片99-全集电影手机免费观看完整-B029AV | 亚洲精品国产精品成人| 日本男人插女人的逼黄色| 亚洲五月婷| 密乳无码| 91在线秘 男同| 99国产精品| 夜夜精品视频一区二区| 97色妞| av九九| 天天影视综合色| 中文字幕奈奈美被公侵犯| 台湾佬大香蕉| 亚洲人精品久久久| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 麻豆精品三区视频| 国产自产91区13区| 水澄无码AV| 97人人干| 色色操| 国产欧美日韩在线观看麻豆传媒公司| 亚洲一区二区三区四区视频| 精品人妻中文字幕4399| 在线免费观看高清无码视频| 玖玖久久久| 国产91 丝袜在线播放00-百度| 欧美综合网站999| 中文字幕色AV| 九九操久久国产免费视频| 欧美 日韩第一性色| 丰满人妻一区二区中文| 亚洲综合九| 日韩大香蕉精品在线视频| 亚洲十八禁止| 蜜桃天美传媒AV一区二区三区| 韩国嫰模上门援交视频| 蜜桃天美传媒AV一区二区三区| 97在线播放| 国产精品香蕉| 亚洲图片婷婷五月天| 欧美成人一级免费电影| 亚洲欧美日韩综合在线尤物| 麻豆天美国美国产| 亚洲91在线播放影院| 亚洲无码com| 九色精品视频导航1| 欧美刺激色黄片免费看| 人妻少妇久久久| 18岁禁 茉莉成人久久| 亚洲综合色在线| 男人在线天堂| 久久人人爽爽人人爽人人片αV| 色色香蕉| 伊人大香蕉在线| 97少妇人妻中文字幕久久 | 黄片免费视频2019| 婷婷丁香在线| 1024手机看片欧美日韩| 青青久久艹| 亚洲中文日韩精品| 欧美综合色站| 欧美色图亚洲色| 欧美熟女操屄| 熟女网站最新| 黄色免费网| 这里只有精品视频| 精品人妻一区二区三区蜜桃视频| 自拍鲍鱼一区在线高清观看免费| 欧美亚州色的图| 亚洲深夜福利| 综合自拍| 大屁股国产在线视频| 美女久久久久久久久久久| 美國A片| 夜夜福利| 欧美1区二区三区公司| 美女露胸露尿口| 久操免费观看| 色五月亚洲| 美欧色综合| 日本有码久久| 青青草毛片| 日韩在线视频1234| 国产h小视频在线观看免费| 天天日天天爽| 久久精品熟妇丰满人妻99| 日日日日日| 91人妻少妇| 久久色一区| 久久免费99精品久久久久久| 青青草啪啪网| 亚洲砖码砖专无区2023| yazhououmeizongya| 人妻AV在线| 熟女人妻一区二区三区免费看 | 青青操网| 国产免费一区| 99视频只有精品| 综合网亚洲| 九一精品牛牛一区二区| 人人做人人妻人人夜视频| 天天操妹子| 高树玛利亚无码流出| 色色色色日本| 97伊人网| 9999九九九久久久| 精品久久視頻在线| 国产免a费看黄片在线| 伊色久人大在线| 91在线丝袜视频| 三级三级三级日本99| 亚欧性爱无码| 一区二区影视| 女上位精品在线| 色婷婷六月| 96国产精品| 色婷婷久久综合超碰| 六月丁香啪啪| 丁香五月天视频| 天天综合网亚洲综合网| 少妇三p| 神马久久久久久伦理片| 91影库| 国产中午字一暮区| a人欧美综合天堂麻豆| 99热成人| 色婷网| 欧美老妇曰批的视频| 天美精品原创av片国产| 好色美女九七第一页| 东北女人操比视频| 黄网站黄视频网站进入口 | 精品国产网站| 青青草日韩无码| 人妻娇喘 激情视频| 免费一级精品啪啪视频| 日韩综合97p| 2019AV天堂| 99re69综合| 欧美一区二区在线资源| 强奸少妇AV导航网| 久久综合18p| 激情文学 国产一二三aV| 中文一区二区婷婷视频| 啪啪视频mP4| 91色爽欧美| 欧美性爱一区二区三区四区| 国产白丝在线| 欧美超碰人妻97| 亚州,欧美在线| 超碰人妻久久| 欧美亚洲| 熟女五十路一区二区三| 色牛牛AV| 久无码| 使劲用力艹少妇视频一区二区| 男人的亚洲天堂| 日本一二三免费久久| 91九九| 欧美一级特黄淫片在线观看| 无码国产精品午夜不卡( | 老熟妇一区二区三区…| 自慰白浆在线观看| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 国产精品午夜成人福利| 91黑丝美女| 极品肉射| 欧美午夜一区二区三区| 久久久亚洲精品电影免费看| 亚洲 欧美 综合 91| 日韩性爱小视频| www.av在线观看| 嗯嗯啊啊好疼| 中文?日韩?免费?精品| 777奇米影视777四色| 日韩三级在线观看mp4| 97综合激情| 无码av永久免费专区网站| 欧美久久九九| 日韩15p| 日韩成人综合网| 99精品丰满人妻无码| 性暴力欧美猛交在线直播| 97资源制服丝袜| 午夜传煤十二区精品| 亚洲第一无码播放立川理惠| 久久超碰免费的| 人妻性爱一区二区| 九九Av| 久久的免费性爱视频| 91美女在线观看| 91超级碰碰碰| 久久精品区| 狠狠综合网| 精品久| 日本一区二区三区精品| 中文字幕丰满子伦无码专区在线视频最新 | 欧美精品精品一区二区| 久久手机好看网站| 人人弄人人摸| 在线一区| 99碰碰| 天天天天天天天天天天干美女| 欧美97在线观看| 欧美人妻色| 国产黄a三级三级三级av在线看| 偷窥自拍亚洲| 精品久久久无码| 亚洲天堂在线怕怕视频| 新视频sss国产| 亚洲乱熟女一区二区三区大香蕉| 亚州,欧美在线| 四月丁香婷婷| 免费簧片在线观看| 国产精品网址| 精品一国2| 99国内精品| 久久天天艹| 日本 免费 一区二区三区 久久香蕉| 国产内射爽爽大片| 久久动漫精品视频这里只有精品| 国产 三级自拍| AV一起草在线| 久久亚洲一区女同性恋中文字幕| 后入 亚洲 美女 射| 乱伦系列一区二区| 懂色中文一区二区三区| 国产999精品久久久| 亚洲精品国产av天美传媒| 日本在线一二 | 欧州色图区| 国产精品亚洲一区二区三区四区| 精品人妻中文字幕高清| 999国产精品999久久久久久| 97碰碰日本乱偷人妻中文的| 水野优香在线观看| 国产热RE99久久6国产精品首| 中文字幕av亚洲精品| 密臀在线视频| 91模特在线观看| 久久久久921| 超碰在线97国产| 密臀AV在线| 丰满搜索结果 -第18页- 久久高清无码 | 久久久精品一区二区| 中文字幕在线观看网页| 激激五月| 四虎 精品 WWW| 国产精品女同| 爽爽爽免费视频| 亚洲欧美九九九| 久草资源在线视频官方总站日韩丝袜美腿| 成人欧美一区二区三区黑人一| 91久久婷婷| 精品国产乱码久久久久久久久1 | 97福利视频| 日本三级大片| 禁片 高清 在线观看视频网站| 久热伊人99re| 2017大香蕉国产精品久久| 国产精品久久久久久久久久久久久久久| 九九热视频这里只有精品| 麻豆成人av| 国产精品农村妇女精品| 26uuu成人影片| 岛国精品视频在线观看| 伊人久久大香线蕉无码| 一区二区三区 日韩欧美| 国产精品久久伊人| 大香蕉亚洲中文| 国产白嫩精品久久| 人人操人人射人人干| 全国男人天堂网| 国产精品不卡av免费在线观看| 一区二区乱码福利| 国产精品一区二区三区,亚洲综合 性开放中文AV高清无码免费看 | 亚洲天堂性爱| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 91P0RNY大屁股人妻| 91一区二区三区蜜桃| 国人欧美精品一区二区| 久久国产精品91| 欧美91久久久久| J?P?NESEHD熟女熟妇伦| 国产91久久九九免费精品无码| 熟女丝袜视频| 久夜操| 懂色AV蜜臀无码精品APP| 三级片大波波| 天天日天天干少妇日| 性爱av在线免费观看| 熟女自慰久久久| 少妇无码999| 中文字幕 国产 精品| 男人的天堂2000| 老外又粗又长一晚做五次| 69精品少妇一区二区三区蜜桃| 亚州欧美一区| 一起草日韩| 黄日韩| 精品国产丝袜一区二区三区乱码 | 熟妇女伦乱视频| 26uuu国产| henhen91| 1956日韩精品| 操操操五月天婷婷丁香影院| 操我啊啊啊啊啊| ji熟女.com| 久久这里都是精品| 青草综合| 曰本精品久久久| 无码高清操逼网址| 日日黄色三级网站| 国产精品欧美日韩久久| 看看日B真人视频| av在线资源| 懂色aV一区二区天美传媒| 伊人成人情色综合| 亚洲97久久精品亚洲| 综合色久欲| 中文字暮97| 自怕偷自怕亚洲精品| 综合情欲网| 天天摸天天插天天日| 黄色在线网站| 亚洲男人的天堂va亚洲男人社| 亚洲AV无码天美传媒一区| 成人精品久久久午夜福利| 九七毛片九九毛片| 密桃99999| 日本欧美一区二区三区免费| 极品少妇久久久| 北条麻妃性愛视频| 极品色社| 亚卅熟女乱色| 乱伦日本中文自拍| 亚洲天天自拍| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 丝袜美腿亚洲| 视频在线97| 伊人久久久日韩一区| 亚洲色天堂日韩中| 人、人、摸,人、人、草| 欧美不卡在线一区二区| 熟妇人妻丰满久久久久久久无码| juliaann丝袜大战黑鬼| 97舔舔| 玖玖视频在线资源一区二区三区| 中文字幕亚洲热播人妻| 男女做爰猛烈动高潮A片免费应用| 大香蕉日亚洲日本亚大| 日韩精品电影| 91爱| 色哟哟AⅤ| 综合网欧美在线| 欧美日韩97在线| 精品熟女一区=区三区| 五月丁香久久| av大香蕉| 男人兔费天堂| 日韩99999色| 欧美一区二区日韩传媒搭讪精品| 日韩精品一二三四| 国产欧美美女免费观看视频| 欧美九9 9 9| 久久精品亚洲婷婷| aaa淫乱视频| 99热日| 新91视频.cmp| 天天综合网网欲色| 午夜福利1区2区3区| 亚洲人妻在线一区| 久久男女激情视频网站| 依人大香蕉| 91美腿丝袜在线观看| 欧美狠狠操| 人人九九精| 中日韓欧美高清| 370p日韩欧美亚洲精品| 国产熟女乱论| 欧美黑人性猛交91| 亚洲999综合| 欧美懂色综合网| 日本三级一区二区 在线| 日本在线视频导航| 久久综合久久综合人久久夜精品| 国精综合一二三区影视| 中文字幕在线第二页| 欧亚日韩中文在线| 人妻 丝袜美腿 中文字幕| 婷婷色色五月天| 国产后入内射| 男女性无套 免费九一| 亚洲精品第一| 91撸色网 玖玖网 欧美| 熟女少妇视频| 怡红院一区二区熟女人妻| 一区二区 日韩 欧美 国产 传媒| 激情啪啪视频| 亚洲色系另类精品国产| 色妹子A V| 超碰九7| 欧美99热| 成人草草视频| 欧美久久伊人| 天天大干大香蕉| 曰本人妻人人澡人人夹| 蜜桃久久久久久久| 熟女探花啪啪| 蜜臀精品1区2区| 亚洲国产精品无石码久久| 欧亚在线视频| 超碰97综合网| 久操大香蕉| 97碰碰色| 艹我哪美一区无码| 2017天天拍大香蕉| 青青草九九九九九| 97亚洲精品超碰| 熟女丰满人妻一区| 91在线免费精品视频| 不卡人妻少妇精品毛片一区23区视频| 96超碰网| 亚洲一区日韩| 啪啪自拍九九综合| 色婷婷激情| 天天射日日干| 97硬碰| 国内偷自视频区视频综合| 91欧美成人色站| 午夜AV人气不卡| 99只有精品| 日本国产高清色www视频在线| 999九九精品| 爱av免费| 曰韩中文人妻视频| 久久爱超碰网| 亚洲经典啪啪| 无码高清操逼| 日韩丨制服丨中文|在线| 在线不卡视频| 欧美五十路熟| 东京太热男人的天堂久久久| 国产大片精久久久久久| 香蕉人人操tv| 精精品人妻一区二区三区| 五月天春色激情网| 欧美,日韩,亚洲视频| 超碰97久久| 四虎影视国产精品| 99国产精品免费| 色香阁在线| 中国亚洲呦女专区| 欧美激情另类一区二区| 97久久超碰| 久久婷婷成人综合色怡春院| 最新精品久久蜜桃| 色女网日韩| 激情一区二区三区在线观看| 在线国产探花| a'v在线资源| 日本三级一区二区 在线| 激情六月婷婷| 91欧美色| 久久9精品网站| AV丝袜东京热| 亚洲男人的天堂AV| 亚洲综合影视| 日韩精品人妻中文字幕有码午| 97色色视频| 狠狠综合网| 人妻啊啊人妻啊啊| 精品 码产区一区二-1080P高清在线www-B029AV | 久久婷婷色综合一区二区三区| 99日精品欧美国产| www.av在线观看| 六月色色| 久热69九色熟妇97| 亚熟在线| 91精品婷婷国产综合久久竹菊| 欧美熟妇操操视频| 综合久久99亚洲人妻中文在线| 久久久99999久网站| 人妻大香蕉| 亚洲欧美综合图片| 亚洲成a人v欧美综合天堂下载| 丰满人妻一区二区三区色-百度| 久久精品国产Aⅴ| 一区二区三区在线美女| 中文字幕一区二区在线日韩精品| 丰满人妻一区二区三区四区| 国产黄色av大片网站| 激情五月婷婷| 国产高清免费不卡av| 91久久九九精品国产综合| 在线人成亚洲视频免费观看| 91国模| www.久久最新地址| 亚洲欧美日韩综合在线尤物| 久久ww| 伊人一区二区三区| 国产97色在线 | 亚洲| 18禁止看精品中文字幕| 亚洲欧美国产其他二区| 亚洲日韩av一区二区三区百合| 青青草久久| 蜜臀久久99精品久久久| 日本天天操| 午夜欧美J进J出白浆流出久久久| 精品二区三四区五电影| 五月天婷婷在线看| 久99热| 九九九草| 亚瑟国产精品久久无码| 国产精品一区二区麻豆| 殴美大黄片| 天天享受天天看| 干少妇视频| 丁香六月婷婷久久综合| 99re综合伊人| 青青操综合网| 精品性爱久久视频| 国产a片操逼| 97人人中文网| 亚洲无码电影久久久| 好吊妞转入那个网| 人妻少妇精品视频一区二区三区| 热久久无毒不卡| 多乙久久久久久| 日韩毛片9| 婷色五月| 成人怡红院| 色情综合网| 男人天堂东京热| 日本特黄f c2| 国产日韩无码一区二区三区久久区| 97操97色| 成人七区| 99热精品在线观看| 欧美成人都市人妻| TS人妖另类精品视频系列| 9999伦理视频| 草草影院最新网址| 精品人妻一区二区三区蜜桃视频| 97操操| 亚欧无码线免费观看视频| 日日A∨| 色情五月综合婷婷| 明星性猛交ⅹxxx乱大交| 欧美熟妇亚洲版| 天天爽人人综合免费7799| 黄骗免费网站| 免费超碰97久久| 日韩久久三区| 青娱乐欧美激情一区二区| 欧美综合自拍亚洲综合图| 素人播放一区| 中文字幕乱在线伦视频中文字幕乱码在线 | 欧美激情综合色综合啪啪五月| 欧美人妻中出| 久99热| 久久久久成人亚洲国产| 国产精品96| 噜噜瑟| 青春草A| 久久综合日韩亚洲欧美| 亚洲乱熟女一区二区三区大香蕉| 国产一区二区免费福利片| 91N综合网| 蜜桃视频啊啊啊啊| 综合97亚洲|