精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

設計本地緩存、Redis與數據庫的三層架構:一致性協議與過期策略實踐

數據庫 Redis
實際實施中,需要根據具體業務特點調整策略參數,如TTL時長、延遲刪除時間等。同時,完善的監控和日志記錄對于排查問題和優化系統至關重要。

在現代分布式系統中,為了平衡性能與數據一致性,采用本地緩存、分布式緩存(如Redis)和數據庫的三層架構是一種常見方案。這種架構能夠顯著降低數據庫壓力并提高響應速度,但同時也帶來了數據一致性和過期策略的設計挑戰。本文將深入探討如何設計這樣一個系統,確保數據在多層級之間保持一致性,并有效管理數據的生命周期。

1. 架構概述與挑戰

在我們開始設計之前,先明確三層架構的基本組成:

本地緩存:應用進程內的緩存(如Caffeine、Ehcache),訪問速度最快,但無法跨進程共享

分布式緩存(Redis):作為中央緩存層,被所有應用實例共享,速度較快

數據庫:數據的持久化存儲,作為最終的數據源

這種架構帶來的主要挑戰有:

  • 如何保證本地緩存與Redis之間的數據一致性?
  • 如何保證Redis與數據庫之間的數據一致性?
  • 如何設計有效的過期策略,避免陳舊數據提供服務?
  • 如何處理緩存穿透、擊穿和雪崩問題?

2. 一致性協議設計

2.1 寫操作的一致性保障

當數據需要更新時,我們必須謹慎處理三層之間的數據同步。以下是推薦的寫操作流程:

public class DataService {
    private LocalCache localCache;
    private RedisClient redisClient;
    private Database db;
    
    public void updateData(String key, Object value) {
        // 1. 先更新數據庫(最終權威數據源)
        db.update(key, value);
        
        // 2. 刪除Redis中的緩存(而不是更新)
        redisClient.delete(key);
        
        // 3. 刪除本地緩存
        localCache.delete(key);
    }
}

為什么選擇刪除緩存而不是更新緩存?這基于一個簡單但重要的觀察:刪除操作是冪等的,而更新操作不是。在多實例環境中,多個應用實例可能以不同的順序收到更新消息,直接更新緩存可能導致數據順序錯亂,而刪除操作確保了下次讀取時會從數據庫加載最新數據。

2.2 讀操作的一致性保障

讀操作需要遵循"緩存優先"的原則,但要有適當的回退機制:

public Object readData(String key) {
    // 1. 首先嘗試從本地緩存獲取
    Object value = localCache.get(key);
    if (value != null) {
        return value;
    }
    
    // 2. 本地緩存未命中,嘗試從Redis獲取
    value = redisClient.get(key);
    if (value != null) {
        // 將數據存入本地緩存
        localCache.set(key, value, LOCAL_TTL);
        return value;
    }
    
    // 3. Redis未命中,從數據庫獲取
    value = db.query(key);
    if (value != null) {
        // 更新Redis緩存
        redisClient.set(key, value, REDIS_TTL);
        // 更新本地緩存
        localCache.set(key, value, LOCAL_TTL);
    }
    
    return value;
}

2.3 數據庫與Redis的最終一致性

為了確保數據庫與Redis之間的最終一致性,可以考慮使用以下額外機制:

2.3.1 數據庫binlog監聽

對于重要數據,可以通過監聽數據庫的binlog變化來觸發緩存失效:

public class BinlogListener {
    public void onDataUpdate(String table, String key, Object newValue) {
        // 當數據庫更新時,刪除相關緩存
        redisClient.delete(key);
        // 發送消息通知所有實例清除本地緩存
        messageQueue.send(new CacheEvictMessage(key));
    }
}

2.3.2 延遲雙刪策略

在高并發場景下,即使先更新數據庫再刪除緩存,仍可能存在短暫的數據不一致窗口。延遲雙刪策略可以緩解這個問題:

public void updateDataWithDoubleDelete(String key, Object value) {
    // 第一次刪除緩存
    redisClient.delete(key);
    localCache.delete(key);
    
    // 更新數據庫
    db.update(key, value);
    
    // 延遲指定時間后再次刪除緩存
    scheduledExecutor.schedule(() -> {
        redisClient.delete(key);
        // 發送消息通知所有實例清除本地緩存
        messageQueue.send(new CacheEvictMessage(key));
    }, 1000, TimeUnit.MILLISECONDS); // 延遲1秒
}

