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

多級(jí)緩存架構(gòu)設(shè)計(jì)與緩存一致性保障

存儲(chǔ) 數(shù)據(jù)管理
多級(jí)緩存架構(gòu)是平衡性能與成本的最優(yōu)解,而緩存一致性則是系統(tǒng)可靠性的基石。在實(shí)際應(yīng)用中,需結(jié)合業(yè)務(wù)場(chǎng)景(如讀寫比例、一致性要求)靈活調(diào)整方案,畢竟沒有什么技術(shù)方案是完美的,只有最適合當(dāng)前業(yè)務(wù)場(chǎng)景的取舍。?

前言

在高并發(fā)系統(tǒng)設(shè)計(jì)中,緩存是提升性能的核心手段,但單一緩存方案往往難以應(yīng)對(duì)復(fù)雜的業(yè)務(wù)場(chǎng)景。多級(jí)緩存架構(gòu)通過分層存儲(chǔ)策略,結(jié)合不同緩存技術(shù)的優(yōu)勢(shì),能有效平衡性能與可靠性;而緩存一致性則是保障系統(tǒng)數(shù)據(jù)準(zhǔn)確性的關(guān)鍵。

多級(jí)緩存架構(gòu)

多級(jí)緩存的核心思想是按照數(shù)據(jù)訪問頻率和系統(tǒng)對(duì)延遲的敏感度,將數(shù)據(jù)分層存儲(chǔ)在不同的緩存介質(zhì)中,通過離用戶越近的緩存響應(yīng)速度越快的原則,最大化降低系統(tǒng)整體延遲。

為什么需要多級(jí)緩存

  • 本地緩存(如Caffeine、HashMap):優(yōu)勢(shì)是內(nèi)存級(jí)訪問,但受限于單機(jī)內(nèi)存容量,且在分布式集群中存在數(shù)據(jù)孤島問題,應(yīng)用重啟后緩存會(huì)全部失效。
  • 分布式緩存(如Redis、Memcached):優(yōu)勢(shì)是支持集群部署、容量可擴(kuò)展,能在多實(shí)例間共享數(shù)據(jù),但依賴網(wǎng)絡(luò)IO,高頻訪問下延遲成本被放大。

分層設(shè)計(jì)

  • L1:本地緩存層

存儲(chǔ)內(nèi)容:訪問頻率最高的熱點(diǎn)中的熱點(diǎn)數(shù)據(jù)(通常占總請(qǐng)求的 20%-30%),如首頁(yè) Banner、秒殺商品信息等。

技術(shù)選型:推薦使用Caffeine(Java)或LRU Cache(Go),這類工具支持高效的內(nèi)存管理和淘汰策略(如 LRU、LFU)。

核心特點(diǎn):容量小(通常限制在 1-10MB)、延遲極低、線程安全,僅在當(dāng)前應(yīng)用實(shí)例中有效。

  • L2:分布式緩存層

存儲(chǔ)內(nèi)容:覆蓋范圍更廣的熱點(diǎn)數(shù)據(jù)(通常占總請(qǐng)求的 60%-70%),如用戶會(huì)話、商品詳情等。

技術(shù)選型:Redis集群(主從 + 哨兵或Redis Cluster),支持?jǐn)?shù)據(jù)持久化和高可用部署。

核心特點(diǎn):容量大(可擴(kuò)展至TB級(jí))、支持集群共享、延遲高于本地緩存但遠(yuǎn)低于數(shù)據(jù)庫(kù)。

  • 兜底層:數(shù)據(jù)庫(kù)

作為最終數(shù)據(jù)源,承接緩存未命中的請(qǐng)求(通常占總請(qǐng)求的5%-10%),并通過主從分離、讀寫分離進(jìn)一步提升性能。

工作流程

  • 優(yōu)先查詢L1本地緩存,命中則直接返回;
  • 若L1未命中,查詢L2分布式緩存,命中則返回,同時(shí)將數(shù)據(jù)同步到L1(按需);
  • 若L2未命中,查詢數(shù)據(jù)庫(kù),返回結(jié)果的同時(shí),將數(shù)據(jù)寫入L2和L1(按需)。

