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

ARTICLE DETAIL

資訊詳情

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

Redis深度實戰(zhàn):從數(shù)據(jù)結(jié)構(gòu)到高可用架構(gòu)與緩存治理

Redis深度實戰(zhàn):從數(shù)據(jù)結(jié)構(gòu)到高可用架構(gòu)與緩存治理 說個實話Redis 是被低估得最厲害的一個中間件。很多人學(xué)了幾天會了SET和GET知道五種數(shù)據(jù)類型就以為自己入門了結(jié)果一到面試被問“緩存穿透怎么解決”“主從切換會不會丟數(shù)據(jù)”或者一上線就被慢查詢、內(nèi)存暴漲、分布式鎖失效折騰到懷疑人生才發(fā)現(xiàn)自己根本沒摸到 Redis 的門。這篇筆記不是給你背面試題的是按我實際折騰 Redis 的路徑整理的從安裝選型、數(shù)據(jù)類型底層邏輯到高可用架構(gòu)、緩存治理、常見故障排查一次講透。內(nèi)容適用于用 Redis 做緩存、做分布式鎖、做排行榜、做消息隊列的開發(fā)者和運維同學(xué)也適合準(zhǔn)備大廠面試、想系統(tǒng)梳理 Redis 知識體系的人。我盡量用大白話講清楚每個關(guān)鍵選擇的“為什么”而不是只告訴你“怎么做”。1. 學(xué)習(xí)路線與整體設(shè)計思路拆解1.1 為什么你該把 Redis 當(dāng)“數(shù)據(jù)結(jié)構(gòu)服務(wù)器”來學(xué)很多教程開場就說“Redis 是高性能 KV 緩存數(shù)據(jù)庫”這個定位本身沒錯但它直接把你的思路帶窄了。如果只把 Redis 當(dāng)緩存那你永遠(yuǎn)只會用它來存字符串遇到實際需求就想“這玩意兒是不是不適合”——排行榜用 ZSet、去重用 Set、消息隊列用 List 或 Stream、分布式 ID 用 INCR、附近的人用 GEO這些都不是“緩存”而是數(shù)據(jù)結(jié)構(gòu)能力。我建議把 Redis 理解成“一個跑在內(nèi)存里的數(shù)據(jù)結(jié)構(gòu)服務(wù)器”。它和 MySQL 最大的區(qū)別不是快而是它的數(shù)據(jù)模型本身就是為特定數(shù)據(jù)結(jié)構(gòu)設(shè)計的你往里面放 String、Hash、List、Set、ZSet它幫你維護(hù)增刪改查、排序、聚合、去重這些能力。學(xué) Redis 的第一原則就是拿到一個需求先判斷“這個數(shù)據(jù)結(jié)構(gòu)適不適合用 Redis 表達(dá)”而不是“能不能塞進(jìn)緩存里”。帶著這個思路學(xué)習(xí)路徑就清晰了先掌握命令和數(shù)據(jù)結(jié)構(gòu)再理解持久化和過期策略接著上高可用和集群最后回到緩存治理和分布式鎖這些真實場景。每一步都在解決前一步帶來的新問題是一條完整的鏈路。1.2 按階段拆解基礎(chǔ)、進(jìn)階、實戰(zhàn)三步走第一階段是基礎(chǔ)目標(biāo)是“會用”。這個階段只需要搞定三件事安裝、五種數(shù)據(jù)類型、常用命令。你可以把 Redis 跑起來然后用redis-cli或者可視化工具比如 Another Redis Desktop Manager手動敲命令把每種數(shù)據(jù)類型的增刪改查、過期時間、TTL 都過一遍。這一步不需要背命令大全先把最常用的三十個命令用到條件反射就行。第二階段是進(jìn)階目標(biāo)是“懂原理”。這個階段要搞清楚三塊內(nèi)容Redis 為什么快單線程 IO 多路復(fù)用、數(shù)據(jù)怎么不丟RDB 和 AOF、內(nèi)存不夠了怎么辦過期策略和淘汰策略。這三個問題是面試高頻題也是你以后排查性能問題和設(shè)計緩存方案的理論基礎(chǔ)。很多人在這個階段容易犯的錯是只背概念不結(jié)合命令去驗證。比如你背了“Redis 默認(rèn)有 16 個庫”但你不知道SELECT 1切庫之后AOF 重寫、RDB 快照到底怎么處理多庫數(shù)據(jù)你背了“LRU 淘汰”但你不知道 Redis 的 LRU 是近似實現(xiàn)不是嚴(yán)格 LRU。第三階段是實戰(zhàn)目標(biāo)是“會排障”。這一階段要圍繞真實場景展開主從怎么搭、哨兵解決了什么問題、集群的槽位是怎么分配的、緩存穿透擊穿雪崩分別怎么應(yīng)對、分布式鎖怎么實現(xiàn)才不會出事故。這個階段的標(biāo)志是你開始能看懂redis.log里的告警信息能根據(jù)INFO命令的輸出判斷系統(tǒng)健康度能在 Redis Desktop Manager 的連接失敗提示里快速定位問題。我個人建議這個階段配合 Docker 來做實驗因為主從、哨兵、集群的搭建會反復(fù)摧毀重建用容器最省心。2. 環(huán)境準(zhǔn)備安裝、選型與可視化工具的坑2.1 Windows 安裝別去官網(wǎng)下“官方 Windows 版”先說一個很多人踩過的坑Redis 官方是不支持 Windows 的官網(wǎng)只提供 Linux 源碼包。你在網(wǎng)上搜“redis windows 下載”搜到的那些.exe安裝包基本都是第三方移植版或者微軟舊版維護(hù)分支。不是說不能用而是要選對來源。如果你只是本地學(xué)習(xí)我推薦最常見的方案去 Redis 的 Windows 移植倉庫比如 tporadowski/redis下載 zip 包解壓后直接運行redis-server.exe默認(rèn)端口 6379 就能起來redis-cli.exe就是命令行客戶端特別適合新手。注意兩個細(xì)節(jié)第一這個移植版大多停留在 Redis 5.x 或 6.x 版本學(xué)習(xí)和單機(jī)測試沒問題但它和 Linux 官方版在高版本特性上會有差異生產(chǎn)環(huán)境千萬別用第二啟動后進(jìn)程會一直占著控制臺窗口關(guān)掉窗口 關(guān)掉服務(wù)學(xué)習(xí)階段無所謂但你最好知道有redis-server --service-install這種以 Windows 服務(wù)方式運行的命令。Linux 上安裝是更正經(jīng)的做法。以 CentOS 和 Ubuntu 為例源碼編譯是標(biāo)準(zhǔn)的安裝路徑下載源碼包、make、make install。編譯之前記得裝好gcc和make否則會報一堆讓人頭大的編譯錯誤。編譯安裝完Redis 的可執(zhí)行文件會放在/usr/local/bin配置文件在源碼目錄下的redis.conf。這里有個常見坑很多人直接./redis-server啟動結(jié)果發(fā)現(xiàn)根本沒有配置文件生效所有的數(shù)據(jù)持久化和后臺運行配置都失效了。正確姿勢是./redis-server /path/to/redis.conf顯式指定配置文件。2.2 Docker 方式學(xué)習(xí)高可用架構(gòu)最快的路徑如果你要學(xué)主從、哨兵、集群我強(qiáng)烈建議直接用 Docker。手寫配置文件、在一臺機(jī)器上起多個實例不是不行但改端口、改 pid 文件、調(diào)日志路徑會消耗大量耐心。用 Docker 的話一條docker run命令就是一個獨立實例網(wǎng)絡(luò)隔離也是天然的。舉個例子搭建一主兩從的 Redis 主從結(jié)構(gòu)# 創(chuàng)建自定義網(wǎng)絡(luò)方便容器間通過容器名互相訪問 docker network create redis-net # 主節(jié)點 docker run -d --name redis-master --network redis-net -p 6379:6379 redis:7.0 redis-server --appendonly yes # 從節(jié)點1 docker run -d --name redis-slave1 --network redis-net -p 6380:6379 redis:7.0 redis-server --appendonly yes --slaveof redis-master 6379 # 從節(jié)點2 docker run -d --name redis-slave2 --network redis-net -p 6381:6379 redis:7.0 redis-server --appendonly yes --slaveof redis-master 6379啟動完成后進(jìn)入主節(jié)點容器執(zhí)行INFO replication你就能看到兩個從節(jié)點已經(jīng)連接上來。用 Docker 做這種實驗的好處是環(huán)境干凈、銷毀容易、模擬故障特別方便。比如你直接docker stop redis-slave1就能觀察主從斷開后主節(jié)點有沒有報錯、從節(jié)點重連后的數(shù)據(jù)同步情況。注意Docker 方式雖然方便但你要分清兩個概念——--slaveof這是主從復(fù)制的配置不是集群的配置。主從復(fù)制解決的是“數(shù)據(jù)多副本冗余”集群解決的是“數(shù)據(jù)分片存儲”。很多人把這兩個搞混后面看集群文檔時一臉懵。2.3 可視化客戶端Redis Desktop Manager 的替代品Redis Desktop Manager簡稱 RDM是搜索最多、知名度最高的 Redis 可視化客戶端但它的坑也不少。2022 年起新版 RDM 開始收費如果你搜“redis desktop manager 免費版”或者“redis desktop manager 開源舊版”能找到的是最后一個免費開源版本大概停在 2022 年 6 月左右。當(dāng)年很多人就在這個坎上栽了跟頭——下載安裝了新版一打開就彈試用提醒還看不到 key 列表的完整功能。我實際用下來的推薦是如果只是日常學(xué)習(xí)直接用Another Redis Desktop Manager這是一個完全開源免費、持續(xù)維護(hù)的替代品。它的 UI 比舊版 RDM 更現(xiàn)代支持 SSH 隧道、支持可視化查看 stream、支持命令執(zhí)行的實時監(jiān)控對單機(jī)、集群、哨兵模式都有不錯的支持。當(dāng)然如果你只有幾臺服務(wù)器、鍵也不多用命令行的redis-cli其實完全夠可視化客戶端的核心價值是讓你看清 key 的分布、內(nèi)存占用和過期時間排查問題時特別直觀。3. 五大數(shù)據(jù)類型與底層實現(xiàn)邏輯3.1 String不只是字符串的三層編碼String 是一個繞不開的基礎(chǔ)但你真不一定了解它。Redis 的 String 除了存文本還能存數(shù)字配合 INCR/DECR 做計數(shù)器、存二進(jìn)制數(shù)據(jù)比如圖片的字節(jié)流但容易讓你翻車的點在于它的內(nèi)存編碼。Redis 對 String 做了三種內(nèi)部編碼int純數(shù)字、embstr短字符串、raw長字符串。前兩種字節(jié)數(shù)少存儲緊湊超過 44 字節(jié)會自動轉(zhuǎn)成raw。這個 44 字節(jié)不是隨便定的它和 Redis 內(nèi)部redisObject結(jié)構(gòu)的對齊、內(nèi)存分配器的分配粒度有關(guān)你不需要死記但你得理解Redis 對短字符串做了極致優(yōu)化所以設(shè)計 key 時別弄動輒幾百字節(jié)的 value除非業(yè)務(wù)必須。實際測試下來一個幾百字節(jié)的 value 比短字符串多占 3~5 倍內(nèi)存這在千萬級 key 的緩存里就是幾十 GB 的差距。String 最常見的生產(chǎn)場景有三個緩存、計數(shù)器、分布式 ID。計數(shù)器用INCR時要留心INCR不準(zhǔn)的坑——這里說的“不準(zhǔn)”不是 Redis 算錯而是并發(fā)下的計數(shù)語義問題。如果你用INCR做庫存扣減命令本身是原子的沒問題但如果你先GET再SET這就是經(jīng)典的讀改寫競態(tài)丟更新就是必然結(jié)果。類似“瀏覽量 1”這種業(yè)務(wù)用INCR沒問題但“基于當(dāng)前值做復(fù)雜計算再寫回”就必須用 Lua 腳本或者加鎖。3.2 Hash對象類數(shù)據(jù)的“常規(guī)武器”和 Redis 的“乞丐版分片”Hash 在業(yè)務(wù)里最典型的應(yīng)用是存儲對象。比如一個用戶信息最笨的存法是SET user:1001 {name:tom,age:18}問題是改一個字段就要整體覆蓋整個 JSON浪費網(wǎng)絡(luò)和內(nèi)存。用 Hash 存就變成了HSET user:1001 name tom age 18改哪個字段就只更新哪個字段還能單獨對字段設(shè)置過期時間嗎不行Hash 本身沒有字段級別的 TTL這是它和 String 的另一個取舍。Hash 內(nèi)部編碼有兩種ziplist和hashtable。當(dāng)字段數(shù)量少、字段值小的時候用ziplist緊湊存儲字段多了或者值大了自動轉(zhuǎn)成hashtable。這里有一個用 Hash 做“小分片”的思路當(dāng)單個 key 的 value 過大比如一個大 List 存了百萬條記錄會導(dǎo)致讀寫這個 key 的耗時增加這在 Redis 里叫“大 key 問題”。解決方案之一就是把一個大集合拆成多個小 Hash。舉例來說如果你要存一個用戶的行為記錄一天幾十條不要用SET user_actions:1001 大JSON而是按天分片HINCRBY user_actions:20250120:1001 type_click 1這樣每個 key 只負(fù)責(zé)一天的增量數(shù)據(jù)。這個思路在任何需要給單個 key 瘦身的場景都通用理解它能幫你解決一大批“Redis 查詢越來越慢”的問題。3.3 List 和 Stream隊列功能到底用誰List 的LPUSHRPOP組合是最簡單的生產(chǎn)者消費者模式配合BLPOP還能實現(xiàn)阻塞讀很多輕量級消息隊列就是用這個做的。但 List 做隊列有天然的毛病消息丟失沒有重試機(jī)制沒有消費確認(rèn)消費者崩了就永遠(yuǎn)丟了而且LRANGE翻頁取數(shù)據(jù)雖然方便但對長列表是 O(N) 操作列表一長就拖垮性能。所以 Redis 5.0 之后引入了 Stream它的設(shè)計目標(biāo)就是正兒八經(jīng)的消息隊列支持消費者組、支持消息確認(rèn)ACK、支持 PEL待處理列表、支持持久化。如果你在做項目時需要一個“能用但不想引入 Kafka/RabbitMQ”的輕量隊列Stream 幾乎是唯一正解。我自己的建議是隊列非常簡單的場景比如事件通知丟了也無所謂可以用 List要求消息不丟、要消費組、要重試用 Stream。面試問到“Redis 做消息隊列”你要能說出這個演進(jìn)關(guān)系比單純背命令值錢多了。3.4 Set 和 ZSet從去重到排行榜Set 用來做去重和集合運算交集、并集、差集典型場景是抽獎、標(biāo)簽系統(tǒng)、共同好友。ZSet 比 Set 多了分值排序底層是跳躍表 哈希表跳躍表的時間復(fù)雜度是 O(log N)所以 ZSet 在百萬級數(shù)據(jù)量下的排序操作依然很快。排行榜、實時熱點、延時隊列都是 ZSet 的主場。我要提醒一個 ZSet 的坑同樣是ZADD如果你在寫入時不控制 member 的規(guī)模一個 ZSet 里有幾百萬個 member后續(xù)的ZRANGE、ZREM雖然單次很快但內(nèi)存占用會非常嚇人。ZSet 的成員越多跳躍表的指針開銷越大單個 member 的額外開銷可能有幾十字節(jié)。所以設(shè)計上要注意排行榜類數(shù)據(jù)要么只保留 Top N用ZREMRANGEBYRANK定期清理要么按業(yè)務(wù)維度拆 key比如按天拆排行榜千萬別讓一個 ZSet 無限增長。4. 高可用架構(gòu)主從、哨兵與集群4.1 主從復(fù)制REPLICAOF 背后的增量與全量同步主從復(fù)制解決的是“單點故障”問題。主節(jié)點可讀可寫從節(jié)點默認(rèn)只讀主節(jié)點把寫操作同步給從節(jié)點。同步分兩種情況全量同步和增量同步。全量同步發(fā)生在從節(jié)點剛連接主節(jié)點、或者主從數(shù)據(jù)差距過大時。流程是從節(jié)點發(fā)送PSYNC命令主節(jié)點執(zhí)行BGSAVE生成 RDB 快照發(fā)給從節(jié)點從節(jié)點清空舊數(shù)據(jù)并加載快照然后主節(jié)點把快照生成期間新增的寫命令存在復(fù)制緩沖區(qū)里再發(fā)給從節(jié)點。增量同步靠的是主從之間維護(hù)的復(fù)制偏移量如果偏移量還在緩沖區(qū)范圍內(nèi)只需要同步差額部分如果從節(jié)點斷連太久緩沖區(qū)里的數(shù)據(jù)已經(jīng)覆蓋了就得重新全量同步。這里有一個隱藏很深的坑如果從節(jié)點斷連時間很短但主節(jié)點的復(fù)制緩沖區(qū)太小默認(rèn) 1MB可通過client-output-buffer-limit replica調(diào)大也會觸發(fā)全量同步。全量同步一旦頻繁發(fā)生主節(jié)點要反復(fù) BGSAVE 傳輸數(shù)據(jù)CPU 和網(wǎng)絡(luò)都會被打滿導(dǎo)致主節(jié)點阻塞。生產(chǎn)環(huán)境出現(xiàn)“主從反復(fù)全量同步”的情況第一件事就是去看INFO replication里的偏移量差值和緩沖區(qū)大小。4.2 哨兵自動故障轉(zhuǎn)移的“哨兵進(jìn)程”主從復(fù)制解決了數(shù)據(jù)冗余但主節(jié)點掛了從節(jié)點不會自動頂上需要人工切換。哨兵Sentinel就是來解決這個問題的它是一個獨立進(jìn)程負(fù)責(zé)監(jiān)控主從節(jié)點的健康狀態(tài)在主節(jié)點掛掉后自動從從節(jié)點中選舉出一個新主節(jié)點并把其他從節(jié)點重新指向新主節(jié)點。但哨兵不是萬能的。它最被人質(zhì)疑的點是哨兵本身就是單點雖然可以部署哨兵集群而且故障轉(zhuǎn)移期間存在“腦裂”窗口。經(jīng)典場景主節(jié)點和哨兵之間的網(wǎng)絡(luò)發(fā)生分區(qū)哨兵認(rèn)為主節(jié)點掛了選舉出新的主節(jié)點但原主節(jié)點其實還活著還能接收寫入等網(wǎng)絡(luò)恢復(fù)后原主節(jié)點的數(shù)據(jù)就和新主節(jié)點不一致了這部分丟失的數(shù)據(jù)無法找回。所以涉及錢的業(yè)務(wù)比如扣庫存、交易流水不能只靠 Redis 主從 哨兵保證強(qiáng)一致這是架構(gòu)層面的問題。用 Docker 搭建哨兵的時候最容易被坑的是配置文件里的sentinel monitor master-name host port quorum這個host不能寫127.0.0.1因為哨兵需要通知“其他”哨兵和“其他”從節(jié)點連接主節(jié)點。在容器環(huán)境里主機(jī)地址要寫容器網(wǎng)絡(luò)中可達(dá)的別名的地址比如redis-master。這個細(xì)節(jié)我當(dāng)年調(diào)試了一下午白屏的時間都浪費在地址可達(dá)性上。4.3 集群數(shù)據(jù)分片的槽位分配以及為什么集群也有“一票否決”Redis Cluster 和主從哨兵是兩套不同的體系。Cluster 把整個數(shù)據(jù)空間分成 16384 個槽位每個節(jié)點負(fù)責(zé)一部分槽位key 通過CRC16(key) % 16384計算屬于哪個槽。寫請求如果落到了非負(fù)責(zé)節(jié)點節(jié)點會返回MOVED錯誤客戶端要跟著重定向。這是 Cluster 和單機(jī)模式最大的體驗差異——你的客戶端必須支持集群協(xié)議比如 Jedis 的JedisCluster、Lettuce 的集群模式否則會出現(xiàn)各種莫名其妙的連接和寫入失敗。Cluster 本身自帶主從冗余每個主節(jié)點可以掛一個或多個從節(jié)點主掛了從自動頂上。但要注意Cluster 的可用性判定比哨兵更嚴(yán)格如果一個主節(jié)點和它的所有從節(jié)點同時掛掉整個集群就會進(jìn)入不可用狀態(tài)即使其他槽位的主節(jié)點都活著。這就是少數(shù)派不可訪問導(dǎo)致集群不可用的經(jīng)典場景。查詢操作可以通過CLUSTER SLOTS命令看清楚每個槽位的負(fù)責(zé)節(jié)點這個命令排障時非常好使。Docker 部署集群有幾個注意點端口映射不能只映射 6379因為集群通信要用 16379總線端口不映射會造成節(jié)點間通信失敗容器重啟后 IP 變化會讓集群變的不可用解決辦法是給容器設(shè)置固定 IP--ip或使用 Docker Swarm / Kubernetes 的穩(wěn)定 DNS 名稱。這些問題在本地實驗時不明顯但如果你用 KubeSphere 之類的平臺去搭建 Redis 集群就會頻繁遇到“集群狀態(tài)正常但客戶端連不上”的怪事排查到最后基本都是網(wǎng)絡(luò)標(biāo)識變動引起的。4.4 從“會搭”到“會調(diào)”配置參數(shù)背后的取舍搭建完高可用架構(gòu)你才能真正讀懂配置文件里的各種參數(shù)。比如maxmemory和maxmemory-policy決定了內(nèi)存耗盡后的行為——allkeys-lru是全局近似 LRU 淘汰volatile-ttl只對設(shè)置了過期時間的 key 淘汰。再比如appendonly yes開啟 AOF 后appendfsync everysec表示每秒刷盤一次這是性能和可靠性的折中方案always最安全但性能下降明顯no交給操作系統(tǒng)決定但可能丟失一秒鐘的數(shù)據(jù)。關(guān)于 AOF 和 RDB我的建議是生產(chǎn)環(huán)境兩者都開RDB 做快速恢復(fù)的冷備AOF 做災(zāi)備的精確日志。只開 AOF 的坑是AOF 文件會越來越大雖然 rewrite 能瘦身但如果宕機(jī)時 AOF 文件有損壞Redis 可能啟動失敗需要先運行redis-check-aof --fix修復(fù)。只開 RDB 的坑更明顯兩次快照之間的數(shù)據(jù)全部丟失。我遇到過把 RDB 快照間隔設(shè)成 900 秒的項目一次斷電丟了十五分鐘緩存雖然后臺有 MySQL 兜底但那個時間段的請求壓力直接把 DB 打崩了這個教訓(xùn)說明持久化參數(shù)不是隨便填的。5. 緩存治理穿透、擊穿、雪崩與分布式鎖5.1 緩存三大災(zāi)難的應(yīng)對不是靠 Redis 本身緩存穿透、擊穿、雪崩這三個問題面試必問但很多人回答得過于套路化。我按自己的經(jīng)驗說說區(qū)別和處理優(yōu)先級。緩存穿透是查一個根本不存在的數(shù)據(jù)緩存里沒有數(shù)據(jù)庫里也沒有請求直接打到 DB。對 Redis 而言它根本沒壓力壞的是 DB。常見的解法有三種緩存空值設(shè)置一個較短的過期時間比如 5 分鐘、布隆過濾器一種空間效率很高的概率型數(shù)據(jù)結(jié)構(gòu)不存在則直接短路、參數(shù)校驗攔截非法請求。我個人覺得業(yè)務(wù)層參數(shù)校驗是最先該做的布隆過濾器適合 key 基數(shù)大的場景空值緩存適合 key 容易被窮舉暴力的場景。緩存擊穿是某一個熱點 key 過期瞬間大量請求直接打到 DB。注意是“單個 key”不是“一批 key”。應(yīng)對的核心思路是“不讓 DB 扛流量”一是互斥鎖只有一個線程去查 DB 重建緩存其它線程等待或返回默認(rèn)值二是邏輯過期不讓 key 實際過期而是在 value 里塞一個過期時間戳后臺異步刷新適合對一致性要求不高的熱點數(shù)據(jù)。緩存雪崩是大量 key 同時過期或者 Redis 實例宕機(jī)導(dǎo)致流量直撲 DB。處理手法過期時間加隨機(jī)值比如SETEX key (base random(0,300))、熱點 key 預(yù)熱、多級緩存兜底本地 Caffeine 再擋一層。在 Redis 本身宕機(jī)時多級緩存幾乎是唯一能在 Redis 恢復(fù)前保護(hù) DB 的手段否則你再怎么設(shè)計過期時間也擋不住洪水。5.2 分布式鎖SET NX EX 和 Lua 缺一不可說到分布式鎖最常見的實現(xiàn)是基于SET key value NX EX seconds。注意這個命令必須是一條命令完成不能拆成SETNX再EXPIRE因為兩條命令之間有間隙進(jìn)程崩了鎖就沒過期時間了死鎖就是這么來的。然后是釋放鎖很多人寫成if (redis.call(GET, KEYS[1]) ARGV[1]) then return redis.call(DEL, KEYS[1]) else return 0 end為什么要用 Lua因為“判斷值是否是自己的”和“刪除 key”是兩個操作拆開執(zhí)行中間鎖過期了別的線程拿到了鎖然后你把這個別人的鎖刪了。這個 bug 在并發(fā)稍高的場景下必現(xiàn)。用 Lua 把兩步合并成一個原子操作這是分布式鎖最底層的底線。還有兩個進(jìn)階問題要心里有數(shù)。第一個是“鎖過期時間怎么設(shè)”業(yè)務(wù)執(zhí)行時間可能超過鎖的過期時間導(dǎo)致鎖被提前釋放解決辦法是“看門狗”機(jī)制——在持有鎖期間定期續(xù)期但這是 Redisson 這些客戶端庫實現(xiàn)的能力自己裸寫要慎重。第二個是“主從切換鎖丟失”的問題主節(jié)點拿到了鎖但數(shù)據(jù)還沒同步到從節(jié)點主節(jié)點掛了從節(jié)點頂上后鎖就沒了。Redisson 的 RedLock 試圖解決這個問題但代價是復(fù)雜度陡增而且在大規(guī)模部署下正確性爭議一直存在。我的建議是能用數(shù)據(jù)庫唯一約束解決的業(yè)務(wù)就別用 Redis 分布式鎖用了就要接受它的“在極端故障下有鎖丟失風(fēng)險”這個前提。5.3 序列化Redis 客戶端里最容易被忽視的性能瓶頸Java 用 Redis 時序列化方式直接影響你能存什么、占多少內(nèi)存。最常用的兩個StringRedisTemplate是純字符串讀寫存 Java 對象時你得自己把對象轉(zhuǎn)成 JSONRedisTemplateGenericJackson2JsonRedisSerializer可以自動把對象序列化成 JSON 存入取出來時反序列化回對象非常方便但代價是存儲的內(nèi)容里會帶一段class類型信息占用并不大但是讀出來的數(shù)據(jù)肉眼看起來也不是那么干凈。序列化還有一個隱藏痛點默認(rèn)的JdkSerializationRedisSerializerSpring Data Redis 默認(rèn)配置如果沒做任何定制是 Java 原生序列化二進(jìn)制格式占用空間大而且存進(jìn)去的東西你在可視化工具里完全看不懂全是\xAC\xED開頭的一堆亂碼。我強(qiáng)烈建議任何項目都顯式配置 JSON 序列化方式除非你能忍受排查問題時對著亂碼猜內(nèi)容。Python 連接 Redis 也有類似問題用pickle序列化存進(jìn)去的數(shù)據(jù)別指望redis-cli能人類可讀??缯Z言讀寫同一個 key 時一定要統(tǒng)一序列化方案否則等著你的就是亂碼或者反序列化異常。5.4 Lua 腳本不是炫技是原子性的救命稻草Redis 的 Lua 腳本能力很多初學(xué)者不重視覺得“我是業(yè)務(wù)開發(fā)用不上 Lua”。但實際上只要你的操作需要“讀當(dāng)前值 - 計算 - 寫回”這樣的組合Lua 就是最優(yōu)雅的原子性保證。前面說的分布式鎖釋放邏輯只是一個例子還有“限流器”INCR后判斷當(dāng)前計數(shù)是否超限超過則返回失敗整個過程塞進(jìn) Lua 里執(zhí)行就沒有并發(fā)下超發(fā)的問題。Lua 在 Spring 中通常用DefaultRedisScript配合execute調(diào)用在 Python 里是redis.register_script。用 Lua 時有幾個細(xì)節(jié)容易踩坑第一Lua 腳本里要訪問 Redis key 必須通過KEYS[]數(shù)組傳入不能寫在腳本里拼字符串否則 Redis 無法預(yù)分配槽位第二腳本執(zhí)行期間會阻塞 Redis千萬別寫死循環(huán)或者毫秒級都算慢的重計算第三腳本的“確定性”要求它不能在執(zhí)行過程中讀取自身的寫入結(jié)果在集群模式下會直接報錯所以你在集群環(huán)境用 Lua 時要特別克制盡量只對單個 key 做操作。6. 從學(xué)習(xí)到面試高頻題、監(jiān)控日志和排障手冊6.1 高頻面試題我建議你追根溯源別只背答案翻一翻網(wǎng)上流傳的“Redis 面試題”問得最多的是這些Redis 為什么快、緩存穿透和擊穿怎么解決、分布式鎖怎么實現(xiàn)、持久化怎么選、主從和集群的腦裂問題。這些問題并不難難的是你說答案的時候有沒有“現(xiàn)場感”。比如“Redis 為什么快”標(biāo)準(zhǔn)答案是“單線程避免上下文切換 基于 IO 多路復(fù)用的事件循環(huán) 純內(nèi)存操作”但你要是再往深走一步“單線程為什么還能這么快IO 多路復(fù)用到底是什么”很多人的回答就開始含糊了。我自己的理解是Redis 把每個連接封裝成一個文件事件交給內(nèi)核去監(jiān)聽讀寫事件有事件到達(dá)才觸發(fā)回調(diào)處理這本質(zhì)上和 Nginx 的事件驅(qū)動模型類似是把“等待 IO”這件事從線程里解放出去了。你用“餐廳只有一個服務(wù)員但門口的鈴一響服務(wù)員才出去接待而不是坐在門口死等每個客人”這個類比就可以跟小白講清楚。再比如“Kubernetes 上能不能搭 Redis”這其實是一個信號題對方想看你有沒有意識到在云原生場景下Redis 這類有狀態(tài)應(yīng)用對網(wǎng)絡(luò)標(biāo)識Pod IP、節(jié)點名的依賴很強(qiáng)StatefulSet 是唯一合理的選擇。如果你能說出 StatefulSet 的穩(wěn)定網(wǎng)絡(luò)標(biāo)識和 Redis Cluster 的槽位分配之間是什么關(guān)系面試官對你的印象會立刻不一樣。6.2 日志、監(jiān)控和常見錯誤每一個報錯都別放過排查 Redis 問題的第一步是看日志。Docker 部署的實例用docker logs 容器名Linux 直接看日志文件的路徑在 redis.conf 里的logfile配置項。我最常關(guān)注的日志信息有幾類Background saving terminated by signal表示 BGSAVE 失敗通常和內(nèi)存或文件系統(tǒng)有關(guān)Possible nokey和Cant persist這類表示 RDB/AOF 寫入出問題要優(yōu)先檢查磁盤空間df -hMISCONF Redis is configured to save RDB snapshots, but its currently unable to persist on disk這個經(jīng)典的只讀錯誤就是磁盤寫不進(jìn)去導(dǎo)致的。監(jiān)控指標(biāo)要盯四個connected_clients連接數(shù)used_memory內(nèi)存占用keyspace_hits和keyspace_misses算命中率命中率長期低于 80% 說明緩存設(shè)計有問題rdb_last_bgsave_status和aof_last_write_status持久化狀態(tài)。用redis-cli INFO stats | grep keyspace可以快速查命中率用SLOWLOG GET可以看慢查詢結(jié)合實際業(yè)務(wù)分析是查還是不查??梢暬ぞ哌B接不上的排查路徑也很有套路基本按這個順序來第一步ping通不通第二步 telnet 6379 通不通第三步看服務(wù)端有沒有設(shè)置bind 127.0.0.1很多默認(rèn)配置只監(jiān)聽本機(jī)外部當(dāng)然連不上第四步看有沒有requirepass認(rèn)證第五步看云廠商安全組/防火墻有沒有放行 6379。八成問題都出在bind和防火墻這兩項。6.3 壓測、優(yōu)化和一把“性能底牌”最后聊聊性能Redis 本身吞吐很高但別忽略“客戶端導(dǎo)致的問題”。在項目中用了KEYS *這種 O(N) 命令在阻塞事件循環(huán)的同時它可能讓整個 Redis 卡頓到毫秒級超時。用SMEMBERS拉取一個巨大 Set 的全部成員它會撐爆網(wǎng)絡(luò)和內(nèi)存。這些替換方案都是現(xiàn)成的SCAN分批遍歷 keySSCAN遍歷 SetLRANGE注意限制數(shù)量。養(yǎng)成“避免 O(N) 命令”的習(xí)慣是所有 Redis 使用者必須過的一道坎。壓測工具的選擇上redis-benchmark是官方自帶的最簡方案但它模擬不了復(fù)雜業(yè)務(wù)流量真要壓真實場景用redis-cli --latency看延遲分布、用INFO commandstats看每條命令的執(zhí)行次數(shù)和耗時占比比盲目壓 QPS 更有參考價值。我見過很多團(tuán)隊“壓測 QPS 達(dá)標(biāo)”但線上一緊張就告警觀察下來基本都是沒看延遲分布、沒看命令耗時導(dǎo)致的性能優(yōu)化要看“哪個命令最慢”而不是“系統(tǒng)最高支持多少 QPS”。我個人在實際操作中的體會是Redis 不是一個“學(xué)完就完了”的東西它和業(yè)務(wù)形態(tài)綁定得很深。同一個命令在緩存場景、計數(shù)場景、隊列場景中的語義和坑完全不一樣。你學(xué)它的方式?jīng)Q定了你后來踩坑的多少——如果只是背命令你會覺得它很簡單如果你動手搭過集群、看過日志、壓過延遲、親手修過緩存穿透你才會真的理解“高性能中間件”這幾個字背后藏著多少容易被忽略的工程細(xì)節(jié)。這篇筆記是我自己踩坑過程的復(fù)盤寫出來算是給后來者省點時間尤其是那些第一次在項目里引入 Redis 的朋友愿你少走幾步彎路。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
欧美成人黄网色网站| 九九热视频这里只有精品| 蜜臀久久久99久久久久 | 性videos欧美熟妇hdx| 闷骚老熟女15P| 久久人人爽人人爽人人片Ⅴ| 久久伊人亚洲AV无码网站| 熟女91网| 日本高清一本二本免费不卡| 日韩欧美午夜一区二区| 亚洲免费97免费| 黄色片,com| 欧美精品庄| 久操影视| 99热精品国产| 九九Av| 国内亚洲精彩视频在线| 国产精品久久| 男人的天堂2019| 亚洲九九视频在线观看| 中文熟女五十乱码在线| 激情婷婷丁香| 欧美黑人91| 夜夜操av亚洲一区二区| 天天日天天操心| 97香蕉网| 国产丰满熟夫69mpp| 一区二区三区精品视频| 大香蕉乱伦视频网| 影音先锋乱| 日本爽爽爽爽爽爽免费视频| 欧美天天弄| 加勒比伊人综合| av草草在线电影| 国产视频大全| 欧美人妻另类在线| 亚洲欧洲无码一区夜| 婷婷香蕉欧美在线一区二区三区| 国产精品视频精品一二| 色婷婷综合久久久久中文一区二区| 天天爽夜夜操| 黄色不卡视频| 九九九久千久久激情蜜桃在线看 | 亚洲色宗合| 中文字幕无码不卡啪啪| 老熟女综合网| 天天综合亚洲综合| 午夜国产成人精品视频| 岛国片国产成人亚洲播放| 成年人三级黄色片视频| 天天草天天干天天日| 污污汅18禁网站在线永久免费观看| 日本天堂网| 在线播放一级无码视频| 亚洲?V无码专区在线电影| 久久久久久久强迫| 亚洲成人在线高清| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 少妇啪啪自拍| 91丨人妻丨国产丨丝袜| 国产熟女免费观看久久| 嗯嗯啊操我| 久久人妻视频网| 久久精彩视频9| 欧美18禁91| 欧美青青草视频| 208天天久久九九九| 欧美第五页| 美女高潮国产高清| 看大黄色大片原件| 亚洲精品亚洲人成在线麻豆| 玖玖婷婷五月天| 免费操逼视频下载| 成人5码视频| 黑人美精品 A片| 亚洲天堂99| 欧美大香蕉卡久久| 99久久久| 精品性爱| 亚洲一本色道中文无码aV天美| 伊人五月天| 91在线综合网| 中精品一区二区三区| 中出20p| 青青草好吊色| 免费一级视频特黄色大片| 艳美熟妇先锋一二三区| 国产三级中文字幕粉嫩 | 69一区二区| 天堂av2019| 三级日韩一区二区三区| 呦呦一区| 国产人妻天天干精品| 日本色色视频网站| 五月丁香啪啪啪| 色婷婷蜜臀av| 日韩无限资源| 亚洲人成网www| 亚洲色图综合网| 超碰97久久| 国产 v乱码一区二| 天堂国产AV| 99久在线精品99re8蜜桃| 亚洲欧美综合| 国产欧美伊人| 久久欧美激情| 精品欧美А∨无码黑人大荫蒂 | www.色综合| 在线一区| 91女神在线视频| 丁香五月激情五月| 伊人激情| 欧美熟爽综合| 欧洲精品一级二级精品综合视频综合| 久久久久久国产精品免费网站| 中出91| 日本超碰色精品| 84YTCOM性无码| a网站免费观看| 台湾佬中文娱乐网久久久久久久久久com| 欧美宗合网| 久久精品国产72国产精品福利| 久久欧洲| 国产粉嫩出水在线播放| 黑人粗大V S日韩女优视频| 国产高清视频无码在线| caopeng97人妻| 亚洲欧美清纯| 天天干一干| 日韩欧美~中文字| 欧美日韩在线国产在线| 中文在线视频| av片在线观看免费播放| 99热国产| JULIA一区二区三区在线播放| 丝袜色综合| 亚洲精品啪视频| 加勒比综合a∨| 亚洲在线网站| 日韩激情视频| 欧美日韩黄片精品在线| 精品乱子一区二区三区99| 久久久久久加勒比| 蜜臀久久99精品久久久老,,| 不卡在线观看视频| 色 婷97| 青娱乐淫乱1314| 看日韩美女二区三区免费操逼视频| 国产白丝网站| 日产中文字幕2020| 成人26uuu| 涩涩久久精品| 久久久98网站免费视频| 国产剧情在线| 国产精品久久久九九九| 婷婷亚洲综合| 欧美日韩大黄片| 天操老女人| 91三级理论片播放器| 老鸭窝成人| 长长久久88视频| 日本操逼视频在线| 色情亚洲日本成人| 久热9| 日韩干B| 91N欧美| 6080YYY午夜理论片在线观看| 中国AAAAAA黄色片| 无码丰满熟妇一区二区浪潮AV| 成人资源中文字幕在线观看天天| 欧美日韩人妻精品系列一区二区三区| 蜜臀99999| 欧美拳交在线播放| 综合久久婷婷| 日本精品高清一二区一本到| 日本 色 导航| 国产欧美日本亚洲精品| 岛国在线免费视频| 天天综合欧美| 亚洲开心网| 日本精品九九九| 亚州成人A√| 久久女人一区二区三区| 久草视频分类在线| 日韩性爱再线视频| 波多野结衣一级视频| 国产传媒日韩| 欧美日韩中文视频播放| 伊香蕉综合久久久久久久噜噜噜| 青草一区二区| 欧美78P| 亚洲性刺激| 97超级色碰碰| 久久久九精品| 国产91丝袜在线播放蜜月| 大香蕉十区| 亚洲 欧美 天天| 日日干夜夜干| 青青草日韩无码| 大地资源在线观看中文第二页| 日本欧美韩国国产在线| 国产精品视频91久久| 天天澡天天狠天天天做| 中国国产精品一区视频| 操逼不卡中文字幕| 日本韩欧美在线播放a| 玖玖玖玖精品国产剧情| 日韩激情中文字幕有码| 久久久爆乳翘臀一线天伦理视频| 99热这里只有精品8| 91操人| 婷婷五月综合激情| 夜夜嗨一区二区| 999久久久精品国产| 欧美九9 9 9| 亚州色图第三区| 高清不卡一二三区视频......| 日本一区二区电影网站| 91在线色| 蜜臀av中文字幕| 亚洲在线A| 九九五月天| 国产免费小视频| 97超碰超| 国产操逼视频在线观看| 国产精品秘 福利姬在线观看| 欧美疯狂做爰xxxx| 久久中文字幕在线观看| 精品人妻一区二区三区蜜桃视频| 美女人妻色网站| 成人情色一区二区| 亚洲18禁| 91精品久久久久五月天精品| 国产福利小视频高清在线观看| 在线观看精品国产免费| 超碰亚洲97| 亚洲在高跟鞋自慰久久在色线| 天天看高清麻豆| 欧洲亚洲人妻无码高清久久三区四区| 日韩性爱免费观看视频| 777奇米影视777四色| 懂色综合久久久| 啊啊啊啊二区好大| 久久久久久999| 亚洲一区二区在线观看91| 久久91精品国产9丨久久分亭| 日韩av乱伦| 亚洲综合码| 四虎884| 亚洲āv网址在线观看| 黄色区免费观看中文字幕| 日韩精品一区二区三区四虎影视| 大香蕉2017| 天天影视色香欲综合网小说| 五月激情视频| 色眯眯av| 搡老熟女免费视频 | 色欧美天天| 精品国产国产AV| 狠狠爱夜夜| 91人妻中文| 天天干天天日天天射黄色| 天天性射网| 国产第12页| 啊啊啊啊嗯嗯嗯用力好爽 | 日韩亚洲中文字幕在线| 九九九久久久久| 欧亚三区动漫| 韩国黄色片精品久久久| 久久人妻一区二区三区高清| 91搞逼视频| 日本在线不卡123| 高清无码学生妹高潮| 久久这里是精品| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 小说区 图片区色 综合区| 91九色精品熟女内射| 97丝袜亚洲在线播放| 91精品无码久久久久久久| 2018色综合天天操| #NAME?| 99热这里只有精品地址| 精品免费囯产一区二区三区| 久久亚洲精品成人av| Julia Annxxxxx| 艹精品| 亚洲男人天堂网久久| 另类欧美色| 丰满人妻大屁一区二区| 综合熟妇一区二区三区| 亚洲激情综合| 九久精品| 人妻无码久久一区二区三区免费| 在线可观看的黄色网址| 劲爆欧美人妖三区91| 中文字幕乱在线伦视频中文字幕乱码在线| 天天干天天中出av| 探花在线免费观看视频国产一区| 久久视频少妇美女| 蜜乳性色无码专日粉嫩骚逼AV| 日韩精品大香蕉伊人在线| 操逼免费视频无码国产| 亚洲系列欧美| www.激情| 熟女乱伦A| 一区二区国产视频在线观看| 日韩国产欧美伦理在线| 蜜臀中文无码午夜| 成人精品电影| 亚洲aV性爱| 一二三区精品视频| 97久久超碰国产网站| 久久欲| 国产风韵犹存熟妇三区| 午夜精品久久久久久久男人的天堂| 偷拍盗拍亚洲色图图片| 精品九九九九九九九九九| 强奸乱伦资源| 久久久久国产精品久久久| 欧美 亚洲 大香| 一线黄色免费性爱片| 中日韩久久久免费看| 97WW精品| 欧美久久人人网| 国产农村妇女精品一| 天天淫人人妻日日色| 极品另类| 欧美猛交黑寡妇中文字幕| 免费黄色A片| 国内伊人久久久久久网站视频| 伊人久久大香线综合无码| 中国乱伦一区二区| 青娱乐休闲视频在线观看| 亚洲欧美setu| 亚洲一区二区麻豆影院| 亚洲第一在线视频| 一本色道综合久久欧美| 久久线上视频免费看| 91色鬼| 日本三级韩三级99久久| 亚洲乱色熟女一区| 猛猛干| 99爱爱| 黑丝91视频| 国产一区二区欧美日本| 99re公开精品免费视频| 国产一级内射高清视频| 国产又粗又长视频| 91无摭挡| 高潮综合网| 色五月婷婷麻豆在| 3p国产欧美99热| 免费黄色片。| 成人精品在线免费视频| 欧美天天综合| 风间由美日韩欧美久久| 国产超碰97| surenchaopeng| 日韩亚洲美州欧洲综三区一品在线| 国产综合网站在线播放| 啪啪视频亚洲第一| 蜜乳视频网站| 日韩免费在线观看不卡| 中文字幕丰满子伦无码专区在线视频最新| 亚洲色欧| 日本一二三免费久久| 美女91色黄18| 国产精品一二三| 久久精品人妻一区二区| 天天色踪合| 99RE在线视频精品,这里只有精品| 伊人天堂在线| 精品无人区麻豆乱码久久久| 久久9亚洲| 精品久久久中文字幕不| 亚洲男人的天堂一区二区| 99啪啪| www.99色| 91美女视屏| 久久国产精品一级二级三级| 色综合中文字幕不卡| 性欧美另类高清| 殴美牲| 91原创在线观看| 久久25| 欧美少妇内射| 欧美体内射精| 亚洲综合嫩| 亚州性色| 久久久久久亚洲Av无码精| www久久国产精品| 1769国内精品视频| 天堂中文日本在线观看| 操婷婷逼| 看看小穴| 日本天堂网| 日日夜夜骑| 9 9精品一区二区三区| 亚洲密乳AV| 在线毛片片免费观看| 欧美一级国产一级| 成人羞羞视频国产| 欧美不卡在线一区二区| 亚洲天堂AV在线播放| 国产强奸超碰AV| 色色五月天婷婷| 97色爱| 97精品中文字幕| 999热日韩精品| 91免费看一区二区三区| h4610国产人妻| 99久久网站| 色爽爽文学| 日本蜜桃| 久久国产乱子伦精品免费女,网站| 成人蜜乳小视频网站| 色综合av男人天堂| 6080yy午夜理论三级一区二区三区无码| 五月天婷婷色| 91精品国久久久久久无码| 亚洲美腿丝袜香蕉影视欧美成人| 国产成久久综合片| 久草五月| www.acm成人黄色毛片| 99精品国产户外露出| 美腿丝袜高跟网免费视频免费视频| 久久亚州精品成人Av无| 久久99干一本高清| 天操天操夜操夜月操月年年操| 国产女人和拘做爰视频 | 六六久久日韩不卡| 精品欧美А∨无码黑人大荫蒂| 成人夜夜| 成人精品视频| 九九九久千久久激情蜜桃在线看| 久久香蕉国产线看观看猫咪av| 亚洲成人贴图| 中文字幕精品三级久久久| 久久啊哟| 激情视频网址| 黄色AAAAA欧美| 青青色在线观看| 四虎精品一区| 亚洲 欧美 另类 日韩 人妻一区 | 欧美成熟性爱精品| 啊啊啊啊好爽好舒服一区二区易域| 日本A级视频| 狂操嫩妻视频一区二区三区| 国产成人亚洲精品无码古代早漏男| 深夜国产福利| 久久精品国产97欧美精品亚洲 | 久9re热视频这里只有精品| 97久久天天综合色天天综合色电影| 亚洲黑丝在线| 色综合网1| 尤物视频一区| 精品人妻中文字幕高清| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 青青在线视频日韩欧美| 欧美综合中文| 天天操狠狠日夜夜干超大胆开放com大香蕉视频在线观看 | 嫩草美女久久| 男人的天堂 在线一区| 色噜噜人妻av中文字幕| 亚州欧美综合| 98福利在线视频| AV天堂男人的天堂| 人妻日日夜夜精品| 91亚·色| 综合国产97| 亚洲av夫妻操穴网| 久久久草成人网站久久久草成人久久久草久久久 | 精品久久久一本一道| 东京热熟女亚洲视频网站| 中文字幕加勒比海高清无码免费视频| 亚洲欧美一区二区三区在钱蜜桃| 人人人人人人少妇| 久久国产视频性吧| 操人妻少妇中文 | 黄色一级视| 亚洲成熟国产精品美女| 日韩 欧美 另类 人妻| 17c在线成人免费A片观看| 一本色道综合久久欧美| 中字幕人妻一区二区三区| 黄色无码高清黄色无码网站| 日产操逼| 无码一区二区精品视频久久久春药 | 欧美日动态视频| 1二区9| 色综合久久夜色精品国产天堂| 欧美A√综合网 | 天天影视综合色| 女人被添高潮免费视频| 婷婷99| 婷婷久草一区二区三区| 日本不卡三级网在线播放| 很黄很污的免费网站| 强上我不卡卡| 国产一区二区三区,在线观看观看| 加勒比AV天堂| 99re99在线视频| 中文字幕精品码亚洲| 91天天综合网| 日韩黄片视频试看| 人人做人人妻人人夜视频| 激情综合久久| 日韩av熟女一区二区三区成人| 黑人中出21连凳花野真衣| 熟女一区二区三区| 欧洲色综合| 亚洲欧美人妻| 在线综合色| 99操99| 大香蕉欧美伊| 夜夜春夜夜操| 欧美人与动性人交a| 日本熟女中文字幕一区| 啊啊啊啊一区| 亚洲熟女一区| 亚洲牲交| 91小视频| 嗯~啊~快点 死我视频| 中文字幕人乱码中文字的预防方法| 偷拍导航视频网站| 免费少妇一区二区| 99热精品在线| 中文字幕人乱码中文字的预防方法 | 美女主播色欲91抠b在线播放| 亚洲伊人久久精品影院| 天天综合欧美| 国产精品制服丝袜清纯唯美| 极品白嫩福利在线| 青青草女人天天干| 日本国产亚洲一区在线观看| 一级A啪啪啪啪| 中文久久一区| 97资源久久| 色噜噜精品一区二区三| 色女99一级片在线观看| 少妇的嫩逼图片| 亚洲国产奇米影视久久| 伊色综合天堂色97| 久久精品国产97欧美精品亚洲 | 欧美精品庄| 亚洲性少妇| 亚洲有码视频二区| 性爱av在线免费观看| 久久亚洲天天做| 五月情色天| 91爆操视频| 国产60区。| 亚洲综合91| 色欲久久综合| 熟女91网| 天堂中文资源在线bt| 99啪啪| 日本视频在线中文字幕| www.色婷婷| 91男女| 岛园激情| 精久久久| 熟妇操花| 超碰偷拍| 国模精品娜娜一二三区| 国产精彩女在线观看视频| 午夜福利1区2区3区| 爆乳免费黄网站| 黄骗免费网站| 激情四射婷婷四五月天| 久午视频| av中文字幕在线熟女| 女优大全 - 91n| 久久五月婷| 91热热色| 天天操天天插| 97干97色| 热天堂一区二区| 国产高清自拍视频| 内射中出日韩在线观看视频| 色色毛片| 欧美日韩婷婷中文| 日本狂喷奶水在线播放212| 热久日综合| 淫荡少妇免费| 茄子社区国产精品| 成年女人18级毛片毛片免费观看| 中日992视频| 国产免费永久精品无码| 加勒比aⅴ| 91蜜臀熟女| 国产高清午夜成人在线观看| 激情文学欧美| 亚洲国产一级精品毛一级精品看免费视频 | 欧美天天综| 国产在线强奸视频| 九色 蝌蚪 熟女自| 好吊妞转入那个网| 亚洲天堂在线怕怕视频| 性交一区二区在线播放| 中出91视频| 日韩高潮一区| 99re免费视频精品全部| 久操视频免费观看| 啪啪啪综合网| 白丝被操91| 日韩精品电影| 激情婷婷丁香| 亚欧免费| 欧美精品黑人猛交高潮| 欧美中文字幕一区| 五月天黄色激情视频| 老熟女91视频| 中出789在线视频| 中文字幕精品资源在线| 天美传媒婬乱| 蜜桃狠狠色伊人亚洲综合 | 亚洲欧洲日韩中文字幕一区| 亚洲精品一二三四区| 国产欧美一级在线观看| 超碰欧美97| 国产不卡中文字幕免费avi| 男人的天堂一区三区| 久久大黄片| 劲爆欧美人妖三区91| 91视频国品一二三区| 久久五月天婷婷丁香中文字幕| 91天天美女| 91 国产丝袜在线放观看| 一区二区视频在线播放| 国产真实子伦对白| 国产精品69久久久久久久| 中文字幕加勒比海高清无码免费视频| 黄色片大香蕉| 亚洲精品尤物yw在线影院| 超碰色97| 91国产丝袜美女| 黄色小说亚洲| 男人的天堂不卡一区二区| 国产区91柔拿会所技师| 一区二区三区美女超清| 3P丝袜熟女 色综合| 欧美综合 站| 亚洲第一页欧美| 99热精品在线在线| 99精品成人免费看| 日本东京热加勒比久久| 日韩一级二级在线| 五月天婷婷久久| 亚洲欧美日韩精品久久久一区二区 | 啊啊啊啊啊啊啊网址在线观看| 内射日韩大臀美女| 99色视频| 青娱乐日韩无码| 亚洲无码一二三区| 亚洲国产精品有声| 国产91av在线播放| 国产91福利小视频在线观看| 亚洲丝袜综合| 久久伊人影院| 亚91网| 欧美精品系列| 日本不卡免费二区| 精品女同一区| 99蜜月精品久久| 欧美日韩国产人人| 成人欧美日超碰| 亚洲国产精品久久久男人的天堂| 91久久午夜无码鲁丝片久久人妻| 麻豆黄色五月天| 欧美成人9797| 91亚洲人电影| 91男女啊啊啊| 97玖玖人妻| 97一区二区蜜臀| 欧洲中文字幕| 久久综合女优| 亚洲欧美日韩电影网站一区 | 懂色AV中文| 国产60区。| 在线观看A啊啊啊| 99热精品国产| 久久人爽| www久久精品| 久久精品国产亚洲粉嫩| 精品999一区二区| 欧美亚洲情色| 亚洲欧美日韩制服另类| 99久久精品无码一区二区毛片免费 | 欧美激情一| 高清无码91| 青青草中文字幕| 日韩免费簧片| 中日亚韩免费视频| 精品一二三区久久AAA片| 久久伊人五月天| 国产成人亚洲精品无| 91一区二区三区蜜桃| 操日韩第| 欧美黄片视频在线观看免费| 熟妇人妻精品一区二区视频色欲| juliaann精品熟女一区| 国产乱人妻精品入口| av草草在线电影| 日本大香蕉综合网| 亚洲精品成人动漫在线| www.av在线观看| 亚洲综合97中文网| 青娱乐手机日韩在线视频| 国产乱不卡| 白丝AV| 国产精品黄色三级av| 超碰91在线| 性色高清在线| 欧美图片色五月天| 成人蜜乳小视频网站| 夜夜影视四色| 人妻碰碰碰碰碰碰| 久久久久久久久久久久九| 亚洲AV色图| 免费1级a做爰片观看| 丰满的三级少妇欧美久久久| 91色碰| 亚洲文学偷乱拍啪啪啪啪| 九九九网站| 综合五月婷婷亚洲一区| 婷婷久草一区二区三区| 色在线69堂| 国产成人亚洲精品无| 在线无码操| 久久9久9久99久9久9| 九草九九九| 操逼无码操逼| 久久99久久99精品免视看婷婷| 99操| 日韩无码一区二区三区| 国产精品免费美女视频| 欧美色图片91| 亚洲97精品| 亚洲一卡2卡3卡4卡乱码网站| 天天看片天天爽| 人妻蜜桃臀| 国产人伦a片信息免费片| 91久青| 91热| 抽插无码高清一区| 色色综合97| 秋霞网无码| 看日韩美女二区三区免费操逼视频 | 青青欧洲黑| 精品免费视频国产一区| 九九热AV| 夜夜做夜夜爽精品视频| 午夜亚洲国产理论秋霞| 久久久久久大| 人人妻人人玩人人澡人人爽| 国产福利精品最新在线| 欧美色图91p| 1级黄色夫妻对换性交免费看| 欧美日韩超碰在线| 99久草| 欧美一级色| 毛片99-全集电影手机免费观看完整-B029AV| 亚欧毛片基地国产毛片基地| 97干com| 97在线视频免费观看| 久久婷五月| 超碰色大香蕉| 97久久超碰| 超碰色美女| 最新日韩黄片| 亚洲不卡一| 女人被添高潮免费视频| 久久9免费视频| 操比国产| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 欧美A√综合网| 最新岛国大片| 亚洲 欧美 另类 日韩 人妻一区 | 亚洲色图欧美色18直播在线| 激情看片网站| 日日骚一区二区三区| 丁香婷婷大香蕉| 91美女精品| 婷婷久久五月天| 97天天操| 高清不卡国产| 国产成人99久久亚洲综合| 成人热久久精品| 国产91啪| 日本97久久| 91久久婷婷| 久久精品—区二区三区内射| 青青草原狼av| 免费福利视频中文字幕| 91路www| 色小视频蜜乳| 啊啊嗯嗯好爽| 欧洲乱码视频| 午夜福利精品| 99超碰碰| 丝袜狠狠草尤物人妻av91| 内射老妇BBWX0C0CK| 国产偷人妻精品一区二区在线| 中文字幕精品区先锋资源| 国产精品在线免费| 麻豆久久久久久久久丝袜| 欧美αv.com| 超碰9 7女人| 青青网三级视频| 性色av大全| 四虎免费视频| 96久久科窝| 黑人狂躁日本妞一区二区三区| 九久久精品| 国产精品一区二区在钱播放| 岛国在线免费视频| 欧美小说区视频区| 哈哈操电影AV| 黄片不用下载在线观看| 久久大黄片| 日本熟妇色熟妇在线视频播放| 国产激情综合| 亚洲欧洲自拍图片专区满春格| 人人操人人射人人干| 成人欧美一区二区三区黑人一| 免费观看网黄| 69久久| 自拍丝袜美腿人妻| 日韩性爱高清免费视频| 91性高朝久久久久久久久| 欧美亚洲清纯| 玖玖综合色| 超碰人人色| gogogo免费高清看中国国语| 青青草一区二区高清无码视频| 亚洲激情 欧美色图| 97色婷| 日韩激情啪啪啪| 中文视频在线观看| 一本色道久久综合狠狠操| 亚洲色图加勒比| 亚洲丁香花色| 肉嘟嘟www视频在线观看高清| 97视频网站| 亚洲,欧美,综合网| 性性久久| 极品粉嫩一区二区| 97福利视频| 久久久久国产精品喷潮免费观看臀| 综合网天天| 97在线播放 | 偷拍片久久| 欧美 综合| 欧插网站| 五月天激情小说网| 成人福利视频网| 热久久国产| 伊人热综合| 97精品一区二区三区免费| 黑人综合色| 色麻豆AV| 亚洲精品骚逼| 91色五月俺来也| 亚码激情| 熟妇熟女视频一区二区三区| 最新国产精品久久精品| 午夜福利免费福利视频| 吖在线不卡一区二区国产剧情 | 精品夜夜澡人妻无码AV| 亚洲少妇免费视频\| 亚州欧美一区| 国产地址二三| 亚洲视频一二区| 久久九九一区二区三区成人| 精品网站9999| 亚洲国产精品久久久久婷婷青年| 人妻天堂综合网| 天天干天天拍| 激情综合网激情五月天| 亚洲夜夜欢无码一区二区| 日本性爱少妇| 一区二区三区激情在线观看| 91精品无码人妻系列| 国产色精品午夜大片| 日本五十路熟女一区二区| 无码WWW免费视频网站| 韩日性爱av| 啪啪AV导航| 欧美一区二区观看在线| 在线v中文字幕一区二区三区| h无码动漫在线观看| 国产女人操逼视频| 8050无码八戒| 婷婷操逼| 日韩精品99999| 一区二区三区 丝袜 高跟 美腿| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 思思久热在线精品66| 国产肏逼网站| 日本十八禁免费看污网站| 岛国网址国产| 97摸视频| 碰碰在线视频| 91精品人妻一区二区三区蜜桃臀| 久久亚洲天天做| 嗯嗯啊啊好大好爽| 91模特在线观看| 黄页av| 免费视频在线一区二区不卡| 欧美黑人精品在线播放| 在线国产一区二区av| 成人欧美一区二区三区黑人一| 欧美另类色| 久久婷婷亚洲欧| 亚洲精品蜜桃久久久| 97AV在线观看| 欧美精品23| 国产av美女被艹的乱叫| 大香蕉免费中文| 岛国人妻少妇av在线观看| 任我爽在线视频免费观看| 超碰人人干天天射| 蜜乳AV免费观看| 把腿张开老子CAO烂你| 婷色五月天| 麻豆伊人网| 色97欧美| 久久透逼视频| 人人扣人人操| 色婷婷综合久久中文字幕雪峰| 亚洲青青草| 亚洲成a人v欧美综合天堂下载| 免费无码国产精品v片在线观看| 91精品伊人久久久大香线蕉91| 久久男人的天堂国产| 蜜桃久久久久久久久久久久| 97操操| 少妇与黑人高潮在线| 久久影视二区三区行押| 久久久久亚洲Av无码专区老牛影视| 日本性爰一道本| 久久精品一区二区三区不卡| 男人精品天堂一区| 亚洲色综合| 亚洲欧美国产其他二区| 中文字幕 一区二区 亚洲无码| 蜜桃臀一区二区aV| 国产精品福利资源在线尤物| 国产又色又爽又舒服的三级视频| 嗯嗯啊啊操死我| 天天综合网~91| 日本熟女免费視颖| 麻豆天美国美国产| 色噜噜日韩精品| 丁香六月激情| 成人影 天天操 亚洲| 欧美激情一| 1769国内精品视频| 超碰日本97美女人妻人人玩人人爱| 久久精品99久久久久久| 韩国免费播放一级毛片| 伊人久久婷婷| 乱操9999| 亚洲色图尤物视频| 最新一二三区视频| 亚洲一区二区av| 欧美性爱十八禁| 欧美情色贴图| 国产精品麻豆成人av| 欧美综合站| 欧亚 另类 久| 综合久久欧美| 激情五月天校园春色网| 欧美性爱18观看| 精品国产一区二区久久| 天久久久噜噜噜久久国产精品爽爽| 久久国内| 在线小视频| 乱伦1色页| 97色视频在线| 欧美呦呦性爱| 天美一二三在线观看Av| 99热在线观看| 中文高清一区二区的| 五月情色天| 91校园春色长篇| 中文字幕激情小说| 久久五月视频| 东北老熟女| 97自拍视频在线| 上床啊啊啊| 另类视频在线| 搡老女人老熟女91老熟女综合网| 国内精品久久久久影院亚洲| 蜜桃臀一区二区三区久久| AV污污污污| 99国产精品自在自在| 亚洲天堂人妻熟妇视频| 色老牛| 东亚亚洲无码高清| 熟女久久久| 丰满人妻大屁一区二区| 综合色久欲| 91精品久久综合熟女| 99热欧美| 在线黄页看毛片| 亚洲精品久久久久毛片A片拉屎 | 成人青青草原伊人| 激情丁香五月婷婷| 91欧美在线| 97天天做| 99久久婷婷丁香| 亚洲脚交| 色婷婷五月天| 国产中出内射一区二区| 欧美性爱一区二区三区四区 | av日韩国产一区二区| 天天搞欧美| 激情99| 88xx成人精品视频| 色阁阁AV综合网| 日本三级日本三级99| 人人妻人人玩人人澡人人爽| 91丝袜在线观看视频在线观看| 岛国片在线视频网站| 99re在线视频| 95人妻爽爽人人做人人澡| 大香蕉欧美伊| 国产一级做a爰大片免费久久| 蜜臀久久久99久久久久| 日本日日色视频| 青娱乐国产精品| 亚洲 在线| 超碰中文字幕人妻草一区| 中文字幕日本久久| 可免费观看的av毛片中日美韩| 狠综合网| 99在线精品视频| 国产日逼视频| 精品人妻一区二区三区不卡断 | 屌逼麻豆| 久久黄色性爱视频| 四虎影视欧美| 天天干天天中出av| 久久丁香| 国产99精品一区二区三区免费| 伊人性在线视频| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 一本一道波多野毛片中文在线| 欧美日韩小说| 十八禁黄色成人网站观看| 中文字幕 国产 精品| 日本国产亚洲一区在线观看| 91在线一起| 久久夜嗨| 日日夜夜干| 久久夜黄色无码A级大片| 国产 码在线成人网站| 欧美体内射精| 天天综合,91入口| 视频二区美腿制服人妻欧美| 丰满人妻-区二区三区免费看 | 美女毛片999| 在线色导航| 伦理第一页| 激情小说亚洲视频| 欧美日韩人人精品| 婷婷丁香五月激情啪啪| 欧洲欧美视频一区二区| 天天肏天天干| 国产精品69久久久久孕妇欧美| 亚洲综合113页| 五月综合色| 秋霞曰韩R级| 国产精品一区av在线| 9久久久久| 日本精品加勒比海一区| 亚洲素人网| 久操操| 青草青青久久久久久国产| 日本福利二区视频| 日韩成人性爱AV| 性爱乱伦视频免费| 人妻性爱一区二区| 人人妻人人玩人人澡人人爽| 欧美色图99| 人人妻天天做天天爽| 天天干人妻| 国厂麻豆77q4| 九热大香蕉| 日韩人妻网站| 日韩二级| 亚洲精品蜜桃久久久一区二区三区| 亚洲精品电影| 国产自啪精品视频网站黑丝| 足交视频老司机| 欧美亚洲厕所精品偷拍91 | 密桃99999| 九九99精品视频在线观看| ?亚洲伊人伊成久久人综合网| 亚洲av综合色区无码一| 亚洲国产精品有声| 在线国产福利网址导航| 亚洲囯产精品女人久久久| 在线观看高清AV| 国内偷自视频区视频综合| heyZO天然素人无码AⅤ专区| 欧美日韩午夜精品一区二区三区| a片久久久久久久久久久久 | 97超碰色屌| 啊啊啊啊啊好大好舒服想要| 天美一二三在线观看Av| 麻豆天美传媒在线视频天堂| 五月丁香影视| 亚洲97网站| 蜜臀va69| 久久久久久久| 欧洲精品一级二级精品综合视频综合 | 深夜操逼网| 无码99| 久久只有精品一区二区三区| 欧美 传媒 麻豆 日韩 偷拍| 欧洲与亚洲欧美精品中文字幕| 亚洲色资源| 精品美女人人干| 日本一二三免费久久| 酒色综合网| 日韩av无码网站| 免费福利视频中文字幕| 免费观看的黄色的网站| 韩国黄色片精品久久久| 天天日天天插| 久久久99久9| 日本淫穴在线| 久久大香蕉97| 国产捆绑一区| 免费的很黄很污的全部视频| 亚洲一区二区精品福利| 激情五月综合网| 91色综合激情| 伊人久久亚洲色欲综合网站 | 男人兔费天堂| 亚洲成人精品久久久| 久久久久久久久国产| 超碰在线免费一区二区三区| 人人么人人操| 久久鲁干| 天美av在线观看| 亚洲熟女乱综合一区二区三区| 色婷婷日韩精品一区二区三区| 超碰97护士| 欧美性爱中文字幕无线码| 久/久精品99看9| 久久亚洲天天做| 欧美,日韩,中文,另类| 色色色日本| 免費黃色視頻觀看一| 另类亚洲一区二区三区| 国产操逼逼网|