延遲時間需要根據實際業務讀寫耗時調整,通常略大于一次讀操作耗時。

3. 過期策略設計

合理的過期策略是保證數據新鮮度和系統性能的關鍵。

3.1 本地緩存過期策略

本地緩存應當設置較短的TTL(Time-To-Live),建議在1-5分鐘之間,這可以在數據一致性和性能之間取得良好平衡。

// 使用Caffeine配置本地緩存
Cache<String, Object> localCache = Caffeine.newBuilder()
    .expireAfterWrite(2, TimeUnit.MINUTES) // 寫入2分鐘后過期
    .maximumSize(10000) // 限制最大容量
    .build();

短TTL的優勢在于:

  1. 1. 保證數據相對新鮮
  2. 2. 即使出現不一致,也會在較短時間內自動修復
  3. 3. 避免本地緩存占用過多內存

3.2 Redis緩存過期策略

Redis緩存可以設置較長的TTL,建議在30分鐘到24小時之間,具體取決于業務需求和數據變更頻率。

// 設置Redis緩存,30分鐘過期
redisClient.setex(key, 30 * 60, value);

對于不常變更的數據,可以設置更長的過期時間,甚至考慮使用"永久"緩存,通過主動刪除管理生命周期。

3.3 主動刷新策略

對于熱點數據,可以采用主動刷新策略,在緩存過期前異步刷新數據:

public class CacheWarmUpScheduler {
    public void scheduleRefresh() {
        scheduledExecutor.scheduleAtFixedRate(() -> {
            // 獲取熱點key列表
            Set<String> hotKeys = getHotKeys();
            for (String key : hotKeys) {
                // 異步刷新
                CompletableFuture.runAsync(() -> {
                    Object value = db.query(key);
                    if (value != null) {
                        redisClient.set(key, value, REDIS_TTL);
                    }
                });
            }
        }, 0, 5, TimeUnit.MINUTES); // 每5分鐘執行一次
    }
}

3.4 分級過期策略

不同重要性的數據可以采用不同的過期策略:

  • 極高重要性數據(如商品價格):短TTL(1-5分鐘)+ 主動刷新 + 實時失效
  • 一般重要性數據(如用戶信息):中等TTL(30-60分鐘)+ 延遲雙刪
  • 低重要性數據(如文章內容):長TTL(數小時至數天)+ 懶刷新

4. 特殊情況處理

4.1 緩存穿透

緩存穿透是指查詢一個不存在的數據,由于緩存中不命中,導致每次請求都直達數據庫。

解決方案:

  • 緩存空值:對于查詢結果為null的key,也進行緩存,但設置較短的TTL(1-5分鐘)
  • 布隆過濾器:在緩存層之前使用布隆過濾器判斷key是否存在
public Object readDataWithProtection(String key) {
    // 使用布隆過濾器判斷key是否存在
    if (!bloomFilter.mightContain(key)) {
        return null; // 肯定不存在
    }
    
    // 正常緩存查詢流程
    Object value = localCache.get(key);
    if (value != null) {
        if (value instanceof NullValue) { // 空值標記
            return null;
        }
        return value;
    }
    
    // ... 其余流程同上
    
    if (value == null) {
        // 緩存空值,防止穿透
        localCache.set(key, NullValue.INSTANCE, NULL_TTL);
        redisClient.setex(key, NULL_TTL, NullValue.INSTANCE);
    }
    
    return value;
}

4.2 緩存擊穿

緩存擊穿是指熱點key在緩存過期的瞬間,大量請求直接訪問數據庫。

解決方案:

  • 互斥鎖:當緩存失效時,使用分布式鎖保證只有一個請求可以訪問數據庫
  • 永不過期:對極熱點數據設置永不過期,通過后臺任務定期更新