代碼示例

@Component
public class MultiLevelCacheClient {
    // L1本地緩存(Caffeine)
    private final LoadingCache<String, Object> localCache;
    // L2分布式緩存(Redis)
    @Autowired
    private StringRedisTemplate redisTemplate;
    // 數(shù)據(jù)庫(kù)訪問層
    @Autowired
    private DataDao dataDao;

    // 初始化本地緩存
    public MultiLevelCacheClient() {
        this.localCache = Caffeine.newBuilder()
                .maximumSize(10_000)  // 限制最大條目數(shù),防止內(nèi)存溢出
                .expireAfterWrite(5, TimeUnit.MINUTES)  // 寫入后5分鐘過期
                .build(this::loadFromRedis);  // L1未命中時(shí)從L2加載
    }

    // 對(duì)外查詢接口
    public Object query(String key) {
        try {
            return localCache.get(key);  // 優(yōu)先查L(zhǎng)1
        } catch (Exception e) {
            // 緩存查詢異常時(shí)直接查數(shù)據(jù)庫(kù)兜底
            log.error("多級(jí)緩存查詢失敗,key:{}", key, e);
            return dataDao.query(key);
        }
    }

    // 從L2加載數(shù)據(jù)(供Caffeine回調(diào))
    private Object loadFromRedis(String key) {
        // 查L(zhǎng)2
        String valueStr = redisTemplate.opsForValue().get(key);
        if (valueStr != null) {
            return JSON.parseObject(valueStr, Object.class);
        }
        // L2未命中則查數(shù)據(jù)庫(kù),并回寫L2
        Object value = dataDao.query(key);
        if (value != null) {
            redisTemplate.opsForValue().set(key, JSON.toJSONString(value), 30, TimeUnit.MINUTES);
        }
        return value;
    }
}

緩存一致性

當(dāng)數(shù)據(jù)庫(kù)中的數(shù)據(jù)發(fā)生變更時(shí),若緩存中的數(shù)據(jù)未及時(shí)更新,會(huì)導(dǎo)致緩存臟讀問題。在多級(jí)緩存架構(gòu)中,一致性問題更為復(fù)雜,需同時(shí)保證L1、L2與數(shù)據(jù)庫(kù)的數(shù)據(jù)同步。

產(chǎn)生場(chǎng)景

  • 更新覆蓋:A線程更新數(shù)據(jù)庫(kù)后,B線程在緩存更新前讀取到舊數(shù)據(jù)。
  • 緩存殘留:數(shù)據(jù)庫(kù)數(shù)據(jù)已刪除,但緩存中仍保留該數(shù)據(jù)。
  • 多級(jí)不一致:L1緩存已更新,但L2緩存未更新,導(dǎo)致集群中其他實(shí)例讀取到舊數(shù)據(jù)。

策略設(shè)計(jì)

相比更新數(shù)據(jù)庫(kù)后更新緩存,刪除緩存策略更簡(jiǎn)單且能減少并發(fā)沖突。其核心邏輯是:當(dāng)數(shù)據(jù)變更時(shí),先刪除緩存中的舊數(shù)據(jù),后續(xù)請(qǐng)求會(huì)從數(shù)據(jù)庫(kù)加載新數(shù)據(jù)并回填緩存。

L1本地緩存處理:

  • 數(shù)據(jù)變更時(shí)立即刪除當(dāng)前實(shí)例的L1緩存,避免同一實(shí)例后續(xù)讀取到舊數(shù)據(jù)。
  • 若應(yīng)用部署在多實(shí)例集群中,可通過事件通知(如 Redis Pub/Sub)觸發(fā)其他實(shí)例刪除L1 緩存,避免跨實(shí)例不一致。

