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

用好緩存的十條軍規(guī)

開(kāi)發(fā) 前端
緩存不是存儲(chǔ)數(shù)據(jù)的垃圾桶,需要根據(jù)數(shù)據(jù)訪問(wèn)頻率、讀寫(xiě)比例、數(shù)據(jù)一致性要求進(jìn)行分級(jí)管理。大對(duì)象緩存會(huì)導(dǎo)致內(nèi)存碎片化,甚至觸發(fā)Full GC。

前言

"蘇工!首頁(yè)崩了!"

幾年前的一天晚上,我接到電話時(shí),我正夢(mèng)見(jiàn)自己成了緩存之神。

打開(kāi)監(jiān)控一看:

緩存命中率:0%  
數(shù)據(jù)庫(kù)QPS:10萬(wàn)+  
線程阻塞數(shù):2000+

根本原因竟是之前有同事寫(xiě)的這段代碼:

public Product getProduct(Long id) {  
    return productDao.findById(id); 
}

直連數(shù)據(jù)庫(kù),未加緩存。

這一刻我意識(shí)到:不會(huì)用緩存的程序員,就像不會(huì)剎車的賽車手。

今天這篇文章跟大家一起聊聊使用緩存的10條軍規(guī),希望對(duì)你會(huì)有所幫助。

圖片圖片

軍規(guī)1: 避免大key

反例場(chǎng)景:

@Cacheable(value = "user", key = "#id")  
public User getUser(Long id) {  
    return userDao.findWithAllRelations(id); 
}

這里一次查詢出了用戶及其所有關(guān)聯(lián)對(duì)象,然后添加到內(nèi)存緩存中。

如果通過(guò)id查詢用戶信息的請(qǐng)求量非常大,會(huì)導(dǎo)致頻繁的GC。

正確實(shí)踐:

@Cacheable(value = "user_base", key = "#id")  
public UserBase getBaseInfo(Long id) { /*...*/ }  

@Cacheable(value = "user_detail", key = "#id")  
public UserDetail getDetailInfo(Long id) { /*...*/ }

這種情況,需要拆分緩存對(duì)象,比如:將用戶基本信息和用戶詳細(xì)信息分開(kāi)緩存。

緩存不是存儲(chǔ)數(shù)據(jù)的垃圾桶,需要根據(jù)數(shù)據(jù)訪問(wèn)頻率、讀寫(xiě)比例、數(shù)據(jù)一致性要求進(jìn)行分級(jí)管理。

大對(duì)象緩存會(huì)導(dǎo)致內(nèi)存碎片化,甚至觸發(fā)Full GC。

建議將基礎(chǔ)信息(如用戶ID、名稱)與擴(kuò)展信息(如訂單記錄)分離存儲(chǔ)。

軍規(guī)2: 永遠(yuǎn)設(shè)置過(guò)期時(shí)間

血淚案例:某系統(tǒng)將配置信息緩存設(shè)置為永不過(guò)期,導(dǎo)致修改配置后三天才生效。

正確配置:

@Cacheable(value = "config", key = "#key",  
           unless = "#result == null",  
           cacheManager = "redisCacheManager")  
public String getConfig(String key) {  
    return configDao.get(key);  
}

Redis配置如下:

spring.cache.redis.time-to-live=300000 // 5分鐘  
spring.cache.redis.cache-null-values=false

需要指定key的存活時(shí)間,比如:time-to-live設(shè)置成5分鐘。

TTL設(shè)置公式:

最優(yōu)TTL = 平均數(shù)據(jù)變更周期 × 0.3

深層思考:過(guò)期時(shí)間過(guò)短會(huì)導(dǎo)致緩存穿透風(fēng)險(xiǎn),過(guò)長(zhǎng)會(huì)導(dǎo)致數(shù)據(jù)不一致。

建議采用動(dòng)態(tài)TTL策略。

例如電商商品詳情頁(yè)可設(shè)置30分鐘基礎(chǔ)TTL+隨機(jī)5分鐘抖動(dòng)。

軍規(guī)3: 避免批量失效

典型事故:所有緩存設(shè)置相同TTL,導(dǎo)致每天凌晨集中失效,數(shù)據(jù)庫(kù)瞬時(shí)被打爆。

解決方案:

使用基礎(chǔ)TTL + 隨機(jī)抖動(dòng)的方案:

public long randomTtl(long baseTtl) {  
    return baseTtl + new Random().nextInt(300); 
}

TTL增加0-5分鐘隨機(jī)值。

使用示例