public Object readDataWithMutex(String key) {
    Object value = localCache.get(key);
    if (value != null) {
        return value;
    }
    
    // 嘗試獲取分布式鎖
    String lockKey = "LOCK:" + key;
    boolean locked = redisClient.acquireLock(lockKey, 3, TimeUnit.SECONDS);
    
    if (locked) {
        try {
            // 再次檢查緩存,可能已被其他線程更新
            value = redisClient.get(key);
            if (value != null) {
                localCache.set(key, value, LOCAL_TTL);
                return value;
            }
            
            // 查詢數據庫
            value = db.query(key);
            if (value != null) {
                redisClient.set(key, value, REDIS_TTL);
                localCache.set(key, value, LOCAL_TTL);
            } else {
                // 緩存空值防止穿透
                redisClient.setex(key, NULL_TTL, NullValue.INSTANCE);
            }
            
            return value;
        } finally {
            // 釋放鎖
            redisClient.releaseLock(lockKey);
        }
    } else {
        // 未獲取到鎖,短暫等待后重試
        try {
            Thread.sleep(100);
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
        }
        return readData(key); // 重試
    }
}

4.3 緩存雪崩

緩存雪崩是指大量緩存同時過期,導致所有請求直達數據庫。

解決方案:

  • 隨機TTL:為緩存過期時間添加隨機值,避免同時過期
  • 多層緩存:使用本地緩存作為Redis緩存的緩沖層
  • 熱點數據永不過期:對極熱點數據設置永不過期,通過后臺更新
// 為TTL添加隨機值,避免同時過期
private int getRandomTtl(int baseTtl) {
    Random random = new Random();
    int randomOffset = random.nextInt(300); // 0-5分鐘的隨機偏移
    return baseTtl + randomOffset;
}

5. 監控與降級

任何緩存系統都需要完善的監控和降級機制:

5.1 監控指標

  • 緩存命中率:本地緩存和Redis的命中率
  • 緩存操作耗時:讀取各層緩存的平均耗時
  • 數據庫壓力:QPS、連接數等
  • 系統資源:內存使用率、網絡帶寬等

5.2 降級策略

當緩存系統出現故障時,需要有降級方案:

  • 本地緩存降級:當Redis不可用時,可以適當延長本地緩存TTL
  • 讀操作降級:直接訪問數據庫,但需要限制頻率防止數據庫過載
  • 寫操作降級:將寫操作排隊異步執行,或使用本地隊列暫存
public Object readDataWithFallback(String key) {
    try {
        // 正常緩存讀取流程
        return readData(key);
    } catch (CacheException e) {
        // 緩存系統異常,降級直接查詢數據庫
        log.warn("Cache system unavailable, fallback to DB", e);
        metrics.counter("cache.fallback").increment();
        
        // 但需要限制頻率,防止數據庫壓力過大
        if (rateLimiter.tryAcquire()) {
            return db.query(key);
        } else {
            throw new ServiceUnavailableException("System busy, please try again later");
        }
    }
}

6. 總結

設計本地緩存、Redis和數據庫的三層架構需要在性能和數據一致性之間找到平衡點。本文提出了一套綜合解決方案:

  • 寫操作采用"先更新數據庫,再刪除緩存"的策略,結合延遲雙刪提高一致性
  • 讀操作遵循緩存優先原則,逐層回退
  • 過期策略采用分級TTL設計,結合主動刷新和被動失效
  • 特殊場景使用布隆過濾器、互斥鎖和隨機TTL應對
  • 監控降級確保系統在異常情況下仍能提供服務

實際實施中,需要根據具體業務特點調整策略參數,如TTL時長、延遲刪除時間等。同時,完善的監控和日志記錄對于排查問題和優化系統至關重要。

通過合理設計一致性協議和過期策略,三層緩存架構能夠顯著提升系統性能,同時保證數據的正確性和新鮮度,為高并發場景下的應用提供強有力的支撐。

責任編輯:武曉燕 來源: 程序員秋天
相關推薦

2021-06-11 09:21:58

緩存數據庫Redis

2025-08-08 07:09:58

2018-09-11 10:46:10

緩存數據庫一致性

2024-05-28 00:50:00

RedisMySQL緩存

2020-09-03 09:45:38

緩存數據庫分布式

2021-04-24 16:58:03

數據庫工具技術

2025-04-27 08:52:21

Redis數據庫緩存

2017-05-19 15:00:05

session架構web-server

2024-04-11 13:45:14

Redis數據庫緩存

2023-09-24 14:35:43

Redis數據庫

2024-12-26 15:01:29

2024-10-28 12:41:25

2022-03-29 10:39:10

緩存數據庫數據

2023-08-15 09:31:01

分布式緩存