L2分布式緩存處理:

  • 采用異步刪除策略,避免阻塞數(shù)據(jù)庫(kù)更新的主流程(如通過線程池或消息隊(duì)列異步執(zhí)行刪除操作)。
  • 為緩存設(shè)置合理的過期時(shí)間(如5-30分鐘),作為刪除操作失敗時(shí)的兜底機(jī)制。

代碼示例

事件類的定義
/**
 * 數(shù)據(jù)更新事件:當(dāng)數(shù)據(jù)庫(kù)數(shù)據(jù)發(fā)生新增/修改/刪除時(shí)發(fā)布
 */
public class DataUpdateEvent extends ApplicationEvent {
    // 數(shù)據(jù)唯一標(biāo)識(shí)(如商品ID、用戶ID)
    private final String key;
    // 操作類型(新增/更新/刪除)
    private final OperationType operationType;

    public DataUpdateEvent(Object source, String key, OperationType operationType) {
        super(source);
        this.key = key;
        this.operationType = operationType;
    }

    // getter方法
    public String getKey() { return key; }
    public OperationType getOperationType() { return operationType; }

    // 操作類型枚舉
    public enum OperationType {
        CREATE, UPDATE, DELETE
    }
}
事件發(fā)布的觸發(fā)時(shí)機(jī)

事件應(yīng)在數(shù)據(jù)庫(kù)操作成功后發(fā)布,確保只有當(dāng)數(shù)據(jù)確實(shí)更新后,才會(huì)觸發(fā)緩存刷新。以商品信息更新為例,發(fā)布邏輯如下:

@Service
public class ProductService {
    @Autowired
    private ProductDao productDao;
    // Spring事件發(fā)布器
    @Autowired
    private ApplicationEventPublisher eventPublisher;

    /**
     * 更新商品信息(包含事件發(fā)布邏輯)
     */
    @Transactional
    public void updateProduct(Product product) {
        // 1. 執(zhí)行數(shù)據(jù)庫(kù)更新
        productDao.update(product);
        
        // 2. 數(shù)據(jù)庫(kù)操作成功后,發(fā)布數(shù)據(jù)更新事件
        String key = "product:" + product.getId(); // 緩存鍵(與查詢時(shí)保持一致)
        eventPublisher.publishEvent(
            new DataUpdateEvent(this, key, DataUpdateEvent.OperationType.UPDATE)
        );
    }

    /**
     * 刪除商品(包含事件發(fā)布邏輯)
     */
    @Transactional
    public void deleteProduct(Long productId) {
        // 1. 執(zhí)行數(shù)據(jù)庫(kù)刪除
        productDao.delete(productId);
        
        // 2. 發(fā)布刪除事件
        String key = "product:" + productId;
        eventPublisher.publishEvent(
            new DataUpdateEvent(this, key, DataUpdateEvent.OperationType.DELETE)
        );
    }
}
事件處理
@Component
public class CacheConsistencyManager {
    @Autowired
    private LoadingCache<String, Object> localCache;
    @Autowired
    private StringRedisTemplate redisTemplate;
    // 線程池用于異步操作
    private final ExecutorService cacheExecutor = Executors.newFixedThreadPool(5);

    // 處理數(shù)據(jù)更新事件
    @EventListener
    public void onDataUpdated(DataUpdateEvent event) {
        String key = event.getKey();
        // 1. 立即刪除本地緩存(同步操作,確保當(dāng)前實(shí)例無舊數(shù)據(jù))
        localCache.invalidate(key);

        // 2. 異步刪除分布式緩存(避免阻塞主流程)
        cacheExecutor.submit(() -> {
            try {
                redisTemplate.delete(key);
                // 發(fā)送緩存刪除事件,通知其他實(shí)例清理L1(集群場(chǎng)景)
                redisTemplate.convertAndSend("cache:invalid:channel", key);
            } catch (Exception e) {
                log.error("異步刪除Redis緩存失敗,key:{}", key, e);
                // 失敗不影響主流程,依賴過期時(shí)間兜底
            }
        });
    }