redisTemplate.opsForValue().set(key, value, randomTtl(1800), TimeUnit.SECONDS);

失效時(shí)間分布:

圖片圖片

軍規(guī)4: 需要增加熔斷降級(jí)

我們?cè)谑褂镁彺娴臅r(shí)候,需要增加熔斷降級(jí)策略,防止萬(wàn)一緩存掛了,不能影響整個(gè)服務(wù)的可用性。

Hystrix實(shí)現(xiàn)示例:

@HystrixCommand(fallbackMethod = "getProductFallback",  
               commandProperties = {  
                   @HystrixProperty(name = "circuitBreaker.requestVolumeThreshold", value = "20"),  
                   @HystrixProperty(name = "circuitBreaker.sleepWindowInMilliseconds", value = "5000")  
               })  
public Product getProduct(Long id) {  
    return productDao.findById(id);  
}  

public Product getProductFallback(Long id) {  
    return new Product().setDefault(); // 返回兜底數(shù)據(jù)  
}

熔斷狀態(tài)機(jī):

圖片圖片

軍規(guī)5: 空值緩存

在用戶請(qǐng)求并發(fā)量大的業(yè)務(wù)場(chǎng)景種,我們需要把空值緩存起來(lái)。

防止大批量在系統(tǒng)中不存在的用戶id,沒(méi)有命中緩存,而直接查詢數(shù)據(jù)庫(kù)的情況。

典型代碼:

public Product getProduct(Long id) {  
    String key = "product:" + id;  
    Product product = redis.get(key);  
    if (product != null) {  
        if (product.isEmpty()) { // 空對(duì)象標(biāo)識(shí)  
            returnnull;  
        }  
        return product;  
    }  

    product = productDao.findById(id);  
    if (product == null) {  
        redis.setex(key, 300, "empty"); // 緩存空值5分鐘  
        returnnull;  
    }  

    redis.setex(key, 3600, product);  
    return product;  
}

空值緩存原理:

圖片圖片

需要將數(shù)據(jù)庫(kù)中返回的空值,緩存起來(lái)。

后面如果有相同的key查詢數(shù)據(jù),則直接從緩存中返回空值。

而無(wú)需再查詢一次數(shù)據(jù)庫(kù)。

軍規(guī)6: 分布式鎖用Redisson

用Redis做分布式鎖的時(shí)候,可能會(huì)遇到很多問(wèn)題。

建議大家使用Redisson做分布式鎖。

Redisson分布式鎖實(shí)現(xiàn):

public Product getProduct(Long id) {  
    String key = "product:" + id;  
    Product product = redis.get(key);  
    if (product == null) {  
        RLock lock = redisson.getLock("lock:" + key);  
        try {  
            if (lock.tryLock(3, 30, TimeUnit.SECONDS)) {  
                product = productDao.findById(id);  
                redis.setex(key, 3600, product);  
            }  
        } finally {  
            lock.unlock();  
        }  
    }  
    return product;  
}

鎖競(jìng)爭(zhēng)流程圖:

圖片圖片

軍規(guī)7: 延遲雙刪策略

在保證數(shù)據(jù)庫(kù)和緩存雙寫(xiě)數(shù)據(jù)一致性的業(yè)務(wù)場(chǎng)景種,可以使用延遲雙刪的策略。

例如:

@Transactional  
public void updateProduct(Product product) {  
    // 1. 先刪緩存  
    redis.delete("product:" + product.getId());  

    // 2. 更新數(shù)據(jù)庫(kù)  
    productDao.update(product);  

    // 3. 延時(shí)再刪  
    executor.schedule(() -> {  
        redis.delete("product:" + product.getId());  
    }, 500, TimeUnit.MILLISECONDS);  
}

軍規(guī)8: 最終一致性方案

延遲雙刪可能還有其他的問(wèn)題。

我們可以使用最終一致性方案。

基于Binlog的方案:

圖片圖片

DB更新數(shù)據(jù)之后,Canal會(huì)自動(dòng)監(jiān)聽(tīng)數(shù)據(jù)的變化,它會(huì)解析數(shù)據(jù)事件,然后發(fā)送一條MQ消息。

在MQ消費(fèi)者中,刪除緩存。

軍規(guī)9: 熱點(diǎn)數(shù)據(jù)預(yù)加載

對(duì)于一些經(jīng)常使用的熱點(diǎn)數(shù)據(jù),我們可以提前做數(shù)據(jù)的預(yù)加載。

實(shí)時(shí)監(jiān)控方案:

