精品欧美一区二区三区在线观看 _久久久久国色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)

国产尤物久久久| 中文在线免费二区三区| 国产精品一二二区| 国模精品视频一区二区| 亚洲精品成人无码| 99国内精品久久久久| 一区二区在线观看av| 久久99精品久久久久久水蜜桃| 波多野结衣大片| 一区二区在线| 国产婷婷97碰碰久久人人蜜臀| 五月天激情播播| 美女高潮视频在线看| 国产色综合久久| 99re视频在线| 日本欧美www| 亚洲激情综合| 久久精品免费电影| 91视频在线网站| ccyy激情综合| 欧美日韩精品一区二区三区蜜桃| 久久这里只有精品23| 午夜小视频在线| 93久久精品日日躁夜夜躁欧美| 成人综合网网址| 一本一道无码中文字幕精品热| 亚洲精品888| 亚洲一级一级97网| 老熟妇精品一区二区三区| 日韩毛片免费视频一级特黄| 欧美日韩人人澡狠狠躁视频| 五月天激情图片| 欧美日本一道| 国产欧美日韩卡一| 免费久久久一本精品久久区| 亚洲乱码国产乱码精品精软件| 老鸭窝一区二区久久精品| 4388成人网| 精品成人免费视频| 午夜精品国产| 美女少妇精品视频| 自拍偷拍第9页| av永久不卡| 精品视频在线播放色网色视频| 日本道中文字幕| 亚洲精品aⅴ| 91精品啪在线观看国产60岁| 国产精品久久久毛片| 日韩高清中文字幕一区二区| 欧美午夜激情视频| 无码人妻丰满熟妇区96| 都市激情久久综合| 香蕉久久一区二区不卡无毒影院| 老司机午夜网站| 国产一二区在线| 国产精品大尺度| 亚洲一区精彩视频| 日本高清在线观看wwwww色| 国产欧美一区二区三区鸳鸯浴| 日韩美女一区| 永久免费av在线| 亚洲视频在线观看三级| 久久视频免费在线| 性欧美高清come| 亚洲一区二区3| aa视频在线播放| 日韩伦理精品| 欧美在线短视频| 亚洲va在线va天堂va偷拍| 日本成人在线网站| 欧美一区二区三区视频免费播放| 初高中福利视频网站| 51vv免费精品视频一区二区| 亚洲精品一区二区三区精华液| 日本五十肥熟交尾| 亚洲婷婷伊人| 色婷婷综合成人av| 久久久久久久久久一区二区三区| 亚洲精品美女91| 国产97色在线|日韩| 一区二区日韩在线观看| 国产福利一区二区三区视频| 精品高清视频| 国产鲁鲁视频在线观看免费| 国产精品高潮呻吟久久| 17c丨国产丨精品视频| 成人在线黄色电影| 欧美网站一区二区| 青娱乐国产精品视频| 国产精品巨作av| 亚洲无亚洲人成网站77777| 亚洲女人久久久| 亚洲人成免费| 国产精品自在线| 人妻无码中文字幕| 国产精品美女久久久久av爽李琼 | 污污的视频网站在线观看| 91网站在线观看视频| 日韩免费三级| free性欧美| 欧洲精品在线观看| 午夜福利三级理论电影| 欧美综合一区| 97久久精品人人澡人人爽缅北| 在线中文字幕网站| 成人动漫视频在线| 亚洲视频在线二区| 亚洲黄色免费av| 日韩欧美一级二级| a资源在线观看| 国产视频欧美| 粉嫩av免费一区二区三区| 国产小视频免费在线网址| 樱花影视一区二区| 在线观看的毛片| 天堂成人娱乐在线视频免费播放网站 | 国产精品海角社区在线观看| 高h调教冰块play男男双性文| 日本一区二区三区久久久久久久久不 | 国产专区在线| 亚洲狠狠爱一区二区三区| 亚洲天堂网一区| 欧美一区二区三区红桃小说| 久久国产精品99国产精| 中国女人真人一级毛片| 91丨porny丨首页| 国产精品自拍合集| 在线不卡一区| 深夜福利亚洲导航| 无码人妻丰满熟妇奶水区码| 成人av在线资源| 五月天激情图片| 国产精品美女久久久久| 中文字幕精品av| 中文字幕 国产精品| 久久一日本道色综合| 成人免费播放器| 136导航精品福利| 欧美韩日一区二区| 国产成人精品一区二区无码呦| 中文字幕欧美日韩一区| 国产成人久久777777| 亚洲影院天堂中文av色| 国产91成人video| 香蕉视频国产在线| 五月综合激情网| 亚洲色图欧美另类| 亚洲人www| 久久久久久久久一区| 看黄在线观看| 亚洲欧美三级伦理| 亚洲高清在线看| 中文字幕乱码一区二区免费| 日本人视频jizz页码69| 日韩88av| 91最新国产视频| 色呦呦在线观看视频| 欧美一区二区国产| 免费在线观看黄色av| 成人听书哪个软件好| 国产深夜男女无套内射| 妖精一区二区三区精品视频| 欧美中文字幕第一页| 黄色av免费在线看| 欧美日韩一区二区三区高清| 黄色录像免费观看| 国产九色精品成人porny| 台湾无码一区二区| 欧美做受69| 国产精品电影在线观看| 午夜在线视频播放| 日韩亚洲欧美一区二区三区| 日韩av在线电影| 国产无人区一区二区三区| 亚洲欧美日韩综合网| 在线中文字幕第一区| 国产高清在线精品一区二区三区| 日本在线高清| 中文字幕免费精品一区高清| a天堂在线观看视频| 亚洲成a人v欧美综合天堂下载 | 日本一区二区三区国色天香 | a级日韩大片| 欧美一级大片在线观看| 国产系列电影在线播放网址| 欧美一区二区三区在线观看| 日本一区二区欧美| 国产免费观看久久| 亚洲性图第一页| 美女久久一区| 日韩最新中文字幕| 丝袜美腿综合| 成人免费直播live| 中文字幕人成乱码在线观看| 久久精品国产亚洲精品2020| 天堂成人在线观看| 欧美伦理视频网站| 欧美a∨亚洲欧美亚洲| 国产精品国产三级国产普通话蜜臀| 亚洲少妇中文字幕| 日韩精品一二三区| 欧美高清中文字幕| 不卡一区2区| 国产一区二区三区奇米久涩| 精品视频在线一区二区在线| 久久999免费视频| 波多野结衣在线影院| 精品久久久久久久久久久久包黑料| 黄色片视频免费| 亚洲成人av资源| 人人澡人人澡人人看| 久久夜色精品国产欧美乱极品| 香蕉视频xxx| 免费欧美在线视频| 亚洲中文字幕无码中文字| 亚洲精品网址| 中国人体摄影一区二区三区| 亚洲图片久久| 好吊色欧美一区二区三区| 亚洲精品无播放器在线播放| 欧美在线视频免费观看| 久久av色综合| 久热99视频在线观看| 成人欧美亚洲| 国产丝袜一区二区三区| 亚洲va久久久噜噜噜无码久久| 欧美日韩国产免费| 亚洲图片欧美日韩| 狠狠躁夜夜躁人人爽天天天天97| 欧美激情国产精品免费| 中文字幕日韩一区| 女人黄色一级片| 国产亚洲美州欧州综合国| 97人妻天天摸天天爽天天| 成人黄色综合网站| www.四虎精品| 成人性视频免费网站| 一区二区三区人妻| 国模无码大尺度一区二区三区 | 风间由美性色一区二区三区| 五月天丁香花婷婷| 美女免费视频一区| 少妇一级淫免费放| 美国一区二区三区在线播放 | 午夜精品久久久久久久久久久久久蜜桃| 亚洲精品国产一区二区精华液| 色哟哟一一国产精品| 中文字幕一区在线| 顶级黑人搡bbw搡bbbb搡| 国产精品欧美极品| 午夜国产福利视频| 亚洲乱码日产精品bd| 欧美黑人猛猛猛| 亚洲综合区在线| 国产精品第一页在线观看| 亚洲午夜影视影院在线观看| 国产精品16p| 欧美日韩午夜视频在线观看| 欧美一级特黄视频| 色网综合在线观看| 中文有码在线播放| 91精品国产一区二区| av在线亚洲天堂| 亚洲成人在线网| 天堂a中文在线| 国产午夜精品视频| 日本中文字幕在线观看| 久久不射电影网| heyzo在线| 国产成人在线一区| 欧美97人人模人人爽人人喊视频| 成人女保姆的销魂服务| 视频精品一区二区三区| 国产一区在线免费| 精品久久久久久久久久久下田| 亚洲高清不卡一区| 欧美精品日韩| a√天堂在线观看| 全国精品久久少妇| 97免费公开视频| 91首页免费视频| sm捆绑调教视频| 午夜精品久久一牛影视| 亚洲性猛交富婆| 欧美v日韩v国产v| 久蕉依人在线视频| 久久精品国产亚洲精品| 国产99在线观看| 国产精品亚洲自拍| 高清日韩欧美| 亚洲成人自拍| 在线成人h网| 色婷婷综合网站| 成人高清视频免费观看| 污污视频网站在线免费观看| 午夜影视日本亚洲欧洲精品| 亚洲一区二区三区高清视频| 亚洲激情第一页| 精品51国产黑色丝袜高跟鞋| 欧美一级淫片aaaaaaa视频| 亚洲青青久久| 欧美大香线蕉线伊人久久| 91精品国产成人观看| 国产日韩一区二区在线观看| 国产精品一区在线观看你懂的| 91成年人网站| 婷婷夜色潮精品综合在线| 国产老女人乱淫免费| 日韩av在线直播| bestiality新另类大全| 日韩av片永久免费网站| 亚洲综合色婷婷在线观看| 丝袜美腿玉足3d专区一区| 亚洲日本欧美| 91丨porny丨九色| 国产精品午夜免费| 国产99久久久| 亚洲白虎美女被爆操| av小次郎在线| 91精品美女在线| 精品国产一区二区三区小蝌蚪| 农民人伦一区二区三区| 国产精品1区二区.| 久久视频一区二区三区| 日本道在线观看一区二区| 天堂中文在线看| 久久久久久97| 97精品久久| www.一区二区.com| 国产美女精品一区二区三区| 国产真人真事毛片视频| 在线观看日韩av先锋影音电影院| 四虎影院在线播放| 8090成年在线看片午夜| 精品国产导航| 日韩精品手机在线观看| 国产在线精品一区二区| 成人信息集中地| 欧美精品高清视频| 麻豆网站视频在线观看| 国产精品一区二区久久久久| 成人看的视频| 国产高潮免费视频| 欧美激情在线一区二区| 懂色av蜜臀av粉嫩av喷吹| 亚洲人成网站999久久久综合| 性欧美超级视频| 日韩中文字幕一区二区| 蜜臂av日日欢夜夜爽一区| 免费一级黄色录像| 欧美午夜精品久久久| av网站在线免费观看| 91精品久久久久久久久| 亚洲a在线视频| 中文字幕av一区二区三区人妻少妇 | 久久精品综合一区| 久久动漫亚洲| 国产真人做爰视频免费| 欧美三级日韩在线| 毛片在线播放a| 91在线精品观看| 99精品视频免费观看视频| 欧美做受高潮6| 欧美揉bbbbb揉bbbbb| av在线看片| 九色视频成人porny| 欧美专区18| 国产白丝一区二区三区| 91精品国产欧美一区二区18| 欧美1234区| 欧美一区二区三区四区夜夜大片| 免费观看在线综合色| 成人在线观看免费完整| 精品成人在线观看| 欧美xoxoxo| www亚洲国产| av资源网一区| 一区二区视频免费观看| 久久99久久久久久久噜噜| 五月天亚洲一区| 日本在线播放一区二区| 亚洲国产一区二区三区| 每日更新在线观看av| 成人精品视频久久久久| 亚洲精品系列| 女同久久另类69精品国产| 亚洲第一色中文字幕| 最新日韩一区| 国产中文字幕乱人伦在线观看| 久久蜜桃av一区二区天堂 | 中文字幕一区二区三区最新| 国产白丝精品91爽爽久久| 国产成人自拍偷拍| 欧美黑人狂野猛交老妇| 精品毛片免费观看| 色哟哟网站在线观看| 欧美视频中文字幕| 国产精品探花在线| 亚洲欧美日韩精品在线| av影院午夜一区|