免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

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

Redis生產(chǎn)實踐:緩存一致性、分布式鎖與主從復制避坑

Redis生產(chǎn)實踐:緩存一致性、分布式鎖與主從復制避坑 Redis 幾乎是后端面試的必考科目緩存一致性、分布式鎖、持久化、主從復制、內存淘汰網(wǎng)上成套的八股文背下來二十分鐘能把面試官答得頻頻點頭。但我?guī)н^的新人里面試分數(shù)最高的那個把 Redis 接進項目第一周就出了一次線上事故用戶改完昵稱刷新頁面又變回舊的過了十幾秒才恢復。排查下來代碼里寫的正是八股文標準答案——先更新數(shù)據(jù)庫再刪除緩存。問題不在結論而在于他把結論當成了萬能公式完全沒有考慮主從延遲、并發(fā)讀寫和刪除失敗的場景。這篇東西不打算再給你抄一遍面試題答案。我更想做的是把那些被壓縮成一句話的標準答案重新展開還原它們成立的前提條件再補上真正落到生產(chǎn)環(huán)境時會遇到的邊界情況。內容覆蓋數(shù)據(jù)類型選擇、緩存一致性方案、分布式鎖的實現(xiàn)演進、RDB/AOF 與主從復制細節(jié)、大 key 熱 key 治理以及安裝部署和監(jiān)控這些動手環(huán)節(jié)。不管你是正在準備面試還是已經(jīng)接手了一個跑著 Redis 的項目都能從里面找到能直接用的判斷依據(jù)。1. 背得滾瓜爛熟的答案為什么一上生產(chǎn)就變形1.1 八股答案的通用毛病結論正確前提被吃掉了八股文最大的問題是它把結論和前提一起壓成了一句話而背誦的人往往只記住了后半截。比如Redis 是單線程的所以快這句話在 Redis 6.0 之前基本成立但真正的快來自內存操作、IO 多路復用和高效的數(shù)據(jù)結構而不是單線程這個屬性本身Redis 6.0 之后網(wǎng)絡 IO 已經(jīng)多線程化了命令執(zhí)行仍然是單線程。如果你在面試里只答單線程所以快遇到追問就答不上來如果在生產(chǎn)里按單線程所以不會并發(fā)問題去做設計那更危險——單線程指的是命令執(zhí)行不是你的業(yè)務邏輯。再舉一個例子Redis 支持事務。八股文里背的是 MULTI、EXEC、DISCARD、WATCH 四個命令。但真實的語義是Redis 事務不支持回滾某條命令執(zhí)行失敗其余命令照樣執(zhí)行它只是把命令打包一次性、按順序執(zhí)行中間不會被其他客戶端插隊。很多人第一次用事務是因為想實現(xiàn)檢查余額再扣減這類邏輯結果發(fā)現(xiàn)并發(fā)下依然超賣。原因很簡單事務的原子性是執(zhí)行原子不是檢查與執(zhí)行之間的隔離。這類理解偏差就是八股答案最常見的失真方式。我自己的經(jīng)驗是每背一條 Redis 結論就強迫自己問三個問題這條結論依賴什么前提前提被破壞時會發(fā)生什么我在代碼里怎么檢測前提是否被破壞這三個問題問下來八股就變成了工程判斷。1.2 我遇到的第一次翻車更新數(shù)據(jù)庫和更新緩存的順序回到開頭那次事故。當時的代碼邏輯是標準的 Cache Aside寫請求先更新 MySQL再DEL對應的緩存 key讀請求先查緩存未命中再查 MySQL 并回填。單機壓測完全沒問題線上卻出現(xiàn)了舊值復活。原因藏在主從復制里。我們的 MySQL 是一主兩從寫走主庫讀走從庫。寫請求更新主庫成功后立刻刪緩存緊接著一個讀請求進來緩存未命中去從庫讀——而從庫的復制還沒追上來讀到的仍然是舊值然后這個舊值被回填進了緩存。之后所有讀請求都命中這個舊值直到下一次寫入把它刪掉。整個過程不超過 100 毫秒但影響持續(xù)了十幾秒。這個坑八股文里通常不會提因為八股文默認數(shù)據(jù)庫讀寫都在同一個節(jié)點。一旦引入主從刪除緩存和讀庫回填之間的窗口就被放大了。解決辦法也不復雜要么讀寫相關的請求強制走主庫犧牲一點擴展性要么給緩存設置一個較短的兜底 TTL讓臟數(shù)據(jù)自己過期要么引入 binlog 訂閱做緩存失效比如 Canal 這類方案。我最后選的是回填時加短 TTL 關鍵業(yè)務讀寫走主庫的組合改動小風險可控。1.3 一份自查清單把八股答案翻譯成生產(chǎn)約束踩過幾次坑之后我整理了一份對照表每次評審涉及 Redis 的代碼都會過一遍。它不復雜但能擋住大部分低級事故。八股說法生產(chǎn)里必須補上的前提常見的兜底手段先更新 DB 再刪緩存讀寫是否走同一節(jié)點、刪除是否可能失敗短 TTL、binlog 訂閱、重試刪除Redis 是單線程的指的是命令執(zhí)行業(yè)務邏輯仍并發(fā)用 Lua 或SET NX保證操作原子分布式鎖用SETNX必須原子設置過期時間改用SET key val NX PX msAOF 更安全取決于appendfsync的取值一般用everysec權衡性能緩存能提升性能前提是命中率足夠高監(jiān)控命中率低于閾值就排查 key 設計主從能提高可用性存在復制延遲且不是自動故障轉移主從 哨兵或直接上集群注意表格里的兜底手段沒有一個是萬能的它們的共同點是降低故障持續(xù)時間而不是杜絕故障。做緩存設計時先接受一定會有不一致窗口這個事實再考慮窗口有多長、能不能被業(yè)務容忍。2. 五種基礎類型背后的真實選擇邏輯2.1 先想清楚數(shù)據(jù)長什么樣再決定用哪種類型八股文講數(shù)據(jù)類型通常是一句String 存字符串Hash 存對象List 存列表Set 存集合ZSet 存有序集合。背是背下來了用的時候還是全用 String把對象序列化成 JSON 塞進去。這樣也能跑但會白白浪費 Redis 的一個核心優(yōu)勢部分讀寫。舉個具體場景。用戶信息有 id、昵稱、頭像、積分、等級等十幾個字段如果整體序列化成 JSON 存在 String 里要改一個昵稱就得把整個 JSON 讀出來、反序列化、改字段、再序列化寫回去。這段時間里如果另一個請求改了積分就會互相覆蓋。換成 Hash 之后HSET user:1001 nickname 新昵稱只動一個字段互不干擾而且內存占用通常比 JSON 更小小 Hash 會使用緊湊編碼。再比如排行榜。用 List 也能實現(xiàn)但每次查詢排名都要遍歷ZSet 天生帶 score 和排名ZADD更新、ZREVRANGE取 Top N、ZREVRANK查排名都是 O(log N)。再比如統(tǒng)計某篇文章的獨立訪客這種去重需求Set 能做但用戶量大了內存會爆HyperLogLog 更合適——誤差 0.81%內存固定 12KB 左右。我的判斷順序是這樣的先看數(shù)據(jù)是不是整體讀寫String、字段級讀寫Hash、有順序且需要兩端操作List / Stream、需要去重Set、需要按分數(shù)排序或范圍查詢ZSet。定下類型之后再考慮底層編碼和內存。2.2 底層編碼的切換閾值決定了你的內存賬單同樣是 ZSet元素少的時候用的是 ziplistRedis 7 里改叫 listpack元素多或者單個元素超過閾值就轉成 skiplist。這兩者的內存差距可能有三到五倍。八股文一般只會說小數(shù)據(jù)量用壓縮列表大數(shù)據(jù)量用跳表但不會告訴你閾值在哪、怎么調。相關配置項在 redis.conf 里是這樣的# ZSet 使用 listpack 編碼的條件Redis 7.x 稱謂 zset-max-listpack-entries 128 zset-max-listpack-value 64 # Hash hash-max-listpack-entries 128 hash-max-listpack-value 64 # List list-max-listpack-size 128 # Set元素全是整數(shù)且數(shù)量不超過閾值時用 intset set-max-intset-entries 512這些值不是越大越好。調大閾值小對象的內存占用會下降但單次操作時因為要整體重新分配內存延遲會上升。我做過一次實測把hash-max-listpack-entries從 128 調到 512某業(yè)務的內存下降了約 18%但 P99 寫延遲從 0.4ms 漲到了 0.9ms。對延遲不敏感、內存緊張的場景值得調對延遲敏感的場景就別動。提示轉換是單向的一旦從緊湊編碼轉成跳表或哈希表即使后來元素減少也不會自動轉回去除非刪除并重建 key。所以如果某個 key 會周期性膨脹考慮給它加上定時重建的邏輯。2.3 被八股文漏掉的那幾個類型Bitmap、HyperLogLog、GEO、Stream基礎五類型之外Redis 還提供了幾個特殊結構它們在特定場景下能把復雜度和內存都降一個量級。Bitmap 本質是 String但可以用位操作。簽到場景特別典型一個用戶一年 365 天用 Bitmap 只需要 46 字節(jié)SETBIT sign:1001 20240315 1打卡BITCOUNT統(tǒng)計總天數(shù)BITOP做多用戶聚合。如果用 Set 存日期字符串一個用戶一年就要幾十 KB。HyperLogLog 用來做基數(shù)統(tǒng)計PFADD添加、PFCOUNT估算。它的特點是內存固定、有誤差、不支持刪除單個元素。適合UV 統(tǒng)計搜索結果去重計數(shù)這類不要求精確的場景。要注意的是PFCOUNT在多 key 合并時會比較慢因為它要把多個 HLL 結構合并計算。GEO 是建立在 ZSet 之上的地理位置結構GEOADD存經(jīng)緯度GEOSEARCH按半徑或矩形查詢。做附近的店鋪這類功能不用自己算球面距離了。Stream 是 5.0 引入的消息隊列結構有消費者組、消息 ID、ACK 機制。它比 List 實現(xiàn)的簡易隊列更完整但也不是專業(yè) MQ 的替代品——沒有復雜的重試策略、死信隊列需要自己實現(xiàn)。這幾個結構八股文里出現(xiàn)頻率不高但面試里一旦問到你還知道哪些數(shù)據(jù)結構能講清楚它們的適用邊界比背定義有用得多。3. 緩存一致性三種方案的真實差異3.1 三種更新順序的失效概率到底差在哪關于緩存和數(shù)據(jù)庫的一致性網(wǎng)上流傳的方案主要有三種先更新 DB 再刪緩存、先刪緩存再更新 DB、先更新 DB 再更新緩存。八股文的結論一般是用第一種但很少解釋為什么。先看先更新緩存在更新 DB。這個方案的問題最明顯兩個并發(fā)寫請求A 先更新緩存為值 2B 后更新緩存為值 3但數(shù)據(jù)庫層面 B 可能先落庫、A 后落庫最終數(shù)據(jù)庫是 2、緩存是 3長期不一致。而且如果緩存更新成功、數(shù)據(jù)庫更新失敗臟數(shù)據(jù)就留在緩存里了。再看先刪緩存再更新 DB。這個方案在并發(fā)下有個經(jīng)典漏洞請求 A 刪除緩存然后去更新數(shù)據(jù)庫在 A 更新完成之前請求 B 進來讀緩存未命中讀到數(shù)據(jù)庫里的舊值回填緩存之后 A 才更新完數(shù)據(jù)庫。結果緩存里是舊值數(shù)據(jù)庫里是新值。要堵住這個漏洞需要在 A 更新完之后再刪一次緩存也就是延遲雙刪。最后是先更新 DB 再刪緩存。這個方案的失效窗口更小但依然存在就是我前面遇到的主從延遲問題刪除緩存之后、主從同步完成之前的讀請求會把舊值回填。理論上要出現(xiàn)這個情況需要讀請求恰好在這個窗口內到達概率不高但現(xiàn)實中確實會發(fā)生。方案主要風險失效窗口是否需要額外機制先更新 DB 再更新緩存并發(fā)寫覆蓋、更新緩存的成本高大不建議采用先刪緩存再更新 DB讀請求回填舊值大需要延遲雙刪先更新 DB 再刪緩存主從延遲導致回填舊值小短 TTL 或 binlog 訂閱3.2 延遲雙刪的延遲時間怎么算不是拍腦袋很多人寫延遲雙刪延遲時間直接寫 500 毫秒或者 1 秒問他為什么答網(wǎng)上都這么寫。這個值其實是可以算的。延遲時間要覆蓋的是從第一次刪緩存到數(shù)據(jù)庫更新完成并被讀到新值這段時間主要包括三部分主從復制的延遲、業(yè)務更新數(shù)據(jù)庫本身的耗時、以及可能的網(wǎng)絡抖動。前兩項可以監(jiān)控MySQL 的Seconds_Behind_Master或者SHOW SLAVE STATUS里的延遲加上業(yè)務 SQL 的 P99 耗時。假設主從延遲 P99 是 30ms更新 SQL 的 P99 是 20ms那么一次延遲刪除至少要覆蓋 50ms取兩倍余量就是 100ms。如果主從延遲經(jīng)常抖到幾百毫秒那延遲雙刪本身就不適合因為你要延遲很久才能刪第二次而且第二次刪除還可能失敗。我的做法是分兩檔主從延遲穩(wěn)定的業(yè)務用 200ms 左右的延遲刪除配合 5 到 10 分鐘的緩存 TTL 兜底主從延遲不穩(wěn)定的業(yè)務干脆把讀請求強制路由到主庫用一點性能換一致性。另外第二次刪除一定要放在異步線程或者延時隊列里做不能阻塞主流程并且刪除失敗要能重試。3.3 穿透、擊穿、雪崩三個病的藥方不能混用這三個詞長得像但成因完全不同方案也不能互換。緩存穿透是查詢一個數(shù)據(jù)庫里也不存在的 key每次請求都穿過緩存打到數(shù)據(jù)庫。典型來源是惡意刷接口或者業(yè)務上用了自增 ID 之外的隨機標識。方案有兩個一是把空結果也緩存起來設置較短的 TTL比如 60 秒二是用布隆過濾器提前攔截把所有可能存在的 key 預先放進去查詢前先判斷。注意布隆過濾器有誤判率判斷存在時可能出錯判斷不存在時一定準確。所以它的正確用法是說沒有就一定沒有說有不一定有。另外它不支持刪除元素如果要支持刪除得換成計數(shù)布隆過濾器或者定期重建。緩存擊穿是某個熱點 key 突然過期高并發(fā)請求同時打到數(shù)據(jù)庫。方案有兩個互斥鎖只讓一個請求去查庫回填其他請求短暫等待或返回舊值邏輯過期key 本身不設 TTL而是把過期時間寫在 value 里命中后判斷是否過期過期則異步更新當前請求先返回舊值。緩存雪崩是大批 key 在同一時刻過期或者 Redis 實例整體不可用。前者通過給 TTL 加隨機擾動解決比如基礎 30 分鐘加上 0 到 5 分鐘的隨機值后者要靠多級緩存、集群部署、限流熔斷來解決本質上是可用性問題不是緩存設計問題。4. 分布式鎖從 SETNX 到 Redlock 的實際演進4.1 從 SETNX 到 SET NX PX原子性這一步省不得分布式鎖的經(jīng)典八股寫法是SETNX lock:order:1001 1 EXPIRE lock:order:1001 30這兩條命令分開執(zhí)行中間如果服務重啟或者網(wǎng)絡斷開EXPIRE沒執(zhí)行成功鎖就永遠不過期后續(xù)所有請求全部阻塞。這個坑很多資料都會提正確寫法是把兩條合并成一條原子命令SET lock:order:1001 requestId NX PX 30000這里有幾個細節(jié)值得展開。第一value 必須是唯一標識比如 UUID 或者機器標識 線程 ID因為解鎖的時候要校驗這把鎖是不是自己加的。第二用PX而不是EX毫秒粒度更適合控制鎖的過期時間。第三NX保證只有 key 不存在時才設置成功。4.2 鎖續(xù)期、看門狗以及業(yè)務沒執(zhí)行完鎖先過期設置了 30 秒過期如果業(yè)務執(zhí)行了 40 秒鎖會在第 30 秒自動釋放此時其他線程就能拿到鎖進入臨界區(qū)兩個線程同時操作共享資源鎖形同虛設。這個問題有兩種應對方式。第一種是給業(yè)務加超時控制保證執(zhí)行時間遠小于鎖的過期時間。這種做法簡單但前提是業(yè)務耗時可控涉及外部調用、批量處理時很難保證。第二種是鎖續(xù)期。啟動一個后臺線程在鎖快過期時比如剩余三分之一時間檢查業(yè)務是否還在執(zhí)行如果是就重新設置過期時間。Redisson 的看門狗機制就是這個思路默認鎖過期時間 30 秒每隔 10 秒續(xù)期一次。用起來方便但要注意如果應用進程被 kill續(xù)期線程也跟著消失鎖最多再存活 30 秒這是可以接受的但如果發(fā)生了長時間的 GC 停頓續(xù)期線程可能來不及執(zhí)行鎖提前過期這就是所謂的鎖失效窗口。4.3 主從切換與 Redlock 的爭議落到實踐是什么樣單節(jié)點 Redis 加鎖有個致命問題如果主節(jié)點在鎖還沒同步到從節(jié)點時就宕機了故障轉移后從節(jié)點升為主節(jié)點鎖信息丟失第二個客戶端就能拿到同一把鎖。圍繞這個問題Redis 作者提出了 Redlock 算法向多個獨立節(jié)點加鎖超過半數(shù)成功才算拿到鎖。但 Redlock 也受到過質疑核心論點是它依賴各節(jié)點的時間假設在時鐘漂移、進程停頓的情況下仍然可能失效而且它解決的是鎖的互斥性解決不了持鎖者對共享資源的操作是否安全。落到工程實踐我的選擇順序是這樣的場景推薦方案理由同一進程內的并發(fā)控制本地鎖無需網(wǎng)絡開銷性能最好單實例、容忍極低概率失效單節(jié)點 Redis 鎖 唯一 value Lua 解鎖簡單可靠滿足絕大多數(shù)業(yè)務對一致性要求極高數(shù)據(jù)庫唯一索引 / 樂觀鎖版本號依賴數(shù)據(jù)庫事務不依賴緩存可用性跨機房、強一致基于共識算法的協(xié)調服務復雜度高但語義明確我自己的項目里訂單創(chuàng)建這類不能重復的操作最終用的是數(shù)據(jù)庫唯一索引兜底 Redis 鎖做快速失敗。Redis 鎖擋掉 99% 的重復請求剩下的漏網(wǎng)之魚由唯一索引攔截觸發(fā)異常后返回請勿重復提交。這樣即使 Redis 出問題業(yè)務也不會出錯只是壓力會打到數(shù)據(jù)庫。4.4 Lua 校驗解鎖為什么不能直接 DEL解鎖最容易被忽略的一點是不能直接DEL。因為如果 A 的業(yè)務超時了鎖自動過期B 拿到了鎖這時 A 執(zhí)行完業(yè)務來解鎖直接DEL就把 B 的鎖刪了。所以必須校驗 value 是不是自己的而校驗 刪除這兩步必須是原子的只能用 Lua-- KEYS[1]: 鎖的 key -- ARGV[1]: 當前請求的唯一標識 if redis.call(GET, KEYS[1]) ARGV[1] then return redis.call(DEL, KEYS[1]) else return 0 end在 Java 里通過RedisTemplate.execute(RedisScript, keys, args)執(zhí)行。很多人用if (get(key).equals(id)) del(key)這種寫法在并發(fā)下依然會出問題因為GET和DEL之間鎖可能剛好過期并被別人搶走。提示Redis 集群模式下執(zhí)行 Lua 腳本所有 key 必須落在同一個槽位。如果鎖的 key 是按業(yè)務 ID 拼的一般沒問題但如果腳本里同時操作多個 key需要用 hash tag比如{order:1001}:lock強制它們同槽。5. RDB 與 AOF分工、代價和主從復制鏈路5.1 RDB 與 AOF 不是二選一而是分工八股文的對比表通常是RDB 快、文件小、可能丟數(shù)據(jù)AOF 安全、文件大、恢復慢。結論生產(chǎn)環(huán)境建議同時開啟。這句話沒錯但沒解釋為什么同時開啟更好。RDB 是某個時間點的數(shù)據(jù)快照適合做備份和全量恢復也適合主從復制的首次同步。AOF 記錄的是寫命令能保證更高的數(shù)據(jù)安全性但它會隨著時間不斷增長需要重寫來壓縮。Redis 4.0 之后引入了混合持久化AOF 重寫時會把當前數(shù)據(jù)以 RDB 格式寫到 AOF 文件開頭后續(xù)增量命令以 AOF 格式追加。這樣恢復時先加載 RDB 部分再重放增量命令速度比純 AOF 快很多。關于appendfsync這個參數(shù)三種取值的安全性和性能差異很明顯取值行為最多丟多少數(shù)據(jù)性能影響always每條命令都 fsync幾乎不丟明顯下降everysec每秒 fsync 一次約 1 秒影響很小no交給操作系統(tǒng)決定可能幾十秒幾乎無影響絕大多數(shù)業(yè)務用everysec就夠了。只有對數(shù)據(jù)安全性要求極高的場景才考慮always而且要先用壓測確認性能能扛住。5.2 fork 與寫時復制內存為什么在 bgsave 時突然翻倍執(zhí)行BGSAVE時Redis 會 fork 一個子進程來寫文件主進程繼續(xù)處理請求。很多人以為 fork 之后內存會翻倍其實不會立刻翻倍因為 fork 用的是寫時復制Copy-On-Write父子進程共享同一份物理內存只有當某一方修改了某個內存頁才會復制那一頁。問題在于寫入量。如果 fork 之后主進程的寫入非常頻繁被修改的頁越來越多操作系統(tǒng)復制的內存就越來越多極端情況下內存占用會接近翻倍。這就是為什么在寫入高峰期做BGSAVE容易觸發(fā) OOM。我踩過一次一個 20GB 的實例設置了每 10 分鐘觸發(fā)的自動快照某天流量翻倍內存直接沖到了 38GB觸發(fā)了容器內存上限被殺。后來把自動快照的頻率調低改成業(yè)務低峰期執(zhí)行并且把實例內存從 32GB 提到了 64GB留出足夠的 COW 余量。經(jīng)驗是實際內存峰值大約等于當前數(shù)據(jù)量乘以 1.5 到 2規(guī)劃容量時別只看數(shù)據(jù)本身。注意vm.overcommit_memory這個內核參數(shù)需要設置為 1否則內核可能拒絕 fork 請求導致后臺保存失敗。5.3 主從復制的 runid、offset 與全量、增量同步主從復制的完整流程分三步。第一步從節(jié)點連接主節(jié)點發(fā)送PSYNC因為是首次同步主節(jié)點回復FULLRESYNC runid offset然后執(zhí)行BGSAVE生成 RDB 文件發(fā)給從節(jié)點從節(jié)點清空自身數(shù)據(jù)后加載。這個過程中主節(jié)點的新寫入會被記錄在復制緩沖區(qū)里RDB 發(fā)送完之后再把這部分命令補發(fā)給從節(jié)點。第二步全量同步完成后進入命令傳播階段主節(jié)點每執(zhí)行一個寫命令就發(fā)給從節(jié)點同時維護一個 Offset 計數(shù)器主從雙方通過比較 Offset 判斷是否一致。第三步如果網(wǎng)絡中斷后重連從節(jié)點發(fā)送PSYNC runid offset主節(jié)點檢查這個 runid 是不是自己的以及 offset 是否還在復制積壓緩沖區(qū)repl-backlog范圍內。都滿足就只發(fā)缺失的那部分命令也就是增量同步否則退化成全量同步。這里有個關鍵參數(shù)repl-backlog-size默認 1MB在高寫入量下很容易不夠。一旦斷開時間稍長offset 超出了緩沖區(qū)范圍就會觸發(fā)全量同步——主節(jié)點 fork、生成 RDB、傳輸、從節(jié)點加載整個過程對主節(jié)點壓力很大。估算方式是平均寫入速率 × 期望能容忍的斷連時長比如寫入 5MB/s 還想容忍 60 秒斷連那至少要 300MB。5.4 主從搭建的實操順序與幾個必改參數(shù)以一臺主、一臺從為例從節(jié)點的配置里加上replicaof 192.168.1.10 6379 masterauth 主節(jié)點密碼 replica-read-only yes repl-backlog-size 256mb repl-backlog-ttl 3600 repl-timeout 60啟動后檢查狀態(tài)redis-cli -h 192.168.1.11 info replication # 關注 role:slave, master_link_status:up, master_repl_offset, slave_repl_offset幾個容易忽略的點。第一masterauth一定不能漏否則連接會卡在master_link_status:down日志里會看到NOAUTH Authentication required。第二從節(jié)點默認read-only yes別為了圖方便改成 no否則可能出現(xiàn)雙向寫入導致數(shù)據(jù)混亂。第三主節(jié)點也要設置repl-backlog-size這個參數(shù)配置在主節(jié)點上不是從節(jié)點。第四防火墻和安全組要放開 6379 端口的互訪但這個端口絕對不能暴露到公網(wǎng)。如果要做自動故障轉移單靠主從不夠需要引入哨兵或者直接使用集群模式。哨兵負責監(jiān)控、選主和通知客戶端客戶端通過哨兵獲取當前主節(jié)點地址。6. 大 key、熱 key 與內存治理6.1 過期刪除與內存淘汰兩組策略不是一回事這兩個概念經(jīng)常被混在一起。過期刪除處理的是設置了 TTL 的 key 到期后怎么刪內存淘汰處理的是內存達到 maxmemory 后刪哪些 key。前者是定時任務后者是內存不足時的被動行為。過期刪除用的是惰性刪除 定期刪除的組合訪問 key 時檢查是否過期過期就刪同時每秒若干次隨機抽查一部分設置了 TTL 的 key刪掉其中過期的。這樣設計是為了避免遍歷所有 key 造成卡頓代價是有些過期 key 會短暫滯留。內存淘汰策略由maxmemory-policy決定策略淘汰范圍適用場景noeviction不淘汰寫入報錯當數(shù)據(jù)庫用不能丟數(shù)據(jù)allkeys-lru所有 key按最近最少使用純緩存場景推薦allkeys-lfu所有 key按訪問頻率熱點數(shù)據(jù)明顯、有長期低頻 keyvolatile-lru只淘汰設置了 TTL 的 key緩存和持久數(shù)據(jù)混用volatile-ttl優(yōu)先淘汰剩余時間短的對過期時間敏感的場景allkeys-random隨機淘汰訪問分布均勻時可用LRU 在 Redis 里是近似實現(xiàn)通過maxmemory-samples控制采樣數(shù)量默認 5。調大采樣數(shù)會讓淘汰更接近真實 LRU但會消耗更多 CPU。我們線上一般設成 10效果和開銷比較平衡。注意把maxmemory-policy設成noeviction而maxmemory又設得偏小時寫入會直接返回OOM command not allowed錯誤業(yè)務側會報異常。要么給足內存要么選淘汰策略。6.2 大 key 怎么找、怎么拆大 key 的危害是多方面的單次操作耗時長可能阻塞其他請求刪除時如果用的是DEL會同步釋放內存造成卡頓主從復制和持久化時也會放大影響。找大 key 最直接的方式是redis-cli --bigkeys redis-cli --memkeys redis-cli -h host -p 6379 memory usage key--bigkeys是按類型采樣統(tǒng)計的不會掃全庫對線上影響可控。MEMORY USAGE可以精確查看單個 key 的內存占用默認采樣 5 個元素估算。拆分思路要看數(shù)據(jù)結構。如果是 Hash可以按字段前綴拆成多個小 Hash如果是 List可以按時間或 ID 區(qū)間分段如果是 String先確認是不是存了序列化的大對象能拆成 Hash 就拆。刪除大 key 一定要用UNLINK而不是DELUNLINK是異步釋放不會阻塞主線程。另外如果業(yè)務里會批量掃描比如KEYS *或者HGETALL大 Hash一定要換成SCAN系列命令分批遍歷。KEYS在生產(chǎn)環(huán)境應該被完全禁用有的團隊甚至會在配置里改掉命令名來防止誤用。6.3 熱 key 與本地緩存熱 key 指的是訪問量極度集中的 key比如秒殺活動里的庫存 key、首頁配置 key。單個 key 的 QPS 太高會集中打到一個 Redis 節(jié)點上集群模式下成為瓶頸。發(fā)現(xiàn)熱 key 可以用redis-cli --hotkeys但前提是淘汰策略為 LFU否則統(tǒng)計不到。也可以自己做客戶端埋點統(tǒng)計每個 key 的訪問次數(shù)。應對方式有幾層。第一層是本地緩存用 Caffeine 這類工具在應用進程內緩存熱點數(shù)據(jù)設置很短的 TTL比如 1 到 3 秒大部分請求根本不會到 Redis。這一層的代價是數(shù)據(jù)一致性會有秒級延遲要評估業(yè)務能否接受。第二層是 key 分散把hot:key復制成hot:key:1到hot:key:10讀的時候隨機選一個寫的時候全部更新把壓力分散到多個節(jié)點。第三層是限流降級當 Redis 響應變慢時直接走本地兜底數(shù)據(jù)保證核心鏈路可用。我們做秒殺時用的是第一層 第三層庫存預熱到本地緩存Redis 只承擔扣減和最終校驗Redis 出現(xiàn)抖動時直接拒絕新請求而不是排隊等待。7. 安裝部署與監(jiān)控幾個容易踩的實操點7.1 安裝方式怎么選源碼、包管理還是容器編排在 Linux 上裝 Redis常見有三種方式。包管理器安裝apt install redis-server或yum install redis最省事但版本通常偏舊而且默認配置不一定適合生產(chǎn)。源碼編譯安裝可以指定版本和編譯參數(shù)適合需要特定版本的場景缺點是升級麻煩。容器方式適合已經(jīng)有編排平臺的環(huán)境配置和版本都能用鏡像固化下來。Windows 環(huán)境需要說明一下Redis 官方并不提供 Windows 版本官方文檔里明確建議在 Windows 上通過 WSL2 運行 Linux 版本。網(wǎng)上流傳的一些 Windows 移植版本通常停留在較老的版本功能和安全更新都跟不上只適合本地學習不要用在正式環(huán)境。如果用 Docker Compose 部署主從一個可參考的寫法是services: redis-master: image: redis:7.2 container_name: redis-master command: [redis-server, /etc/redis/redis.conf] volumes: - ./master/redis.conf:/etc/redis/redis.conf - ./master/data:/data ports: - 6379:6379 restart: always redis-replica: image: redis:7.2 container_name: redis-replica command: [redis-server, /etc/redis/redis.conf] volumes: - ./replica/redis.conf:/etc/redis/redis.conf - ./replica/data:/data depends_on: - redis-master restart: always從節(jié)點的配置文件里寫上replicaof redis-master 6379和masterauth。注意容器里用的是服務名而不是 IP因為容器重啟后 IP 會變。數(shù)據(jù)目錄一定要掛載出來否則容器重建后數(shù)據(jù)就沒了。7.2 一份生產(chǎn)可用的配置骨架配置項很多但核心的就那些。下面這份是我從幾個項目里提煉出來的骨架具體數(shù)值要按業(yè)務壓測調整bind 0.0.0.0 protected-mode yes port 6379 requirepass 強密碼 timeout 300 tcp-keepalive 300 # 持久化 save 900 1 save 300 10 appendonly yes appendfsync everysec aof-use-rdb-preamble yes auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb # 內存 maxmemory 8gb maxmemory-policy allkeys-lru maxmemory-samples 10 # 慢查詢 slowlog-log-slower-than 10000 slowlog-max-len 512 # 危險命令重命名 rename-command KEYS rename-command FLUSHALL 幾個必須強調的點bind不要寫成0.0.0.0之后又把端口暴露到公網(wǎng)這是最常見的被入侵原因requirepass一定要設而且密碼不能太弱rename-command把KEYS、FLUSHALL這類高危命令禁用掉能避免很多誤操作slowlog-log-slower-than單位是微秒10000 表示 10 毫秒超過這個耗時的命令會被記錄下來。7.3 可視化工具與監(jiān)控指標命令行夠用但排查問題時有個可視化工具會快很多。RedisInsight 是官方出品的界面清晰支持內存分析、慢查詢查看和命令行。Another Redis Desktop Manager 是社區(qū)里口碑不錯的客戶端跨平臺、啟動快、支持集群和哨兵日常用起來很順手。監(jiān)控方面最重要的幾個指標是命中率keyspace_hits / (keyspace_hits keyspace_misses)低于 80% 就要排查 key 設計或 TTL 設置內存使用率used_memory / maxmemory長期高于 80% 要警惕慢查詢數(shù)量slowlog_len持續(xù)增長說明有耗時命令連接數(shù)connected_clients突增可能是連接池泄漏或客戶端沒復用連接主從延遲master_repl_offset - slave_repl_offset被拒絕的命令rejected_connections、errorstats里的各類錯誤計數(shù)這些指標通過INFO命令就能拿到接進 Prometheus 之后用 Grafana 做看板。我個人習慣是在看板上加一條內存增長曲線如果曲線斜率在業(yè)務低峰期也不下降基本可以確定有 key 沒設 TTL 或者大 key 在堆積。最后分享一個我在排查線上問題時常用的小技巧當懷疑是某個 key 導致的問題先用redis-cli --bigkeys和--hotkeys快速定位再用MONITOR短時間抓一下命令流一定要短MONITOR本身開銷很大長時間開啟會拖慢實例最后用SLOWLOG GET 20看最近最慢的二十條命令。這三步走下來大部分 Redis 相關的線上問題都能定位到具體原因。如果后續(xù)要擴展我會優(yōu)先把 binlog 訂閱做緩存失效這條鏈路補上它比延遲雙刪更長治久安只是需要額外的中間件和運維成本。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产欧美精品AAAAAA片| 99精品久久久久| av网站中文| 我想看国产大学生口爆吞精的视频| 干一干xxxx| 美女要搞搞天天搞搞搞网站| 亚洲国产精品成人免费一区久久久在线观看AAAA | 丁香五月婷婷色播艳门照| 狠狠色丁香久久| 逼特逼在线免费播放| 9久国产精品| 婷婷六月网| 色婷婷AⅤ| 五月天色综合| 狠狠干综合| 五月丁香六月激情综合| 久久久WWW| 激情婷婷五月天在线观看| 激情五月天婷婷图| 伊人春天av| 94干大香蕉| 五月婷婷激情视频| 97深爱伊人综合| 久久精品五月天| 日本韩国视频在线观看社区免费的9| www.99热视频| www.yw尤物| 少妇搡BBBB搡BBB搡毛茸茸 | 99这里有精品视频| 亚洲网站999| 日本人人xxx| 亚洲小说欧美激情| 国产高清精品色| 丁香五月综合久久八| 99在线视频播放| 97自拍99| 久久久久8888| 99色视频| 热99视频精品| 九九热短视频在线观看| 色色五月婷婷丁香| 99热这里是精品| 婷婷五月天狠狠搞干| 久99久热只有精品国产99| 99热免费精品热久久66| 天天色伊人| 欧洲亚洲免费视频9| 另类视频综合| 久久九九99字幕| 五月天久久婷婷婷| 激情综合网激情五月丁香| 日韩美女在线视频19| 91肏肏肏| 欧美人人超级碰| 婷婷激情五月天激情小说| 中文字幕无码AV| 婷婷五月在线影院| 婷婷久久丁香五月| 99热6这里只有精品6| 五月丁了香蕉综合| 天天久| 天天干夜夜谢| 九九色色| 97碰成超视频免费视频| 婷婷丁香色五月亚洲| 九九久久五月天综合伊人| 日韩成人网址| 久久婷婷五月丁香| AV在线免费播放| 婷婷久热| www.久久99精品| 五月天激情综合网| 免费的日逼视频| 天天夜天天色天天| 综合激情五月天| 激情五月天丁香| 一本色综合色| 91九色熟女| 大香蕉九九| 91精品熟女| 五月丁香六月婷婷综合伊人| 色婷婷狠狠爱| 99热99日天天干| 国产成人AV在线播放| 久热大香蕉| 先锋男人99资源| 成人丁香五月天| 五月丁香婷草| 精品99*| www.五月丁香| 天天爽天天摸| 中文成人在线| 五月婷婷六月丁香综合| 六月丁香婷婷五月| 任你艹| 久久久久视剧HD| 综合大香蕉| 精品综合五月| 午夜天堂啪啪| 欧美久久婷婷| 色综合久久五月天| 嫩草极品| 五月丁香日本片| 国产精品婷婷午夜在线观看| 久久五月天婷婷| 性爱激情五月| 婷婷色系婷色| 婷婷九月| www99热| 五月天激情AV| 激情性爱五月天网页| 五月婷婷激情| 精品成人在线观看| 综合激情专区| 久久六月综合| 激情婷婷99| 丁香五月天激情五月天激情五月天激情网| 99操免费视频| 久久婷婷丁香视频网| 大波美女VA网站| 色五月婷婷在线| 天天干天天av天天射| 97碰在线| 激情五月天色色| 亚洲色色五月天| 人人人va亚洲视频在线| 色色色五月天婷婷| 亚洲性色XXXXX| 狠狠色色| 五月丁香久久激情网| 99热这里只有精品1| www色综合亚洲92| 婷婷五月丁香成人| 超碰在线日夜| 丁香五月中文字幕久色| 大香蕉久久视频久久视频 | 婷婷五月在线观看| 亚洲精品va| 色七七九九| 五月天大香蕉AV| 狠狠干激情五月| 五月天成人小说| 色婷婷婷婷| 亚洲色婷婷五月天| 婷婷五月花| 97碰人人操| 在线不卡的视频| 1010日日无码| 97碰成超视频免费视频| 色五月婷婷av| 99热这里只有精品国产免费| 欧美性生交XXXXX无码小说| 99热99在线| 99热在线观看精品| 五月天婷婷爱丁香中文字幕| 91九九九九九九| www.av骚货| 97伦乱| 青青草日本亚洲| 操大屄五月天视频| www.久久99热地址发布| 思思热国产视频| 色爱亚洲| 青草热视频这里只有精品| 精品人妻伦九区久久AAA片| 色情五月天视频网| 色色综合网www| 色五月婷婷久久大| 六月丁香啪啪啪| 激情www| 香蕉婷婷色五月| 爽tv | 99视频网| 婷婷五月激情综合| 90色免费视频| 亚洲精品亚洲人成人网| 日日夜夜噜噜爽爽| 久久综合丁香| 色欲久久99精品久久久久久| 97操视频| 情婷婷五月天| 狠色综合网| 日韩免费视频| 日韩99视频| 久久草人妻| 精品欧美一区二区三区久久久| 婷婷日日夜夜| sisi热国产| 超碰操日| 久久久久久久人妻| 激情六月丁香| 丁香五月婷婷俺也要去| 五月婷婷啪啪| 涩玖玖免费视频| 在线观看的av| 这里精品| 天天射射夜| 丁香婷婷婷五月综合色情| www.久久| 伊人天天色| 色色亚洲| 色~性~乱~伦~噜| 熟女乱论网| 色99免费视频中文| 欧美怡红院黄站| 天天爱天天做天天操| 99操中文视频| 久久久久久久8| 99热在线播放| 99热福利| 亚洲区视频| 色综合激情图区| 97碰在线视频| 在线视频99| 亚洲 在线 性爱 | 五月丁香琪琪| 国产97色在线 | 日韩| 中文字幕按摩做爰| 丁香五月天之婷婷影院| 丁香六月婷婷综合激情欧美| 欧美性猛交99久久久99| 很很干天天干| 婷婷五月天开心激情网| 99综合激情久久精品久久| 九九99久久| 久久久色情| 中文字幕人妻熟女在线| 啪啪91| 99色中文| 色播六月| 99综合在线| 六月丁香综合| 色综合色综合色综合色综合| 精品亚洲VA网站| 开心亚洲久久开心| 激情六月五月婷婷综合网| 欧美精产国品一二三区| 色私五月婷婷| 综合久久综合久久| 色五月网址| 玖玖激情五月天| 岛国操B不卡在线| www.金莲av| 成人精品视频99在线观看免费| ww久久| 无码99| 99成人精品视频| 激情影院免费视频婷婷五月天| 成人噜噜网| 美女激情综合| 只有精品视频在线观看| 五月丁香啪啪拍| 天堂婷婷五月在线| 婷婷六月天精品| 五月丁香六月婷婷综合网| 五月花综合网| 五月综合六月丁| 色五月婷婷、老熟女| 激情婷婷综合| 五月天,激情四射,婷婷频道| 99爱视频免费| 亚洲永久免费| 天堂无码人妻精品AV一区| 五月丁香综合激情| WWW、99热| 婷婷WWW久久| 久色大香蕉| 激情婷婷99| 热九九九九| 色色婷婷婷丁香五月天| 91一起操| 婷婷五月激情片| 99re这里有精品手机在线| 91小黄书网址在线观看| 日韩在线观看亚洲| 精国产品一区二区三区A片| 成AV人片一区二区三区久久| 色操综合| 超碰激情网| 丁香五月六月久久综合| 五月婷婷伊人在线| 久久婷婷色| 久久五月视频| 黄色99热| 国产1区2区3区在线观| 色综合五月婷婷狠狠干| 激情六月丁香| 99热传媒| 五月丁香A片| 99亚洲欧洲| 色色射| 色吧五月婷婷| 婷婷五月丁香青青草在线| 九九干视频| 丁香六月开心| 2025天天日爽| 色.五月综合网| 色婷成人狠干| 色婷婷六月综合| 婷婷五月六月丁香| 国产毛片精品一区二区色欲黄A片| 色激情网| 婷婷舔| 裸体美女丁香五月天。| 夜精品无码A片一区二区蜜桃| 国产伊人大香蕉| 婷婷激情伍月网| 激情丁香六月| 欧美色一级色| www。狠狠干。com| 狠狠综合网| www,婷婷,com| 激情五月天在线| 五月天综合在线观看视频| 久99视频| www.久久爱| 色婷婷久久综合丁香五月| 五月婷在线| 中文成人在线| 色婷婷久久综合丁香五月| 九热视频| 亚洲婷婷基地| 岛国av网站| 成人中文网| 色五月婷婷婷婷婷婷婷婷婷婷| 深爱激情六月天| 一起草av| peg 2区三区四区的| 激情99| 日韩aⅴ视频| 第四色色六月色综合| 五月婷婷六月丁香在线视频免费在线观看| 五月丁香婷婷五月色| 亭亭五月丁香综合欧美| 久操大香蕉| av免费在线网站| 日日噜狠狠色综合久久| 青草视频在线播放| 夜夜爽日日躁| 亚洲精品无AMM毛片| 99小视频在线| 天天爽天天爽| 99热在这里只有免费精品| 91爱操| 国产AV不卡福利| 天天天操天天天日| www.yw色| 9热视频在线观看| 香蕉伊人综合| 亚洲成人av在线| 91婷婷五月丁香碰| 五月综合丁香婷婷| 五月婷婷AV| 成人在线网| 婷婷丁香激情综合色情| 91精品综合久久久久久五月丁香| 天天情天天狠天天透| 五月婷婷黄色| 五月花婷婷在线精品视频| 日本一道久久| 日韩三级片一区二区| 丁香六月综合激情| 婷婷五月天99| 成人午夜在线视频| 五月婷婷中文字幕| 日韩色色小视频| 天天干,夜夜爽| 另类图片激情五月天| 噼里啪啦完整版中文在线观看| 久月丁香爱婷婷综合| 激情五月综合| 色噜噜狠狠插综合| 日本99久久| 中文av网| 狠狠五月天婷婷激情网。| 色综合视频在线| 久热A| 婷婷激情四射五月天| 婷婷五月天播播| 五月天婷婷情色| 91人妻人人做人碰人人爽九色| 丁香五月久久| 96丁香婷婷九月蜜桃综合久久| 亚洲激情免费视频| 五月婷婷99热| 久久久宗合视频88| 日本久久婷| 五月色婷婷综合色| 伊人成综合五月婷婷| 亚洲天堂啪啪| 日韩乱玛久久| 五月天大香蕉| 国产精品A片在线| 色婷婷五月天成人网| 婷婷六月激情小说网| 精品一二三区久久AAA片| 思思热99在线视频| 天天操夜夜爽天天操| 99婷婷狠狠成为人免费视频| 婷婷人人操| 天天插综合在线| 色九九中文字幕| 日本视频99| 日日婷婷不卡| 九色视频91疯狂| 91色呦哟| 99在线观看精品视频| 国产乱妇乱子伦| 97碰久久| 伊人久热91| 久久婷婷色| 日韩在线aaa| 色噜噜狠狠色综合AV兰草影视| 日本三级99人妇网站| 综合久久综合| 激情五月婷| 婷婷在线操| 伊人婷婷大香蕉| 五月婷婷六月激情| 91性高潮久久久久久久久| 五月天激情国产综合婷婷| VA五月激情在线| 亚洲午夜一区二区| 91九色 熟| 六月丁香婷| 婷婷丁香五月综合| ji'qi'luan'ren'lun| 久热久色| 色V狠狠的干| 91窝窝| 99热这里只有精| 亚洲婷婷丁香| 久久丁香综合| 99爱在线精品视频免费观看| 婷婷丁香激情| 天天日夜夜操五月| 亚洲精品一区中文字幕乱码| 五月天综合在线| 国产精品人人妻人人爽| 天天看夜夜看| 婷婷激情五月综合丁香社| 色色色色热热| 久久久久久xxxxx| 久久大香蕉同僚| 亚洲欧美国产A片免费观看| 99精品成人无码A片观看金桔| 丁香五月欧美成人| 日本色色色| 五月天激情网图片| www.99日本| 婷婷五月天视频亚洲| 激情网综合| www.五月天。com| 这里只有精品视频国产| 五月婷免费视频久久久| 婷婷深爱五月亚洲综合| 亚洲久久婷婷丁香五月天| 激情五月第四色| 五月丁香| 五月亚洲激情| 九九一综合精品| 丁香五月激情综合在线观看| 美女主播野战视步页| 婷婷在线操| 久久综合激情五月天| 99在线观看亚洲| 丁香婷婷五月天色综合| 婷婷综合成人五月天| 狠狠干2007| 五月婷婷插一插| 丁香五月第四色88| 可以看的AV| 丁香五月婷婷网| 婷婷丁香五月激情密臀av| 丁香五月欧美| 五月天色图| 天天日夜夜| 午夜性做爰电影| 无码 av电影| 五月天丁香成人| 久久曰曰| 色婷婷呢狠禁久禁| 色婷婷综合成人| 玖玖无码中文| 天天草婷婷五月| 精品色色色| 国产精品爽爽久久久久久| 精品成人在线观看| 精品人妻伦九区久久AAA片| 亚洲精品久久久久久久久久飞鱼| 日韩精品在线观看9| 中文字幕黄色电影网址| 丁香五月激情宗合网| 亚洲熟妇AV综合网五月丁香伊人| 五月丁香六月婷婷在线| 99久在线精品99re8热| 农村熟妇高潮精品A片| 色亭亭九月| 日本久久婷婷| 五月婷婷黄色视频| 亚洲国产成人在线| 91碰碰视频在线观看| 人人操人人爽成人AV| 丁香五月亚洲AV| 五月婷婷视频ab| 开心五月激情网| 激情六月婷婷| 成人丁香色| 五月天开心成人网| 激情五月天啪啪| 夜精品无码A片一区二区蜜桃| 久久五月热| 婷婷五月播| 亚洲国产色色| 色婷婷丁香五月| 操逼国产91| 五月天 综合 在线| 久久久8| 欧美天堂婷婷日韩| 天天插综合在线| 少妇综合网| 免费无码毛片一区二区A片| 欧美超碰人人| 伊人AV五月婷| 久热在线中文字幕色999舞 | VA婷婷| 婷婷色正月| 欧美日本日韩| 五月丁香激情片| 99热这里只有精| 在线视频区| 色五月婷婷婷婷婷婷婷婷婷婷| 26uuu另类亚洲欧美日本一| 99热久| 色色五月天com| 99亚洲欧洲| 51国精产品自偷自偷综合| 99视频在线啪| 久久婷婷综合五月趴| 婷婷97狠狠成人网站| 久久婷五月婷| 啪啪 综合网| 香蕉色色网| 婷婷色色网| www.夜夜操| av在线免费播放| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 2022人人操人人看| 狠狠插日日干撸| 少妇AB又爽又紧无码网站| 97人妻碰碰碰久| 婷婷丁香五月综合| 激情综合色婷婷啪啪六月天| 色色色色综合| 久久久香港| 婷婷丁香色情五月天| 色欧美一级| 97丁香五月天| 日本少妇裸体做爰高潮片| 99久久免费性爱视频`| 大香蕉精品视频| 色吧婷婷| 色狠狠综合| 久久久99久久| 香蕉婷婷| 九九九成人在线视频| 国产无套精品一区二区| 婷激情五月| 男女啪啪视频久 9| 丁香五月亚综合图片| 亚洲黄色操逼| 99免费在线视频| 九九综舍久久| av中文在线| 五月婷婷深深的爱| 少妇2做爰HD韩国电影| 丁香五月天欧美| 色色网站日本91| 丁香六月激情国产| 激情婷婷丁香五月天| 色五月婷婷久久| 久久99激情| 久久97久久99久久综合欧美| 玖玖精品视频| 五月天堂色| 久久婷综合| 色色aⅤ網| 天天操天天国产三级片处女学生妹| http://www.sd-xiangsu.com/| 免费观看日韩成人av| pacopacomama 070722_670 素人奥様初撮りドキュメント 103 大久保純子 | 亚洲午夜AV| 国产精品色色色色| www.久久久久久久久久久| 亚洲不卡| 久久婷婷五月丁香| 91porn一起草| 国产JK精品白丝AV在线观看| 欧美黄色AA片哗啦啦啦| 久久视频婷婷视频| 99精品丁香五月| 色色热| 99久久九九视频| 婷婷五月天激情五月天深爱五月天| 亚洲AV电影美洲AV电影| 精品久久艹| 另类小说五月天激情| 人人看人人97| 97人人射| www.婷婷,com| 人人操超踫| 先锋资源婷婷| 免费无码毛片一区二区A片| 激情婷婷五月| 影音先锋激情网| 97黑人精品区| 久久婷婷五月综合色丁香花| 91超级碰碰碰| 99综合色| 天天成人五月天| 日韩狠狠色婷婷| 久久久久久久五月婷婷六月丁香综合,开心激情综合网 | 天天综合社区| 99综合视频在线| 丁香五月天激情四射网络不好| 色综合综合色| http://www.sd-xiangsu.com/| 国产成人网站在线观看| 日韩AV中文字幕在线| 色五月亚洲| 97色色色| 玖玖资源天天无码| 婷婷五月天另类视频| 特级操b片| 九九综合影音先锋| 九九色热| 996热| 青青草五月天| 九九视频这里有精品| 99亚洲综合| 久草A片| sewuyuetingtingiii| 亚洲乱码日产精品BD| 一级性爱视频| 色噜噜狠狠色综合网| 亚洲色色香蕉| 丁香五月激情无码视频| xx综合网| 色黑鬼导航| 九月激情网| 99五月婷| 懂色av蜜臀av粉嫩av永陈冠希| 人人色人人弄人人操| 91精品久久久久久77777| 99乱视频| 黄色成人网站在线播放| 五月天激情网站| 激情五月天小说|五月天开心激情网|亚洲精品国产自在现线|黄色五月天 | ′久久99一| 9热在线视频| 另类亚洲电影| 91呦呦呦| 五月停亭久久电影| 草久私拍| 亚洲成片在线观看| 日本97久久久精品| 精品99视频| 日韩国产在线免费观看| 情一色一乱一伦一91A| 日本久久极品| 婷婷五月网图片区| 一区二区免费看| 亚洲不卡欧洲| 五月综合久久| 天天摸天天舔在线视频| 天天色一道本综合婷婷| 欧美综合激情五月丁香| 天天拍夜夜爽| 亚洲激情.com| 色色色在线观看| 丁香婷婷九月| 99热在线观看免费精品| 激情99| 中文字幕有多少字| 丁香五月天亚洲综合| 99热99| 激情五月天综合网| 久热九九| 天天模,夜夜模夜夜爽| 99色爱| 丁香综合婷婷五月天| 九九热10| 丁香五月天激情综合| 婷婷99狠狠躁天天久久久九九九| 蜜乳AV成人| 六月丁香婷婷色狠狠久久| 婷婷五月天奸女| 五月激情丁香六月狠狠干| 午夜精品777| 五月婷婷丁香在线| av在线观看免费| WWW.桔色成人.COM| 九月婷婷在线观看| 婷婷精品视频| 色噜综| 99九九玖玖| 欧洲色| 精品导航在线x不卡| 日韩AV片| 久久人妻系列| 二色AV| 超碰成人公开| 一区视频网站| 五月天自拍视频| 丁香五月成人婷婷| 欧美成人精品A片免费一区99| 欧美日韩国产一二区| 亚洲婷婷91丁香| 天天天添天天操| 丁香婷婷色情| 丁香五月婷婷图片综合| 在线另类视频| 午夜婷婷六月天| 丁香激情久久| 欧美色偷偷大香| 丁香五月花婷婷开心| 五月婷婷六月丁香激情| 色五月婷婷老师| 色婷婷综合在线| 99热这只有| 成人电影在线免费试看| 亚洲99热| 色黑鬼导航| 123草逼网| 激情AV综合| 中文网AV| 99热综合色图| 亚洲综合碰| 五月婷婷久久激情 | 五月婷婷伊| 五月花综合网| 成人亚洲精品| 久久日九九| 婷婷丁香五月天狠狠| 六月丁丁香| 秋霞A V毛片| 五月天最新网| 五月婷婷色色爱| 色婷婷内射| 99热老司机| 婷婷五月丁香色播| 丁香五月综合网亚洲综合欧美狠狠| 天天做天天爽| 99热99色| 久久久香| 在线观看996精品| 五月婷婷免费看| co超碰在线观看| 欧美综合婷婷欧美综| 丁香五月激情啪啪| 91婷婷在线| 中文字幕,综合,91| 婷婷丁香视频| www.操.com| 免费看片在线观看| 五月丁香中文字幕| 碰久久精品w| 丁香五月停停av| 日韩青青| 久久A区B区| 天天综合网~91| 色五月亚洲开心网| 狠狠色婷| 99热无码首页| 六月丁香婷婷大香蕉| 99久久性爱| 超碰99成人在线| 六月婷婷在线视频| 最新日韩久热免费视频看看| 五月丁香综合网| 久久色五月天| 色5月婷婷色| 碰碰91| 99视频精品在线| 精品五月丁香| 国产欧美性成人精品午夜| 国产热精品| 婷婷丁香久久网| 亚洲a色| 日本在线99| 丁香五月欧美成人| 深爱五月激情网| 青草青草视频2免费观看| w婷婷五月婷婷w| 五月丁香综缴情性爱| 色色性爱视频| 久操激情| 337p大胆噜噜噜噜噜91Av| 色色亚洲无码| 蒲京久久无码视频| 第四色大香蕉| 五六月婷婷| 国产乱子轮XXX农村| 欧美激情综合色丁香婷婷五月天 | 伊人久久婷婷| 天堂无码人妻精品AV一区| 婷婷五月天亚洲精品| Www.Av网9| 九九综合色综合| 婷婷欧美色| 亚洲永远av在线播放| 97色女人在线| 国产裸舞福利资源在线视频| 精品综合网在线| 色在线99| 婷婷五月天国产手机在线视频观看| 五月婷婷丁香日韩在线| 日韩在线99| 开心激情色婷婷五月天| 狠狠色婷婷丁香五月| 大香蕉婷婷五月天| 很很干五月天| 激情AV在线| 熟女少妇内射日韩亚洲| 色婷婷六月| 91精品熟女| 欧美人人超级碰| 色五月激情网| 丁香五月在线观看| 97色色色视屏| 极品另类| 日韩成人精品中文字幕电影| 无码动漫av| 综合色天天| 丁香五月激情综合婷综| 国产成人AV| 97操碰碰无码视频| 丁香五月天激情网| 日日爱678| 涩 五月 婷婷 狠狠| 六月丁香婷| 97碰人人操| 婷婷五月激情欧美大胆视频| 99热老司机| 久久久久九九九九视屏小说88| 色五月天婷婷| 噜噜在线| 色婷婷激情五月天在线观看| 那里有AV网址| 五月天婷综合| 九色视频九色九色91jiuseshipin| 激情综合五月| 色五月成人| 亚洲色综久久五月| 色欲Av五月天| 久久网日本| 97精品综合久久内射| 亚洲字幕AV一区二区三区四区 | 久9无码视频| www.韩日视频| 日本一级淫| 97综合在线| 婷婷永久在线| 热99在线精品| 五月婷婷成人| 亚洲aV写真天天综合网久久| 激情五月婷婷伊人| www.25五月婷婷| 九月激情网| 五月丁香激| 激情丁香五月AV| 激情玖玖综合网| 五月婷婷久久大片| 无人区码一码二码三码医生系列| 操一区| 五月婷婷六月丁香综合在线| 欧美影院| 久久婷婷五月天激情| 狠狠草在线观看| 骚。com| 丁香五月天激情网| 狠狠干伊人| 99热这里只有精品69| 成人久久天天x资源站| 第2色五月婷| 九九热视频精品2| 五月婷丁香花| 888精品福利地址| 夜夜骑操AV| www.99热视频在线观看| 丁香激惜男女| 丁香五月天天日| 深爱五月天婷综合| 婷婷成人综合五月| 五月丁香色婷婷综合| 五月丁香色婷婷熟女| 天天干天天射综合网| www.五月瑟| 九九热在线视频观看| 99热综合网| 九月av| 久热9| 99热这里都是精品| 国产成人精品亚洲线观看| AA片在线观看视频在线播放| WWW.亚洲无码| 91jiuseshunv| 日本久久精品18| 97超碰综合| 色五月之第四色| 五月四色婷婷| 色婷婷丁香五月天在线观看| 狠狠干综合网| 久热这里只有| 尤物一区二区| 99啊精典免费视频| 大香蕉啪啪啪| 激情综合网激情五月欧美| 婷婷五月情天| 欧美熟女99| www.五月天| 99视频日韩| 99视频35精品视频在线观看| 亚洲 综合中文| 婷婷激情综合网| 丁香婷婷基地| 色色色色五月天| 亚洲日韩乱码一区二区三区四区| 色五月婷婷丁香凹凸| 六月婷欧美| 免费的日逼视频| 中国激情网| 欧美色99| 色五月婷婷777| 国产亚洲99久久| 欧美激情五月综合| www夜夜操com| 亚洲日日日| 五月久久丁香| 91久久久久久久| 日日激情网| 中文字幕在线不卡| wwwav大香蕉| www98日本小时间到了| 五月天五月色| 色噜噜狠狠色综合成人网| 成人精品一区日本无码网| 99热全是精品| 五月天婷婷久色| w婷婷五月婷婷w| 琪琪色网在线| 99久热在线精品| 99热在线成人网站| 99精品在线观看| 啪啪六月婷婷| 五月丁香六月欧美| 日狠狠| 综合网狠狠| 伊人超碰| 五月婷婷在线免费观看| 五月丁香六月婷婷的女人| 五月天亚洲最大成人| 99在线视频播放| 影音先锋男人AV资源站| 人人澡天天色天天做| 色久综合| 成人精品免费在线观看| 26uuu.| 97干视频| 日本三级片片| 色婷婷五月天堂资源| 五月婷在线观看| 综合色网站| 99精品免费欧美小视频 | 色月丁| 日日噜狠狠色综合久久| 六月激情网| 另类激情五月| 在线只有精品| 好大好粗嗯啊-一级黄色大片免费观看-成人AV | 婷婷导航| 9热在线观看| 99热观看| 女力报到正好爱上你| 亚洲乱码日产精品BD| 国产伦理精品高清在线观看网站一区二区| 高清无码视频网址| 九九精品丁香花| 五月丁香婷中文字幕| 色欲久久综合| 丁香五月天无码AV| 色九九综合| 久久人人九九| 99久久www| 色婷婷国产精品综合在线观看| 韩国天天婷婷| 五月婷婷综合色啪首页| 思思久热| www.99操.com| 久久er99| 婷婷五月色花丁香社区| 五月花综合视频| 激情玖玖综合网| 五月丁香婷婷三级| 五月天婷婷激情六月久久 | 日韩在线视频网站| 91精品综合久久婷婷九色| 五月婷婷综合视频| 无码yw| 五月丁香无码| 色五月天堂| 可以直接看的AV| 欧美一级色| 丁香五月婷婷基地| 狠狠色丁香久久久婷| 婷婷俺去也| 天天做天天爱天天日| 久热婷婷| 亚洲日韩26uuu| 久久综合婷婷激情| 日本va欧美va欧美va| 婷婷色五月天色色| 夜夜大香蕉婷婷丁香| 香蕉综合在线| 久久99网站| 丁香婷婷六月天| 国产在线网址1| 婷婷五月亚洲一本在线丁香| 成人资源在线| 武则天精品久久| 五月婷婷涩涩爱| 操你av| 丁香玖玖视频大全| 色婷婷丁香五月天| 综合激情网| 天天色五月婷婷91久久久久久久| 亚洲色热| 久久丁香五月综合六月激情红杏视频| 五月丁香六月婷| 久久婷婷亚洲五月天| 丁香婷婷综合喷| 五月婷婷狠狠干| 久久久久久久久久久久久久人妻视频 | 噜噜噜狠狠色综合| 国产成人精品亚洲线观看| 婷婷情色激情| 九九热视频99| 精品人妻伦九区久久AAA片| 色狠狠色综合| 九九AV在线| 中文字幕日产A片在线看| 天天日夜夜帕| 99色色网| 九色在线五月婷婷网址| 久碰婷婷视频| 夜夜天天久久婷婷| www.激情com| 中文字幕在线观看视频www| 亚洲激情精品| 亚洲人妻av| 中文字幕丰满乱孑伦无码专区 | 欧美三级级99久久| 99热国产这里只有精品| 九九色视频| 五月天婷婷色色| 欧美精品狠狠色丁香婷婷| 色99网| 婷婷六月色播| 99热这里是精品| 97操碰日本女人| 五月婷婷在线免费观看| 色在线视频网2025| 九九sese| AA久久| 99久操视频| 亚洲色网络| 狠狠色综合网| 99色丁香婷婷综合网| 国产成人综合在线| 26uuu成人网| 99综合视频一体| 日本九九视频| 婷婷色成人| 免费AV黄在线播放| 香蕉久久六月| 丁香婷婷影院| 日韩成人综合网| 欧美大香蕉视频| 五月婷婷开心综合| 丁香五月婷婷色五月| 五月婷婷婷综合网| 激情五月婷婷丁香综合网| 午夜色婷婷| 97视频久久| 停婷丁五月在线| 中文字幕性爱丰满| 婷婷激情综合无月| 丁香五月色色| 99狠狠操一| 欧美偷偷操| 日韩中文字幕| 激情丁香婷婷| 97人人干| 人妻激情综合| 人人操AV| 五月天成人小说| 激情九九这里只有精品| 国产精品成av人在线视午夜片| 久久丁香五月天| 久久五月丁香| 嫩草视频在线观看| 丁香五月天亚洲视频| 国产精品热搜丁香五月婷婷| 开心五月婷婷激情网| 婷婷六月爽| 久久99热只有精品| 桃色五月婷婷| 五月丁香狠狠爱| 996热| 大香蕉五月丁香| 五月丁香色色| 九九99九九99偷拍视频免费看| 99啪啪网| 超碰av天堂| www.91在线观看| 丁香五月欧美色综合| 性热视频99精品| av在线免费网站 | 色色色婷婷五月天| 玖玖综合色| 久操大香蕉| 操一操干一干| 国产成人+综合亚洲+天堂| 色五月丁香五月| 色婷婷丁香A片区毛片区女人区| 天天爽夜夜操| 极品人妻VIDEOSSS人妻| 国产精品99久久久久久久女警 | 最近中文字幕大全免费版在线| 97干在线视频| 嫩BBB搡BBBB榛BBBB| 99精品偷自拍| 骚逼视频一区2区| 婷婷激情综合色五月久久91| 久草大| 丁香五月WWW| 91丨人妻丨国产丨丝袜| 日韩操女| 91操网| WWW,激情五月天,COM| 欧美噜噜免费观看| 五月花婷婷最新| 婷婷色五月色| 丁香五月最新地址| 天天操比比| 无码成人AAAAA毛片AI换脸| 在线超碰免费| 色九月婷婷丁香| 五月综合久久| 91视屏在线观看com.wwwvv| 激情网综合| 久操97| 五月丁香啪啪网| 欧美激情综合五月色丁香| 色综合女人99| 九热...av| 深爱五月天婷综合| 婷婷五月天高清无码| 亚洲成人一区| 99久久户外勾搭| 五月婷婷狠狠久久| 91操操| 我要射综合| 97热这里精品在线视频| 久99久视频| 激情综合五月丁香六月婷婷| 日韩 中文 欧美| 激情综合网五月天天| 激情婷婷色五月| 色色色色网| 丁香五月婷婷香| 日韩亚洲视频| 五月婷在线视频免费播放| 天堂色婷婷| 不卡在线中文字幕无| www.日韩国产| 亚洲 在线 性爱 | 综合激情婷婷| 婷婷天堂伊人| 大香蕉520| 五月丁香六月香综合激情| 成人在线不卡| 激情性爱五月天网页| 久久婷丁香五月| 伊人丁香婷婷东京| 操碰99| 665566 无码| 婷婷五月四狠狠| 伊人五月天在线| 国产成人网址| 激情綜合網址| 色人妻五月| 五月激情在线| 五月停停色| 久久久人人人妻丝丝丝| 99热最新| 99热色婷婷| 五月丁香婷中文| 亚洲激情五月天| 六月婷婷网| 人人人人人人人草| 超碰碰碰碰| 站长推荐无码播放| 激情五月丁香六月综合AVXXXX| 九九综合色| 色色免费网站| 人人视频人人干人人做| 内射在线CHINESE| 天天日天天做天天舔| 五月综合激情| 99久久超级| 秋霞午夜理论 | 五月天综合激情网| 色吧五月婷婷| 7EzOBIhNq85TO| 伍月婷婷免费视频| 色综合色五月| 啪色综合| 激情五月天电影| 婷五月天影院| 人妻系列久久久久久久久久久 | 久久久久综合激动五月天| 淫视馆aV二区一区| 五月天久久www| 开心五月网 | 成人五月丁香社区| 丁香五月婷婷Av| 五月丁香综合在线| 日韩啪啪自拍| 色色 9| 成人免费超碰| 另类图片婷婷五月天| 久操欧美在线观看97| 丁香五月成人论坛| 99爱视频免费| 激情综合网丁香| 久久婷婷视频| 99精品在线播放| 色婷久久| 99热老网站| 久久综合九九| AV大香蕉| 九九热精品视频| 永久的网站AAAA | 五月天婷婷涩涩| 欧美日韩一区二区三区四区| 亚洲AV成人精品网站在线播放| 亚洲免费99| 婷婷六月成人| 五月天婷婷成人| 男人的天堂97| 91色综合网| 激情综合亚洲| 日产精品一线二线三线芒果| 日韩婷婷五月天| 狠狠一日|