2020-05-12 10:43:22

Redis緩存數據庫

2024-11-07 22:57:30

2020-09-04 06:32:08

緩存數據庫接口

2022-12-14 08:23:30

2017-07-25 14:38:56

數據庫一致性非鎖定讀一致性鎖定讀

2024-12-24 14:26:47

點贊
收藏

51CTO技術棧公眾號

这里只有精品在线| 天堂资源在线| 国产在线看一区| 久久国产精品99国产精| 亚洲三级在线视频| segui88久久综合9999| 97久久精品人人做人人爽| 国产成+人+综合+亚洲欧洲| 青青草自拍偷拍| 欧州一区二区三区| 一本久久精品一区二区| 亚洲欧洲日本国产| 国精品人妻无码一区二区三区喝尿 | 精品久久久免费视频| 极品裸体白嫩激情啪啪国产精品| 亚洲男人天堂2024| 91精品视频国产| av人人综合网| 国产精品天干天干在观线| 91精品国产高清久久久久久91裸体| 久久久美女视频| 国产成人精品999在线观看| 911国产精品| 日韩在线综合网| 久草中文在线| 久久精品网站免费观看| 3d动漫啪啪精品一区二区免费 | 午夜av一区二区| 五码日韩精品一区二区三区视频| 精品人妻一区二区三区日产乱码| 男女av一区三区二区色多| 久久亚洲私人国产精品va| 网站免费在线观看| 欧美h版在线观看| 一本久道久久综合中文字幕| 女女同性女同一区二区三区按摩| 三级av在线播放| 国产成人av影院| 国产精品视频地址| 成人午夜视频在线播放| 视频在线不卡免费观看| 日韩电影第一页| 国产人妻精品久久久久野外| 亚洲成av在线| 日韩欧美第一页| 免费一级特黄毛片| 污影院在线观看| 国产精品免费av| 欧美一区少妇| 五月天婷婷在线观看| 国产精品99久久久久久宅男| 国产女人精品视频| 男人天堂视频网| 欧美亚洲自偷自偷| 国内精品视频久久| 久视频在线观看| 亚洲国产不卡| 操91在线视频| 日韩免费av一区| 日韩精品二区| 中文字幕一精品亚洲无线一区| 蜜桃精品成人影片| 青青草这里只有精品| 亚洲精品一线二线三线无人区| 久久精品视频在线观看免费| 日韩第二十一页| 欧美三片在线视频观看| 在线免费视频a| av在线不卡精品| 欧美体内she精视频| 亚洲欧美激情网| 国产成人免费精品| 欧美日韩亚洲国产综合| 色一情一区二区三区| 欧美aaa级| 欧美日韩精品三区| 亚洲高清免费在线观看| 999精品视频在线观看| 在线电影欧美成精品| 日本少妇一区二区三区| 亚洲电影一区| 日韩av在线影院| 欧美性xxxx图片| 综合色就爱涩涩涩综合婷婷| 国产亚洲欧美视频| 精品亚洲乱码一区二区| 欧美精品福利| 欧美有码在线视频| 亚洲精品一区二区二区| 激情五月婷婷综合| 99国精产品一二二线| 日韩一区免费视频| 国产日韩欧美精品一区| 成年人免费观看的视频| 亚洲无线看天堂av| 午夜精品成人在线视频| 国产淫片av片久久久久久| 日韩制服一区| 日韩欧美综合一区| 大地资源二中文在线影视观看 | 欧美mv和日韩mv国产网站| 人妻激情偷乱频一区二区三区| 亚洲人亚洲人色久| 久久精品色欧美aⅴ一区二区| 久久午夜无码鲁丝片| 丝袜诱惑亚洲看片| 7777精品伊久久久大香线蕉语言 | 日韩精品福利在线| 精品人体无码一区二区三区| 欧美日韩亚洲三区| 国产精品xxxxx| 亚洲AV无码乱码国产精品牛牛| 99精品国产热久久91蜜凸| 一区二区日本| 久久男人天堂| 91麻豆精品国产| 日韩人妻无码一区二区三区| 91久久久精品国产| 欧美在线性爱视频 | 一级性生活免费视频| 亚洲国产高清一区| 国产在线视频2019最新视频| 亚洲人妻一区二区| 亚洲精品国产无天堂网2021| 精品视频无码一区二区三区| 亚洲国产中文在线| 色妞欧美日韩在线| 四虎精品永久在线| 成人高清视频免费观看| 中文字幕一区综合| 成人自拍视频网| 亚洲精品www久久久久久广东| 91久久久久久久久久久久久久| 国产精品资源| 国产高清在线一区二区| 久操免费在线| 欧美视频一区二区三区四区| 北岛玲一区二区| 欧美三级午夜理伦三级中文幕| 国产精品亚洲综合天堂夜夜| 牛牛影视精品影视| 精品电影在线观看| 韩国av中国字幕| 一区二区日韩欧美| 国产在线视频2019最新视频| 在线播放麻豆| 欧美亚一区二区| 亚洲精品国产一区黑色丝袜 | 久久久噜噜噜久久中文字幕色伊伊 | 精品人妻少妇AV无码专区| 日本一区二区高清| 少妇性l交大片| 丝袜久久网站| 欧美一区三区三区高中清蜜桃| 天堂在线视频网站| 精品久久中文字幕久久av| 日本69式三人交| 亚洲精品激情| 免费国产一区二区| 黑人精品一区| 夜夜嗨av一区二区三区四区| 中文字幕在线天堂| 欧美高清在线精品一区| 污色网站在线观看| 91精品国产成人观看| 91亚洲精品在线| 人妖欧美1区| 亚洲国产欧美一区二区丝袜黑人| 精品少妇theporn| 成人av手机在线观看| 又粗又黑又大的吊av| 最新国产精品视频| 国产精品日韩一区| 国产乱色在线观看| 精品福利一区二区三区| 国产午夜在线播放| 久久久青草青青国产亚洲免观| 色综合手机在线| 亚洲精品一区二区在线看| 5g影院天天爽成人免费下载| 丰满诱人av在线播放| 日韩精品视频在线免费观看| 亚洲中文字幕无码爆乳av| 欧美国产欧美亚州国产日韩mv天天看完整 | 九九九九精品| 成人影院在线视频| 欧美精品一区二区高清在线观看| 久久久久久欧美精品se一二三四 | 美女日批在线观看| 好看的亚洲午夜视频在线| 精品一区久久久久久| 欧美13videosex性极品| 亚洲精品色婷婷福利天堂| 亚洲av中文无码乱人伦在线视色| 久久免费视频一区| 久久精品久久99| 亚洲五月婷婷| 欧美日韩在线播放一区二区| 欧洲av不卡| 丝袜一区二区三区| 精品人妻少妇AV无码专区| 亚洲一区二区高清| 国产又粗又猛大又黄又爽| 最新日韩欧美| 日韩hmxxxx| 成人线上播放| 国产ts一区二区| 麻豆传媒视频在线| 亚洲第一男人天堂| 日本黄色中文字幕| 亚洲精品久久久久久国产精华液| 免费成人深夜夜行p站| 麻豆国产精品一区二区三区 | 综合亚洲深深色噜噜狠狠网站| 免费观看黄网站| 久久xxxx精品视频| 一区二区三区四区五区视频 | 久久久久se| 日韩黄色三级在线观看| 午夜精品久久久久久久久久久久| 无遮挡的视频在线观看 | 欧美韩国日本不卡| 真实乱偷全部视频| 日韩影院免费视频| www..com日韩| 欧美一级精品| 国产91精品一区二区绿帽| 欧美www.| 国产91对白在线播放| 黄色片免费在线观看| 国产丝袜视频一区| 国产av精国产传媒| 欧美日本精品一区二区三区| 日韩福利片在线观看| 亚洲欧洲av另类| 大地资源二中文在线影视观看 | 欧美精品video| 自拍视频在线| 亚洲一区999| 天天av天天翘| 日韩一区二区在线观看| 波多野结衣黄色网址| 色综合久久综合网| 精品无码久久久久久久| 中文字幕一区二区三区四区不卡| 女尊高h男高潮呻吟| 懂色av一区二区三区蜜臀| 国产91色在线观看| 久久久精品午夜少妇| 91午夜在线观看| 亚洲区第一页| 欧美a级免费视频| 91综合在线| 先锋影音一区二区三区| 国产欧美高清视频在线| 久久精品二区| 久久国产精品色av免费看| 91中文在线视频| 少妇精品视频一区二区免费看| 91av在线播放视频| 污视频在线免费观看网站| 精品国产区一区二区三区在线观看| 日本人妖在线| 一区二区三区黄色| 浮生影视网在线观看免费| 亚洲精品一区在线观看香蕉| 午夜性色福利影院| 亚洲理论在线a中文字幕| 性插视频在线观看| 亚洲国产精品视频在线观看| 国产女同91疯狂高潮互磨| 日韩写真欧美这视频| 精品人妻一区二区三区换脸明星 | julia中文字幕一区二区99在线| 91视频婷婷| 日韩一区免费| 动漫精品视频| 激情视频极品美女日韩| 鲁鲁视频www一区二区| 亚洲人成精品久久久| 欧美精品亚洲| 免费视频亚洲| 中文字幕在线观看一区二区三区| 99国产**精品****| 九一免费在线观看| 欧美色123| av免费观看网| 日韩成人免费在线| www.cao超碰| 不卡的看片网站| 香蕉网在线播放| 欧美经典一区二区三区| 日本黄色小视频在线观看| 国产精品婷婷午夜在线观看| 黄视频网站免费看| 亚洲国产乱码最新视频| 六月丁香激情综合| 9191国产精品| 日本xxxxwww| 国产一区二区三区毛片| 永久免费网站在线| 欧美一区二区三区四区在线| 男女在线视频| 国产91精品在线播放| 欧美国产大片| 亚洲a在线播放| 欧美一区 二区| 亚洲成人午夜在线| 国产精品magnet| 欧美老熟妇喷水| 精品一区二区三区av| 巨胸大乳www视频免费观看| 国产精品乱人伦| 国产污视频在线观看| 欧美日韩国产精品成人| 亚洲精品福利网站| 国产亚洲人成a一在线v站| 免费人成在线观看播放视频| 欧美孕妇与黑人孕交| 自拍偷拍亚洲| 精品欧美日韩| 欧美三级黄美女| 91精品无人成人www| 成人精品免费视频| 四虎永久免费在线观看| 亚洲1区2区3区4区| 中文字幕欧美人妻精品| 亚洲国产精品va在线看黑人动漫 | 99热精品一区二区| 1024手机在线观看你懂的| 亚洲国产一区二区三区青草影视 | 欧美一级二级三级区| 91禁外国网站| 国产精品xxx在线观看| 一区二区免费电影| 亚洲成人中文| 四川一级毛毛片| 国产精品高潮呻吟久久| 午夜婷婷在线观看| 日韩国产精品一区| 青草在线视频| 成人淫片在线看| 91影院成人| 91香蕉视频污版| 97久久人人超碰| 天天综合网久久综合网| 精品欧美黑人一区二区三区| 色影视在线观看| 国产成人精品视| 日本亚洲不卡| 国产主播自拍av| 成年人国产精品| 免费在线观看黄色av| 欧美顶级少妇做爰| 国产小视频在线| 国产成人精品a视频一区www| 老司机精品在线| 蜜桃网站在线观看| 国产精品资源在线观看| 疯狂撞击丝袜人妻| 欧美精品日韩精品| 日本中文字幕中出在线| 91精品视频网站| 亚洲a在线视频| 最好看的中文字幕| 亚洲欧美日韩在线不卡| 国产又粗又长又黄| 欧美精品一区在线播放| 久久av网站| 久久久天堂国产精品| 成人国产亚洲欧美成人综合网| 欧美精品videos极品| 日韩欧美国产麻豆| 福利在线导航136| 国产伦一区二区三区色一情| 亚洲激情不卡| 无码少妇精品一区二区免费动态| 91久久精品网| 岛国视频免费在线观看| 国产日产欧美a一级在线| 97国产成人高清在线观看| 亚洲综合在线一区二区| 亚洲国产一区在线观看| 亚洲aaa在线观看| 欧美制服第一页| 欧美激情777| 少妇欧美激情一区二区三区| 亚洲综合av网| 国产免费视频在线| 国产一区二区在线播放| 中文字幕人成人乱码| 亚洲精品女人久久久| 色综合网站在线| 免费一级毛片在线观看| 成人免费视频在线观看超级碰| 欧美日韩成人| 国产特级黄色录像| 555www色欧美视频| hd国产人妖ts另类视频| 色一情一区二区三区四区|