    // 監(jiān)聽其他實(shí)例的緩存刪除通知
    @Bean
    public RedisMessageListenerContainer redisListener() {
        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
        container.setConnectionFactory(redisTemplate.getConnectionFactory());
        container.addMessageListener((message, pattern) -> {
            String key = new String(message.getBody());
            localCache.invalidate(key);  // 清理當(dāng)前實(shí)例的L1緩存
        }, new PatternTopic("cache:invalid:channel"));
        return container;
    }
}
異步事件發(fā)布(可選)
@Configuration
@EnableAsync // 開啟異步支持
public class AsyncConfig {
    @Bean
    public Executor eventExecutor() {
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        executor.setCorePoolSize(3);
        executor.setMaxPoolSize(10);
        executor.setQueueCapacity(100);
        executor.setThreadNamePrefix("event-publisher-");
        executor.initialize();
        return executor;
    }
}

// 在發(fā)布者中指定異步執(zhí)行
@Service
public class ProductService {
    @Async("eventExecutor") // 使用自定義線程池異步發(fā)布
    public void publishUpdateEvent(String key) {
        eventPublisher.publishEvent(
            new DataUpdateEvent(this, key, DataUpdateEvent.OperationType.UPDATE)
        );
    }
}

總結(jié)

多級(jí)緩存架構(gòu)是平衡性能與成本的最優(yōu)解,而緩存一致性則是系統(tǒng)可靠性的基石。在實(shí)際應(yīng)用中,需結(jié)合業(yè)務(wù)場(chǎng)景(如讀寫比例、一致性要求)靈活調(diào)整方案,畢竟沒有什么技術(shù)方案是完美的,只有最適合當(dāng)前業(yè)務(wù)場(chǎng)景的取舍。

責(zé)任編輯:武曉燕 來源: 一安未來
相關(guān)推薦

2022-12-14 08:23:30

2020-06-01 22:09:48

緩存緩存同步緩存誤用

2017-05-19 15:00:05

session架構(gòu)web-server

2020-05-12 10:43:22

Redis緩存數(shù)據(jù)庫(kù)

2025-11-13 07:42:28

2021-06-11 09:21:58

緩存數(shù)據(jù)庫(kù)Redis

2024-04-11 13:45:14

Redis數(shù)據(jù)庫(kù)緩存

2024-05-28 00:50:00

RedisMySQL緩存

2025-11-12 00:25:00

2023-08-15 09:31:01

分布式緩存

2024-12-26 15:01:29

2019-03-27 13:56:39

緩存雪崩穿透

2023-08-14 08:10:33

CPU緩存RFO

2023-12-01 13:51:21

數(shù)據(jù)一致性數(shù)據(jù)庫(kù)

2017-07-25 14:38:56

數(shù)據(jù)庫(kù)一致性非鎖定讀一致性鎖定讀

2022-09-06 15:30:20

緩存一致性

2018-09-11 10:46:10

緩存數(shù)據(jù)庫(kù)一致性

2021-08-10 11:05:09

服務(wù)器緩存 架構(gòu)

2022-07-25 09:48:22

緩存數(shù)據(jù)服務(wù)

2020-09-03 09:45:38