// 使用Redis HyperLogLog統(tǒng)計(jì)訪問(wèn)頻率  
public void recordAccess(Long productId) {  
    String key = "access:product:" + productId;  
    redis.pfadd(key, UUID.randomUUID().toString());  
    redis.expire(key, 60); // 統(tǒng)計(jì)最近60秒  
}  

// 定時(shí)任務(wù)檢測(cè)熱點(diǎn)  
@Scheduled(fixedRate = 10000)  
public void detectHotKeys() {  
    Set<String> keys = redis.keys("access:product:*");  
    keys.forEach(key -> {  
        long count = redis.pfcount(key);  
        if (count > 1000) { // 閾值  
            Long productId = extractId(key);  
            preloadProduct(productId);  
        }  
    });  
}

定時(shí)任務(wù)檢測(cè)熱點(diǎn),并且更新到緩存中。

軍規(guī)10: 根據(jù)場(chǎng)景選擇數(shù)據(jù)結(jié)構(gòu)

血淚案例:某社交平臺(tái)使用String類型存儲(chǔ)用戶信息。

錯(cuò)誤用String存儲(chǔ)對(duì)象:

redis.set("user:123", JSON.toJSONString(user));

每次更新單個(gè)字段都需要反序列化整個(gè)對(duì)象。

導(dǎo)致問(wèn)題:

  1. 序列化/反序列化開(kāi)銷大
  2. 更新單個(gè)字段需讀寫(xiě)整個(gè)對(duì)象
  3. 內(nèi)存占用高 正確實(shí)踐:
// 使用Hash存儲(chǔ)  
redis.opsForHash().putAll("user:123", userToMap(user));  

// 局部更新  
redis.opsForHash().put("user:123", "age", "25");

數(shù)據(jù)結(jié)構(gòu)選擇矩陣:

圖片圖片

各數(shù)據(jù)結(jié)構(gòu)最佳實(shí)踐:

1.String

計(jì)數(shù)器

redis.opsForValue().increment("article:123:views");

分布式鎖

redis.opsForValue().set("lock:order:456", "1", "NX", "EX", 30);

2.Hash

存儲(chǔ)商品信息

Map<String, String> productMap = new HashMap<>();  
productMap.put("name", "iPhone15");  
productMap.put("price", "7999");  
redis.opsForHash().putAll("product:789", productMap);

部分更新

redis.opsForHash().put("product:789", "stock", "100");

3.List

消息隊(duì)列

redis.opsForList().leftPush("queue:payment", orderJson);

最新N條記錄

redis.opsForList().trim("user:123:logs", 0, 99);

4.Set

標(biāo)簽系統(tǒng)

redis.opsForSet().add("article:123:tags", "科技", "數(shù)碼");

共同好友

redis.opsForSet().intersect("user:123:friends", "user:456:friends");

5.ZSet

排行榜

redis.opsForZSet().add("leaderboard", "player1", 2500);  
redis.opsForZSet().reverseRange("leaderboard", 0, 9);

延遲隊(duì)列

redis.opsForZSet().add("delay:queue", "task1", System.currentTimeMillis() + 5000);

總結(jié)

緩存治理黃金法則

問(wèn)題類型

推薦方案

工具推薦

緩存穿透

空值緩存+布隆過(guò)濾器

Redisson BloomFilter

緩存雪崩

隨機(jī)TTL+熔斷降級(jí)

Hystrix/Sentinel

緩存擊穿

互斥鎖+熱點(diǎn)預(yù)加載

Redisson Lock

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

延遲雙刪+最終一致性

Canal+RocketMQ

圖片圖片

最后忠告:緩存是把雙刃劍,用得好是性能利器,用不好就是定時(shí)炸彈。

當(dāng)你準(zhǔn)備引入緩存時(shí),先問(wèn)自己三個(gè)問(wèn)題:

  1. 真的需要緩存嗎?
  2. 緩存方案是否完整?
  3. 有沒(méi)有兜底措施?
責(zé)任編輯:武曉燕 來(lái)源: 蘇三說(shuō)技術(shù)
相關(guān)推薦

2025-03-19 08:21:15

2012-09-28 09:12:39

移動(dòng)Web

2025-05-15 20:55:38

2009-01-15 09:57:00

2021-03-18 09:00:00

微服務(wù)架構(gòu)工具

2025-07-01 00:45:00

2022-02-14 00:16:17

數(shù)據(jù)安全云安全

2021-02-04 11:55:45

Redis性能優(yōu)化