緩存數(shù)據(jù)庫(kù)分布式
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产美女精品一区二区三区| 婷婷另类小说| 欧美优质美女网站| 在线观看欧美亚洲| 国产av无码专区亚洲a∨毛片| 黄色av成人| 亚洲天堂av综合网| 师生出轨h灌满了1v1| 天堂av在线| 亚洲色图欧美偷拍| 久中文字幕一区| 国产人妻精品一区二区三区| 国产情侣一区| 欧美成人午夜激情| 特级西西www444人体聚色| 国产视频网站一区二区三区| 日韩欧美极品在线观看| 日本美女爱爱视频| 日本中文字幕一区二区有码在线| 久久国产综合精品| 18性欧美xxxⅹ性满足| 在线看的片片片免费| 妖精一区二区三区精品视频| 91精品国产aⅴ一区二区| www日韩视频| av资源网在线播放| 夜夜爽夜夜爽精品视频| 亚洲图片欧洲图片日韩av| 熟妇人妻中文av无码| 精品一区二区三区免费毛片爱 | 日韩激情美女| 亚洲天堂成人网| 亚洲欧洲一区二区| 国产最新视频在线| 91老师国产黑色丝袜在线| 国产激情一区二区三区在线观看| 一本色道久久综合熟妇| 日韩高清在线电影| 国产成人精品久久亚洲高清不卡| 日韩成人高清视频| 国户精品久久久久久久久久久不卡| 日韩亚洲第一页| 超碰人人人人人人人| 免费一区二区三区视频导航| 日韩精品久久久久| 国产精品探花一区二区在线观看| aaa国产精品| 精品裸体舞一区二区三区| 制服下的诱惑暮生| 国产人与zoxxxx另类91| 欧美一区在线视频| 波多野结衣在线免费观看| 日本亚洲欧洲无免费码在线| 欧美色国产精品| 视频在线观看免费高清| 福利一区和二区| 在线免费观看日本一区| 久久九九国产视频| jizz免费一区二区三区| 欧美日韩一区精品| 污视频网址在线观看| 六九午夜精品视频| 91麻豆精品国产91久久久久久| jizz欧美激情18| 国产亚洲精品精品国产亚洲综合| 欧美日韩视频在线一区二区 | 精品美女久久久久| 国产美女诱惑一区二区| 日本一本a高清免费不卡| 国产黄网在线观看| 久色婷婷小香蕉久久| 亚洲综合在线做性| 视频二区在线观看| 国产女主播视频一区二区| 在线不卡日本| 成人三级小说| 色天使久久综合网天天| 色婷婷.com| 6080成人| 在线视频精品一| 久久国产波多野结衣| 黄页网站一区| 国产精品福利无圣光在线一区| 亚洲一二区视频| 粉嫩高潮美女一区二区三区| 麻豆av福利av久久av| 婷婷成人激情| 亚洲福利视频一区二区| 国产成人精品无码播放| 久久精品资源| 日韩av在线播放资源| 亚洲精品国产精品国自产网站| 亚洲二区三区不卡| 2019中文在线观看| 国产一区二区波多野结衣| 国产69精品久久99不卡| 日韩av一级大片| 久久不射影院| 欧美日韩精品一区视频| 欧美夫妇交换xxx| 成人中文视频| 91成人天堂久久成人| 国产又粗又黄又爽的视频| www.欧美亚洲| 在线视频一二三区| 性高爱久久久久久久久| 精品久久久久久久一区二区蜜臀| 欧洲美一区二区三区亚洲 | 国产欧美精品一区二区色综合 | 日韩精品视频三区| 538精品在线视频| 久久综合九色| 激情久久av| dy888亚洲精品一区二区三区| 欧美日韩精品在线观看| xxx中文字幕| 欧美伦理影院| 欧美在线一区二区视频| 性做久久久久久久久久| 国产精品久线观看视频| avav在线看| 国产精品白丝av嫩草影院| 日韩视频中文字幕| 少妇又紧又色又爽又刺激视频 | 国模私拍一区二区国模曼安| 91精品国产高清一区二区三区 | 色哟哟欧美精品| 亚洲美女在线播放| 伊人情人综合网| 国产精品亚洲网站| 137大胆人体在线观看| 日韩欧美大尺度| 亚洲欧美日本一区| 最新成人av网站| 成人三级在线| 女囚岛在线观看| 日韩视频免费观看高清完整版 | 中文字幕91视频| 丝瓜av网站精品一区二区 | 看电影就来5566av视频在线播放| 亚洲一区二区三区美女| 中文字幕无码毛片免费看| 亚洲草久电影| 91免费高清视频| 国产视频在线播放| 欧美一区二区三区四区视频| 欧美手机在线观看| 国产在线精品不卡| 中国女人做爰视频| 亚洲无线观看| 午夜精品久久久久久久白皮肤 | 精品少妇人妻av免费久久洗澡| 日韩欧美中文字幕在线视频| 九九热这里只有精品免费看| av网站在线观看免费| 一区二区三区免费观看| 国产ts在线观看| 极品少妇一区二区三区| 国内成+人亚洲| 成人性生活视频| 中文字幕亚洲二区| 国产区精品在线| 亚洲国产精品一区二区久久| 在线视频 日韩| 久久综合图片| 99精品一级欧美片免费播放| 日韩高清二区| 国产69精品久久久久久| 黄色小视频在线免费观看| 欧美色图第一页| 免费又黄又爽又色的视频| heyzo一本久久综合| 亚洲天堂av免费在线观看| 成人在线视频亚洲| 精品久久99ma| 天天操夜夜操视频| 国产精品久久一卡二卡| 美女被艹视频网站| 亚洲一区久久| 一本久道久久综合| 一区二区视频| 国产精品爱久久久久久久| 麻豆传媒视频在线观看免费| 日韩精品一区二区三区四区 | 日本私人网站在线观看| 欧美性生活久久| 日本黄色小说视频| 久久综合给合久久狠狠狠97色69| 亚洲第一狼人区| 欧美涩涩网站| 视频一区视频二区视频| 日韩最新av| 国产成人精品久久久| 亚洲小说区图片区都市| 亚洲人成网站免费播放| 国产wwwxxx| 欧亚一区二区三区| 国产在线拍揄自揄拍| 日本一区二区三区四区在线视频| 亚洲性图第一页| 青青草97国产精品免费观看| 日本男女交配视频| 久久综合99| 欧美日韩在线观看一区| 国产精品一级在线观看| 日本国产欧美一区二区三区| 在线免费观看的av| 一区二区三区国产视频| 日本人妻熟妇久久久久久| 欧美人狂配大交3d怪物一区| 青青青国产在线| 亚洲一区日韩精品中文字幕| 九一在线免费观看| 91在线高清观看| 国产精品19p| 精品一区二区三区视频| 九九热在线免费| 香蕉国产精品偷在线观看不卡| 人人妻人人澡人人爽欧美一区| 日韩av有码| 日韩久久不卡| 九一亚洲精品| 精品无人区一区二区三区 | 精品成人一区二区| 99re只有精品| 欧美日韩成人一区二区| 久久人人爽人人爽人人片av免费| 午夜精品一区二区三区免费视频 | 精品国产乱码久久久久久天美| 91人妻一区二区三区蜜臀| 国产精品五月天| 亚洲午夜久久久久久久国产| 久久只精品国产| 蜜桃精品一区二区| 99re6这里只有精品视频在线观看| 男男受被啪到高潮自述| 国产乱对白刺激视频不卡| 在线观看免费不卡av| 麻豆一区二区99久久久久| 国产天堂在线播放| 日韩福利电影在线观看| 黄色一级一级片| 三级影片在线观看欧美日韩一区二区| 久草资源站在线观看| 国产农村妇女毛片精品久久莱园子| aa视频在线播放| 亚洲欧美日韩在线观看a三区 | 麻豆精品精品国产自在97香蕉| 91蝌蚪视频在线观看| 久久激情婷婷| 日本久久久久久久久久久久| 日本91福利区| 欧美日韩精品区别| 国产麻豆精品95视频| 特黄特黄一级片| 国产99一区视频免费| 成年女人免费视频| 97久久精品人人做人人爽50路| 久久偷拍免费视频| 国产女同互慰高潮91漫画| 亚洲一二三四视频| 亚洲少妇最新在线视频| 国产一级生活片| 欧美日韩在线一区| 日本三级一区二区三区| 欧美精品精品一区| 刘亦菲久久免费一区二区| 亚洲精品日韩在线| av在线免费一区| 欧美大码xxxx| 色多多在线观看| 国产精品一区二区久久国产| 成人精品在线| 免费av一区二区三区| 成人一区不卡| 丁香六月激情网| 久久久久久久欧美精品| 涩多多在线观看| aaa亚洲精品| 蜜桃av免费在线观看| 一区二区三区美女| 日本中文字幕在线观看视频| 91精品在线麻豆| 五月天福利视频| www.欧美三级电影.com| 国产探花在线观看| 国产精品成人一区| 97久久综合精品久久久综合| 欧美精品久久久| 狠狠爱成人网| 色综合色综合色综合色综合| 成人激情黄色小说| 国产真人真事毛片视频| 亚洲v日本v欧美v久久精品| 探花国产精品一区二区| 亚洲成年人在线播放| av资源种子在线观看| 久久久久久久久国产| 韩国精品视频在线观看| 国产精品一 二 三| 97人人精品| 精品视频无码一区二区三区| 国产一区二区精品久久| 色婷婷在线影院| 亚洲午夜影视影院在线观看| 91亚洲欧美激情| 亚洲最新视频在线| 96av在线| 91久久国产综合久久蜜月精品| 国产精品最新| 好吊妞无缓冲视频观看| 国产精品亚洲午夜一区二区三区| 午夜精产品一区二区在线观看的| 亚洲国产成人porn| aaa一区二区三区| 日韩中文字幕在线播放| 亚洲欧美韩国| 国产伦精品一区二区三区视频免费 | 日韩精品视频在线观看免费| www视频在线免费观看| 国产精品日韩电影| 牲欧美videos精品| 日本一本中文字幕| 高清在线成人网| a级片在线观看免费| 欧美久久一二区| 色影院视频在线| 国产精品一区二区久久精品| 欧美男男gaytwinkfreevideos| 日韩a∨精品日韩在线观看| 国产成人在线视频网站| 波多野结衣不卡视频| 91精品在线一区二区| av网址在线看| 91亚洲永久免费精品| 五月天激情综合网| 国产精品久久久久久久av福利| 中文欧美字幕免费| 中文字幕在线网站| 在线性视频日韩欧美| 丁香婷婷久久| 日韩视频在线免费播放| 激情综合网av| 希岛爱理中文字幕| 日韩女同互慰一区二区| 18aaaa精品欧美大片h| 国产一区在线观| 亚洲永久免费精品| 久久精品一区二区免费播放| 色偷偷88欧美精品久久久| 户外极限露出调教在线视频| 国产成人在线一区二区| 精品国精品国产自在久国产应用| 色一情一乱一伦一区二区三区日本| 久久精品欧美日韩| 91成人国产综合久久精品| 日韩视频免费观看| 欧美久久亚洲| 日韩中字在线观看| 久久久天堂av| 中文字幕人妻精品一区| 日韩在线视频免费观看| 久久在线观看| 97干在线视频| 国产亚洲一区二区三区四区| 久久久久久久久久一级| 久久精品人人爽| eeuss鲁片一区二区三区| 国产精品va无码一区二区| 欧美激情在线免费观看| 国产日韩免费视频| 性日韩欧美在线视频| 欧美精选视频在线观看| 中文字幕第六页| 欧美日韩免费区域视频在线观看| 成人p站proumb入口| 91色p视频在线| 亚洲深夜av| 国产视频精品免费| 精品国产乱码久久久久久蜜臀 | 国产在线日韩| 成人午夜福利一区二区| 91精品国产91久久久久久一区二区| brazzers在线观看| 欧美自拍资源在线| 国产精品夜夜嗨| 日韩 国产 欧美| 欧美日韩成人在线观看| 久久最新网址| 中文字幕一区二区三区人妻在线视频 | 伊人久久大香线蕉综合影院首页| www插插插无码视频网站| 国产精品久久三区| 五十路在线观看| 91美女片黄在线观| 日韩精品91亚洲二区在线观看| 青娱乐国产精品| 最近中文字幕mv在线一区二区三区四区 | 制服丝袜国产精品| 在线中文字幕播放|