2020-04-30 09:35:41

物聯(lián)網(wǎng)安全物聯(lián)網(wǎng)IOT

2016-11-17 14:54:49

云計(jì)算安全性可用性

2012-05-15 01:38:18

編程編程技巧編程觀點(diǎn)

2012-03-06 16:01:04

項(xiàng)目管理

2012-08-02 09:14:13

編程戒律

2011-04-14 11:43:47

2024-08-19 09:04:50

2011-08-02 21:16:56

查詢SQL性能優(yōu)化

2024-02-19 14:50:42

編碼原則軟件開(kāi)發(fā)

2022-09-09 16:27:09

微服務(wù)架構(gòu)數(shù)據(jù)存儲(chǔ)

2011-07-27 09:17:20

.NET設(shè)計(jì)架構(gòu)

2018-08-17 15:33:37

點(diǎn)贊
收藏

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

91精品又粗又猛又爽| 黄频视频在线观看| 在线观看精品国产| 深爱激情综合| 日韩一区二区在线播放| www.av毛片| 黄色av免费在线看| 国产一区啦啦啦在线观看| 欧美激情一区二区三级高清视频| 国产精品1000部啪视频| 爱情电影网av一区二区| 午夜成人在线视频| 亚洲最大色综合成人av| 蜜臀久久久久久999| 日韩av电影天堂| 久久久久国产精品免费| 日韩精品电影一区二区三区| 99久久人爽人人添人人澡| 色噜噜狠狠成人中文综合| 国风产精品一区二区| 免费在线毛片| 北条麻妃一区二区三区| 成人欧美一区二区三区在线湿哒哒| 日韩大片免费在线观看| 偷拍欧美精品| 亚洲人在线视频| 亚洲美女精品视频| 欧美国产视频| 在线看一区二区| 精品久久一二三| 欧美伦理免费在线| 中文字幕一区二区三区在线观看| 蜜桃导航-精品导航| 亚洲国产精品久久久久久久| 蜜桃av噜噜一区二区三区小说| 91国产精品电影| 免费无码毛片一区二区app| 日本高清免费电影一区| 亚洲人成网站色ww在线| 91玉足脚交白嫩脚丫| 亚洲视频一起| 欧美一区在线视频| 日本黄色福利视频| 99re久久| 在线视频一区二区三区| 欧美精品99久久| 老牛影视精品| 亚洲成av人片一区二区三区| 成人免费看片'免费看| av免费在线网站| 亚洲人亚洲人成电影网站色| 在线视频不卡一区二区| 99视频在线观看地址| 欧美国产激情一区二区三区蜜月| 日本视频一区二区不卡| 成人在线免费看| 欧美国产精品一区二区| 先锋影音网一区| 性开放的欧美大片| 国产精品伦一区| 在线无限看免费粉色视频| 色大18成网站www在线观看| 国产精品久久久久影院老司| 亚洲一区二区在线免费观看| 毛片免费不卡| 亚洲狼人国产精品| 久久这里只有精品18| 白白色在线观看| 偷拍亚洲欧洲综合| 国产aaa一级片| 成人在线视频免费看| 欧美日韩三级视频| 亚洲成人手机在线观看| 91精品国产自产精品男人的天堂| 亚洲高清久久网| 亚洲黄色小说视频| 欧美大人香蕉在线| 欧美激情在线观看视频| 国产一区二区三区影院| 三级成人在线视频| 成人激情av在线| 免费成人在线看| 国产欧美一区二区三区在线老狼 | 情侣黄网站免费看| 亚洲成人va| 日韩视频在线你懂得| youjizz.com国产| 精品香蕉视频| 欧美福利视频网站| 日本视频网站在线观看| 久久精品国产第一区二区三区| 成人性教育视频在线观看| 后入内射欧美99二区视频| 久久久精品中文字幕麻豆发布| 在线视频亚洲自拍| 九九色在线视频| 在线视频欧美精品| 中文字幕永久免费| 欧美日韩国产一区二区三区不卡 | 91精品国产欧美一区二区成人 | 亚洲男人天堂色| 精品国产鲁一鲁****| 亚洲欧美国产精品久久久久久久| 天天做夜夜爱爱爱| 模特精品在线| 成人资源av| 色大18成网站www在线观看| 五月天欧美精品| 伊人精品视频在线观看| 国产精品欧美三级在线观看| 久久99精品视频一区97| 免费的毛片视频| 国产99精品视频| 天堂av一区二区| 极品视频在线| 欧美电影免费观看完整版| 国产黄色录像视频| 新67194成人永久网站| 成人h视频在线观看| 日本蜜桃在线观看| 在线亚洲高清视频| 中文字幕在线免费看线人| 亚洲91久久| 国产高清视频一区三区| 欧洲成人一区二区三区| 日韩一区欧美小说| 九九热在线免费| 秋霞影院一区二区三区| 欧美激情视频播放| 国产欧美日韩综合精品一区二区三区| 国产欧美精品日韩区二区麻豆天美| 精品少妇人欧美激情在线观看| 成人黄色免费观看| 精品一区二区三区三区| 久久久久成人精品无码| 狠狠色丁香婷婷综合久久片| 日韩免费中文专区| 性欧美18一19sex性欧美| 亚洲黄色片网站| 久久婷婷综合国产| 国产乱码精品1区2区3区| 黄色免费高清视频| av在线日韩| 国产亚洲精品久久久久久777| 狠狠人妻久久久久久| 99r精品视频| 大陆极品少妇内射aaaaa| 国产精品对白久久久久粗| 色与欲影视天天看综合网| 国产富婆一级全黄大片| 亚洲猫色日本管| 少妇欧美激情一区二区三区| 自拍偷拍欧美| 成人欧美一区二区三区黑人免费| 成年人黄视频在线观看| 欧美一二三区在线| 免费在线看黄网址| 成人黄色大片在线观看| av在线播放天堂| 色哟哟精品丝袜一区二区| 日本成人精品在线| 电影av一区| 欧美久久一二区| 国产女人18水真多毛片18精品| 久久99精品国产91久久来源| 欧美少妇一区二区三区| 白嫩白嫩国产精品| 欧美一级片免费在线| www在线免费观看| 欧美蜜桃一区二区三区| 久久久久久av无码免费网站| 99精品视频在线免费观看| 国产精品97在线| 四季av一区二区三区免费观看| 成人国产精品日本在线| 爱情岛亚洲播放路线| 国产视频综合在线| 亚洲无码精品国产| 一区二区三区91| www.久久国产| 国产在线精品一区二区三区不卡| 欧美中日韩在线| 欧美极品中文字幕| 91久久嫩草影院一区二区| 51av在线| 这里只有精品视频在线| www.国产欧美| 色呦呦网站一区| 欧美日韩精品在线观看视频 | 99自拍偷拍视频| 国产凹凸在线观看一区二区 | 国产一区二区调教| 自慰无码一区二区三区| 99久久久久国产精品| 国产精品一区二区三区免费| 亚洲精品.com| 欧美日韩成人精品| 狠狠狠综合7777久夜色撩人| 日韩一区二区免费高清| 69视频免费看| 亚洲成人黄色影院| 来吧亚洲综合网| 久久久三级国产网站| 韩国三级在线看| 美国av一区二区| 18禁免费无码无遮挡不卡网站| 99精品视频在线观看免费播放 | 免费在线超碰| 日韩精品一区在线| 免费在线不卡av| 午夜精品在线视频一区| 来吧亚洲综合网| 国产调教视频一区| 好吊色视频一区二区三区| 精品一区二区三区影院在线午夜| 337p粉嫩大胆噜噜噜鲁| 亚洲欧美综合| 艳色歌舞团一区二区三区| 人人精品亚洲| 国产精品我不卡| 日韩一区二区三区色| 国产精品精品一区二区三区午夜版 | 久久这里有精品视频| 国产资源在线看| 日韩高清不卡av| 男人天堂网在线视频| 91精品国产一区二区三区| 中文字幕日产av| 色94色欧美sute亚洲13| 九九热精品视频在线| 午夜久久久影院| 国产91av视频| 香蕉加勒比综合久久| 久久久久久久久久久网| 亚洲欧美二区三区| 91麻豆免费视频网站| 亚洲人妖av一区二区| 在线看的片片片免费| 亚洲欧美怡红院| 男人在线观看视频| 国产精品麻豆网站| 亚洲AV成人无码网站天堂久久| 国产日韩精品视频一区| 人妻精品久久久久中文| 国产日韩欧美精品综合| 黑人巨大精品欧美| 久久综合99re88久久爱| 三级网站在线免费观看| 久久亚洲一区二区三区明星换脸 | 懂色av蜜臀av粉嫩av分享吧| 日韩精品一区在线观看| 女人18毛片一区二区三区| 亚洲高清av在线| 欧美日韩在线精品一区二区三区激情综| 日韩高清欧美高清| 国产片在线观看| 色悠悠国产精品| 国产福利在线播放麻豆| 欧美人与物videos| 爱搞国产精品| 国产精品成人播放| 国产精品99| 亚洲一区久久久| 风间由美一区二区av101| 成人av免费在线看| 色婷婷久久久| 亚洲国产一区在线| 自拍偷拍欧美| 国产在线精品91| 男人操女人的视频在线观看欧美| 97超碰成人在线| 盗摄精品av一区二区三区| 男女一区二区三区| 欧美激情资源网| 一区二区视频免费看| 亚洲va天堂va国产va久| 亚洲国产av一区二区三区| 欧美色大人视频| 亚洲精品字幕在线观看| 亚洲欧美日韩在线一区| 91啦中文在线| 久久噜噜噜精品国产亚洲综合| 欧美1级2级| 91免费视频国产| 天堂一区二区三区四区| 亚洲一区影院| 国产精品日本欧美一区二区三区| 我看黄色一级片| 成人免费观看视频| 最新中文字幕av| 亚洲图片欧美色图| 中文字幕在线观看精品| 欧美成人vr18sexvr| 可以免费看污视频的网站在线| 久久精品国产清自在天天线| 久草在线资源福利站| 91精品国产自产在线| 欧美一级三级| 影音先锋成人资源网站| 视频一区欧美精品| 精品国产乱码久久久久夜深人妻| 国产日产欧美一区二区三区| 久久免费视频播放| 欧美三区在线观看| 五月婷婷伊人网| 欧美插天视频在线播放| 亚洲精品国产嫩草在线观看| 国产一区喷水| 午夜视频一区| 美女在线视频一区二区| 91色视频在线| 国产精品1000| 日韩午夜激情av| 欧美另类极品| 国产精品99久久久久久久久久久久| 成人另类视频| 国内自拍中文字幕| 久久国产综合精品| 日本一级免费视频| 午夜精品免费在线观看| 朝桐光av在线一区二区三区| 日韩视频欧美视频| h1515四虎成人| 欧美日韩国产不卡在线看| 亚洲精品九九| 挪威xxxx性hd极品| 一区二区三区日韩欧美精品| 国产日韩一级片| 色妞一区二区三区| www.久久.com| 清纯唯美一区二区三区| 亚洲在线国产日韩欧美| 狠狠人妻久久久久久综合蜜桃| 亚洲资源中文字幕| 亚洲国产精品久久久久久6q| 久久99精品久久久久久琪琪| 欧美久久一区二区三区| 黄色一级片网址| 国产资源精品在线观看| 午夜剧场免费在线观看| 欧美美女bb生活片| 日本三级视频在线播放| 成人福利免费观看| 国产精品国内免费一区二区三区| 国产视频手机在线播放| 中文乱码免费一区二区| 亚洲在线精品视频| 日韩中文在线不卡| 亚洲成a人片777777久久| 亚洲一区三区视频在线观看| 精品一区二区三区久久久| 国产三级精品三级观看| 欧美精品在线一区二区三区| 好吊日视频在线观看| 1卡2卡3卡精品视频| 国产精品啊啊啊| 蜜臀av粉嫩av懂色av| 午夜精品在线看| 国产在线高清| 成人午夜在线观看| 欧美日韩国产色综合一二三四| 秘密基地免费观看完整版中文| 五月天欧美精品| 成人免费在线观看| 成人h片在线播放免费网站| 欧美在线网站| 久久午夜夜伦鲁鲁片| 在线观看免费成人| 黄色免费在线观看网站| 国产精品久久久久久免费观看| 国产日韩欧美一区在线| 免费黄色片网站| 91精品国产免费| 国产资源在线观看入口av| 涩涩涩999| 国产成人亚洲综合a∨猫咪| 亚洲免费在线视频观看| www.欧美免费| 红杏视频成人| 欧美一级特黄a| 亚洲国产一区二区a毛片| 搞黄视频在线观看| 亚洲最大av网站| 久久裸体视频| 真实国产乱子伦对白在线| 亚洲美女在线看| 精品国产三区在线| 国产乱子夫妻xx黑人xyx真爽 | 一区二区三区国产福利| 成人免费毛片高清视频| 最近中文字幕免费在线观看| 欧美区二区三区| 欧美日韩一二三四| 亚洲最大视频网| 欧美视频日韩视频| 99在线视频影院| 中文字幕一区二区三区四区五区六区| 大陆成人av片| 一区二区三区黄| 国产不卡精品视男人的天堂|