久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

基于MySQL和Redis扣減庫(kù)存的實(shí)踐

瀏覽:241日期:2023-05-08 10:17:44
目錄
  • 背景
  • 環(huán)境搭建
    • 后臺(tái)系統(tǒng)
    • 中間件
    • 測(cè)試工具
  • 扣減模式
    • 基于數(shù)據(jù)庫(kù)行鎖 + CAS 實(shí)現(xiàn)庫(kù)存的扣減
    • 基于 Redis 實(shí)現(xiàn)庫(kù)存的扣減
  • 總結(jié)

    背景

    在很多情況下,扣減庫(kù)存是一個(gè)十分常見(jiàn)的需求,例如:學(xué)生選課系統(tǒng)中課程數(shù)量的扣減,抽獎(jiǎng)系統(tǒng)中活動(dòng)次數(shù)的扣減,電商系統(tǒng)中商品庫(kù)存的扣減等,都涉及到數(shù)量的扣減,這些系統(tǒng)在成功扣減的前提下,絕對(duì)不能出現(xiàn)庫(kù)存扣減多了的情況,也就是不能出現(xiàn)超賣。同時(shí),我們也要注重系統(tǒng)性能的提升,這篇文章從這兩個(gè)角度進(jìn)行分析和討論。

    環(huán)境搭建

    后臺(tái)系統(tǒng)

    基于 SpringBoot 搭建后臺(tái)系統(tǒng),JDK 為 1.8

    <properties>    <java.version>1.8</java.version>    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>    <spring-boot.version>2.3.12.RELEASE</spring-boot.version></properties><dependencies>    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>    </dependency>    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>    </dependency>    <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId>    </dependency>    <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional>    </dependency>    <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.2</version>    </dependency></dependencies>

    中間件

    中間件使用 MySQL + Redis 進(jìn)行數(shù)據(jù)的存儲(chǔ),使用 Mybatis 作為 ORM 框架

    create database t_desc collate utf8mb4_general_ci;use t_desc;create table t_good (    id bigint auto_increment primary key comment "自增id",    good_name varchar(255) not null comment "商品名稱",    stock int not null comment "商品庫(kù)存") comment "庫(kù)存測(cè)試表";insert into t_good(good_name, stock)  value("iphone", 50);

    創(chuàng)建一張商品庫(kù)存表,里面含有商品 id、商品名稱 和庫(kù)存 3 個(gè)字段,所有扣減庫(kù)存的操作都在這張表上進(jìn)行;

    測(cè)試工具

    使用 JMeter 5.5 進(jìn)行測(cè)試

    以下的庫(kù)存數(shù)量統(tǒng)一設(shè)置為 50 個(gè),線程組的數(shù)量為 10 個(gè),循環(huán) 10 次,共 100 個(gè)扣減請(qǐng)求,最終正確的結(jié)果應(yīng)該是扣減完畢后庫(kù)存的數(shù)量應(yīng)該為 0, 而不是 -50

    扣減模式

    基于數(shù)據(jù)庫(kù)行鎖 + CAS 實(shí)現(xiàn)庫(kù)存的扣減

    行鎖

    若直接直接在數(shù)據(jù)庫(kù)層面進(jìn)行庫(kù)存的直接扣減,100 個(gè)線程同時(shí)進(jìn)行請(qǐng)求,肯定會(huì)造成庫(kù)存的超賣

    SQL 語(yǔ)句為

    <update id="descGoodStock">  update t_desc.t_good  set t_good.stock = t_good.stock - 1  where id = #{id}</update>

    考慮到 update 語(yǔ)句,若根據(jù)主鍵索引作為條件進(jìn)行更新,會(huì)對(duì)數(shù)據(jù)庫(kù)的某一行加上行鎖(數(shù)據(jù)庫(kù)開(kāi)啟事務(wù)自動(dòng)提交),所以我們加上 stock > 0 的判斷條件

    <update id="descGoodStockByLock">update t_desc.t_goodset t_good.stock = t_good.stock - 1where id = #{id}  and t_good.stock > 0</update>

    開(kāi)啟 JMeter 進(jìn)行測(cè)試,可見(jiàn)沒(méi)有超賣

    CAS

    CAS 即 Compare and Set,先把舊的庫(kù)存查出來(lái),再把舊的庫(kù)存作為 update 的條件之一,若數(shù)據(jù)庫(kù)中的庫(kù)存與舊的庫(kù)存一致,則進(jìn)行更新,否則不進(jìn)行更新。

    其實(shí)本質(zhì)上與行鎖的方式?jīng)]什么區(qū)別,而且多了一次查詢,寫這個(gè)方法只是為了記錄而已

    若有兩個(gè)以上的線程先查詢到了商品的舊庫(kù)存,這種方法可能會(huì)出現(xiàn)扣不完的情況

    Java 代碼:

    @PostMapping("/db")public Map<String, Object> goodDescControllerByDataBase(Long id) {    HashMap<String, Object> ret = new HashMap<>();    // 查出舊的值    Good good = goodMapper.selectStockById(id);    // 再進(jìn)行更新    int i = goodMapper.descGoodStockCAS(id, good.getStock());    if (i > 1) {ret.put("info", "success, 扣減成功");    } else {ret.put("info", "fail, 扣減失敗");    }    return ret;}

    SQL 語(yǔ)句

    <update id="descGoodStockCAS">update t_desc.t_goodset t_good.stock = t_good.stock - 1where id = #{id}  and t_good.stock = #{stock}  and t_good.stock > 0    </update>

    測(cè)試結(jié)果:

    綜上,基于數(shù)據(jù)庫(kù)的兩種扣減庫(kù)存的方式都沒(méi)有實(shí)現(xiàn)超賣,但是畢竟是數(shù)據(jù)庫(kù),數(shù)據(jù)存儲(chǔ)于物理磁盤中,性能方面就有待考量;

    基于 Redis 實(shí)現(xiàn)庫(kù)存的扣減

    基本思想是:我們把庫(kù)存的數(shù)量提前放到 Redis 上,直接在 Redis 進(jìn)行庫(kù)存的扣減

    • 先查詢 redis 中的庫(kù)存
    • 若小于 0 直接返回
    • 若大于 0 則進(jìn)行 Redis 和 數(shù)據(jù)庫(kù) 中的庫(kù)存扣減

    不過(guò)這里存在 并發(fā) 問(wèn)題,考慮極限情況,兩個(gè)線程同時(shí)獲得 stock = 1,然后再去進(jìn)行庫(kù)存扣減,勢(shì)必會(huì)造成超賣的現(xiàn)象

    下面給出兩種解決辦法

    使用 decrement 方法

    redisTemplate.opsForValue().decrement():對(duì)某個(gè) key 進(jìn)行減 1 操作,會(huì)返回扣減后的值

    若該值大于等于 0 才進(jìn)行數(shù)據(jù)庫(kù)的庫(kù)存的扣減,否則直接返回庫(kù)存不足的提示

    這種方法是基于 Redis 的指令是原子性的

    Java 代碼:

     @PostMapping("/redis")    public Map<String, Object> goodDescControllerByRedis(Long id) throws InterruptedException {HashMap<String, Object> ret = new HashMap<>();ret.put("info", "fail, 扣減失敗");// 查詢 Redis 中的庫(kù)存Integer stock = (Integer) redisTemplate.opsForValue().get(key + id);Thread.sleep(100);if (stock <= 0) {    return ret;}// 扣減 redis 中庫(kù)存Long decrement = redisTemplate.opsForValue().decrement(key + id);if (decrement >= 0) {    // 扣減數(shù)據(jù)庫(kù)庫(kù)存    goodMapper.descGoodStock(id);    ret.put("info", "success, 扣減成功");}return ret;    }

    其實(shí) decrement 方法是原子性的,可以不用對(duì)庫(kù)存先進(jìn)行查詢的操作,只需要判斷扣減后的數(shù)是否大于 0 即可。但是如果并發(fā)量高的話,建議還是加上判斷的邏輯,可以提高 Redis 的性能,不用每次進(jìn)行 decrement 操作;

    缺點(diǎn):這種辦法會(huì)導(dǎo)致 Redis 中庫(kù)存產(chǎn)生超賣現(xiàn)象,若對(duì) Redis 中庫(kù)存數(shù)量要求準(zhǔn)確,就不要使用這種方法;

    測(cè)試結(jié)果:

    Redis 中的庫(kù)存產(chǎn)生超賣現(xiàn)象:

    MySQL 中的庫(kù)存沒(méi)有超賣:

    使用 LUA 腳本

    上述問(wèn)題的關(guān)鍵是:查詢 和 扣減 是兩個(gè)分開(kāi)操作,不是一條原子性的命令。我們可以使用 LUA 腳本,把這兩條命令封裝到 LUA 代碼中,實(shí)現(xiàn)這兩個(gè)操作的原子性

    LUA 代碼

    ------ Generated by EmmyLua(https://github.com/EmmyLua)--- Created by Ezreal.--- DateTime: 2023/5/6 21:56---if (redis.call("exists", KEYS[1]) == 1) then    local stock = tonumber(redis.call("get", KEYS[1]));    if (stock <= 0) thenreturn -1;    end    if (stock > 0) thenredis.call("incrby", KEYS[1], -1);return 1;    endendreturn -1

    先獲取值,然后判斷庫(kù)存數(shù)量,若沒(méi)有小于等于 0 就先進(jìn)行扣減即可

    Java 代碼

    private static final DefaultRedisScript<Long> DECREASE_GOOD_STOCK_SCRIPT = new DefaultRedisScript<>();static {    DECREASE_GOOD_STOCK_SCRIPT.setLocation(new ClassPathResource("/lua/desc_stock.lua"));    // 設(shè)置返回值類型    DECREASE_GOOD_STOCK_SCRIPT.setResultType(Long.class);}@PostMapping("/lua")public Map<String, Object> goodDescControllerByLUA(Long id) {    List<String> keys = new ArrayList<>();    keys.add("stock:" + id);    HashMap<String, Object> ret = new HashMap<>();    ret.put("info", "fail, 扣減失敗");    Long execute = redisTemplate.execute(DECREASE_GOOD_STOCK_SCRIPT, keys);    if (execute == 1) {goodMapper.descGoodStock(id);ret.put("info", "success, 扣減成功");    }    return ret;}

    結(jié)果:Redis 和 MySQL 中的庫(kù)存均為 0 ,沒(méi)有超賣

    使用分布式鎖

    可以使用 redisson 分布式鎖進(jìn)行扣減庫(kù)存處理,鎖住查詢和扣減兩個(gè)步驟即可;

    若是在分布式環(huán)境下,要考慮 分布式鎖 與 LUA 腳本的結(jié)合!

    java 代碼

    @PostMapping("/lock")public Map<String, Object> goodDescControllerByLock(Long id) throws InterruptedException {    HashMap<String, Object> ret = new HashMap<>();    ret.put("info", "fail, 扣減失敗");    // 加鎖    RLock lock = redissonClient.getLock("stock" + id);    boolean tryLock = lock.tryLock(2L, 1L, TimeUnit.SECONDS);    if (tryLock) {Integer stock = (Integer) redisTemplate.opsForValue().get(key + id);if (stock <= 0) {    return ret;}Long decrement = redisTemplate.opsForValue().decrement(key + id);if (decrement >= 0) {    goodMapper.descGoodStock(id);    ret.put("info", "success, 扣減成功");}    }    return ret;}

    測(cè)試結(jié)果

    Redis 中庫(kù)存數(shù)量沒(méi)有超賣

    MySQL 中庫(kù)存數(shù)量沒(méi)有超賣

    總結(jié)

    如果在項(xiàng)目初期流量較少可以考慮基于 數(shù)據(jù)庫(kù)行鎖 進(jìn)行庫(kù)存的扣減,到了后期流量大,幾乎都要用到 Redis:

    • decrement:追求簡(jiǎn)單快速實(shí)現(xiàn),不考慮 Redis 庫(kù)存中的準(zhǔn)確性;
    • LUA 腳本:追求 Redis 中庫(kù)存的準(zhǔn)確性,在 Redis 層面上要進(jìn)行多重的條件判斷
    • Lock:追求 Redis 中庫(kù)存的準(zhǔn)確性,在分布式環(huán)境中要考慮 LUA + Lock 的結(jié)合

    到此這篇關(guān)于基于MySQL和Redis扣減庫(kù)存的實(shí)踐的文章就介紹到這了,更多相關(guān)MySQL和Redis扣減庫(kù)存內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

    標(biāo)簽: MySQL
    主站蜘蛛池模板: 国产成人精品亚洲777人妖 | 久久亚洲一区 | 欧美顶级毛片在线播放 | 国产精品777一区二区 | 亚洲欧美视频 | 国产精品99久久久久久宅男 | 伊人一区 | 欧美 日韩 国产 一区 | 国产成人精品免费视频大全最热 | 国产精品18久久久久久久久久久久 | 小草av| 久草视频在线首页 | 6080夜射猫| 亚洲午夜精品一区二区三区他趣 | 一区二区三区在线观看免费 | 欧洲毛片 | 日韩av手机在线免费观看 | 中文字幕亚洲一区 | 国产精品毛片一区二区三区 | 国产精品国产精品国产 | 欧美日韩精品一区 | 国产高清精品在线 | 亚洲成年人影院 | 亚洲美女网址 | 国产拍拍视频 | 成人在线免费av | 国产午夜精品福利 | 成人高清视频在线观看 | 国产香蕉视频在线播放 | 国产免费一区二区三区四区五区 | 亚洲女人天堂成人av在线 | 少妇精品久久久久久久久久 | 中文字幕一区二区三 | 日韩成人在线播放 | 日韩精品一区二区三区老鸭窝 | 色免费视频 | 国产高清视频在线 | 欧美一级艳情片免费观看 | 韩国精品一区二区 | 99久久久国产精品美女 | 国产精品一区在线看 | 国产精品欧美久久久久一区二区 | 999国产在线视频 | 亚洲成人精品在线观看 | 国产精品久久久久久久久久大牛 | 日日操天天操 | 免费网站看v片在线a | 精品国产伦一区二区三区观看说明 | 亚洲无吗天堂 | 91福利视频导航 | 男女精品视频 | 91色爱 | 超碰天堂| 91视频免费看 | 91一区| 亚洲精品专区 | 日韩综合网 | www精品美女久久久tv | 亚洲欧美aa | 丁香六月av | 国产中文一区二区三区 | 成人久久久久久久 | 最新av中文字幕 | 欧美视频在线播放 | 中文字幕久久综合 | 中文字幕亚洲精品 | 欧美男人的天堂 | 9l蝌蚪porny中文自拍 | 在线视频这里只有精品 | 日韩99| 中文字幕在线观看的电影 | 久久久精品国产 | 我要看一级黄色 | 国产精品一任线免费观看 | 久久av一区二区三区 | 国产精品爱久久久久久久 | 国产亚洲一区二区精品 | 亚洲黄色免费观看 | 日本精品一区二区在线观看 | 在线激情av | 中文字幕一区二区三区四区不卡 | 日韩一区二区三区在线观看 | 男人天堂999| 欧美日韩国产在线观看 | 不卡一区二区三区视频 | 亚洲精品一二三区 | 亚洲国产精品久久人人爱 | 国产在线精品一区二区三区 | 欧美日韩视频在线观看一区 | 久久伊人亚洲 | 久草福利在线视频 | 国产成人99久久亚洲综合精品 | 欧美视频在线免费 | 亚洲精品乱码久久久久久按摩观 | 日韩在线视频观看 | 日韩特级 | 日操干| 六月丁香在线观看 | 国产a级大片 | 中文在线a在线 | 亚洲一区二区三区日韩 | jizz中国日本 | 成人情趣视频 | 成人国产在线 | 精品国产91亚洲一区二区三区www | 天天操天天添 | 欧美午夜寂寞影院 | 久久综合久 | 亚州成人| 久久久久久久 | 不卡一区二区三区四区 | 97影院在线午夜 | 伊人久麻豆社区 | 韩日精品在线观看 | 色伊人 | 日韩精品在线视频 | 亚洲国产成人在线观看 | 国产精品久久久久aaaa九色 | 日韩视频一二 | a黄视频| 亚洲 欧美 自拍偷拍 | 视频一区在线观看 | 天天操夜夜操免费视频 | 欧美一级片在线 | 人人射人人舔 | 日韩三级在线 | 欧美精品亚洲 | 精品视频久久久 | 黄色毛片在线看 | 亚洲第一免费网站 | 欧美精品在欧美一区二区少妇 | 国产999精品久久久影片官网 | 精一区二区 | 国产成人亚洲精品 | 成人精品电影 | 午夜精品久久久久久久久久久久久 | 亚洲免费视频大全 | 午夜在线视频 | 成人精品一区二区三区 | 一区二区三区在线免费观看 | 亚洲一区不卡在线 | 欧美精品1区| 日韩高清一区二区 | 九九热这里只有精 | avmans最新导航地址 | 欧美福利视频 | 青青草综合在线 | 国产精品天堂 | 国产在线精品一区二区三区 | 成人亚州 | 亚洲狠狠爱| 热久久免费视频 | 9久9久| 污视频免费网站观看 | 成人在线精品视频 | 一级大片av | 综合婷婷| 国产精品视频不卡 | 亚洲精品一区中文字幕乱码 | 日韩视频在线免费观看 | a视频在线免费观看 | 久久视频免费 | 成人精品一区二区三区中文字幕 | 亚洲自拍在线观看 | 九九在线视频 | 欧美日韩中文 | 国产精品久久久久久久久久 | 亚洲成人精品在线观看 | 操操操操操操 | 33eee在线视频免费观看 | 精品国产精品三级精品av网址 | 国产日韩精品一区二区 | 欧美a在线看 | 亚洲日韩中文字幕 | 免费成人在线观看 | 午夜久久 | 在线观看国产www | 久久免费小视频 | 综合久久网 | 欧美日韩中文 | 国产高清在线精品一区二区三区 | 亚洲精品国产精品国自产 | 搞黄免费视频 | 欧美日韩中文 | 亚洲91在线 | 国产91在线观看 | 国产精品一区二区三区四区 | 香蕉久久一区二区不卡无毒影院 | 黄色福利 | 免费一级在线观看 | 黄网在线免费观看 | 午夜精品久久久久 | 国产高清在线精品 | 日韩电影在线一区 | 欧美第8页 | 精品久久久久久久久久久久久久久久久久 | 91日韩欧美 | 国产99久久精品一区二区永久免费 | 国产成人精品一区二区三区视频 | 日韩精品一区二区三区 | 日韩视频一区二区三区 | 成人影院www在线观看 | 午夜天堂精品久久久久 | 天天干天天操 | 国产黄色大片 | 伊人网视频在线观看 | 精品国产乱码久久久久久1区2区 | 亚洲高清视频在线 | 日韩精品无码一区二区三区 | 91精品一区二区三区久久久久久 | 国产视频久久久久久久 | 97国产资源 | 免费av播放 | aa毛片| 影视一区| 亚洲综合成人网 | 精品一区二区三区免费毛片爱 | 午夜久久网站 | 久久精品123| 五月婷婷天 | 三区在线视频 | 日韩中文字幕在线视频 | av免费网站在线观看 | 国产精品成人一区二区三区夜夜夜 | 日韩精品在线网站 | 91精品福利 | 亚洲国产高清在线 | 超碰c | 国产精品毛片一区二区在线看 | 欧美一区二区三区免费在线观看 | 精品国产三级 | 亚洲 国产 另类 精品 专区 | 久久久久亚洲精品 | 免费观看一级特黄欧美大片 | 亚洲欧美日韩另类一区二区 | 毛片区| 国产精品成人一区二区三区 | 国产精品国产三级国产aⅴ无密码 | av基地网| 国产精品一区二区在线 | www中文字幕 | 人人草在线观看视频 | 日韩欧美不卡 | 国产精品久久久久久亚洲调教 | 欧美精品第一页 | 日韩欧美一区二区视频 | 狠狠撸在线 | 国产精品视频免费 | 国产一区二区三区免费视频 | 中文一区| 欧美一级高潮片免费的 | 亚洲视频免费网站 | 天天操网| 国产午夜精品久久久久久久 | 日韩欧美视频在线 | 操操操操操操操 | 成人午夜电影在线 | 视频一区二 | 在线a电影| 性视频网站免费 | 网址av| 久久精品一区二区三区四区毛片 | 国产精品美女久久久久久免费 | 欧美日韩综合精品 | 国产精品视频免费 | 青青草视频免费观看 | 国产一区二区三区久久久久久久久 | 亚洲一区二区三区四区 | 伊人精品视频在线观看 | 国产一区二区三区视频在线观看 | 浴室洗澡偷拍一区二区 | 国产精品99久久免费观看 | 三区影院 | 在线中文字幕av | 日韩精品一区二区三区中文字幕 | 麻豆自拍偷拍 | 亚洲一区精品视频 | 九九99热 | 国产二区视频 | 久久免费视频观看 | 伊人影院在线观看 | 国产精品成人3p一区二区三区 | 免费看黄视频网站 | 午夜久久 | 日韩精品一区二区三区中文字幕 | 日本中文字幕一区 | 成人国产精品一级毛片视频 | 亚洲久久久 | 日韩av免费看 | 精品国产不卡一区二区三区 | 日韩一区二区视频 | 成人在线视频网站 | 97在线免费观看 | 欧美成人精品一区二区三区 | 亚洲三区视频 | 国产成人在线电影 | 午夜不卡一区二区 | 精品国产91乱码一区二区三区 | 日韩精品一区二区三区在线观看 | 91视频网| 久久国产精品免费一区二区三区 | 人人九九精 | 久久视频在线看 | 成人激情视频在线免费观看 | av色伊人久久综合一区二区 | 亚洲性视屏 | 日韩欧美一区二区三区四区 | 狠狠的干 | 国产精品69久久久久水密桃 | 另类a v| 蜜桃日韩| 日本一区二区三区免费观看 | 国产艳妇av视国产精选av一区 | 国产999精品久久久影片官网 | 国产精品亚洲视频 | h片观看 | 久久九| 亚洲一区二区精品在线观看 | 国产精品1区2区3区 国产在线观看一区 | 亚洲免费在线看 | 高清视频一区 | 大桥未久亚洲精品久久久强制中出 | 欧美成人黄色 | 91精品国产乱码久久久久久久久 | 在线免费黄色 | 日韩欧美国产精品一区二区三区 | 国产香蕉视频在线播放 | 日本一区二区精品 | 久久久久久久久久久亚洲 | 亚洲一区中文 | 欧美国产一区二区三区 | 免费一级在线观看 | 999这里只有是极品 免费的一级黄色片 | 一区二区三区在线播放视频 | 精品免费视频一区二区 | 国产欧美一二三区在线粉嫩 | 91看片淫黄大片一级在线观看 | 一级毛片在线 | 国产精品视频播放 | 欧美日韩在线一区 | 国产美女在线观看 | 国产高清一级片 | 91久久久久 | 国产一级视频免费观看 | 日日摸夜夜添夜夜添亚洲女人 | 国产女爽爽视频精品免费 | www.国产欧美| 一级大片免费观看 | 午夜精品久久久久久99热软件 | 欧美性猛交一区二区三区精品 | 91欧美激情一区二区三区成人 | 精品免费 | 超级乱淫片国语对白免费视频 | 成人深夜福利视频 | 亚洲精品一区二三区不卡 | 免费在线成人 | 天天拍天天干天天操 | 国产婷婷精品av在线 | 国产a一三三四区电影 | 黄色免费成人 | 日韩免费网 | 国产精品视频专区 | 亚洲欧洲精品视频在线观看 | 久久成人在线 | a毛片国产| 国产一级色 | 精产国产伦理一二三区 | 一级一级一级一级毛片 | 日韩成人免费 | 国产精品一区人伦免视频播放 | 巨大黑人极品videos精品 | 亚洲国产精品久久久 | 亚洲高清免费视频 | 国产精品2区 | 久草在线在线精品观看 | 99久久久久久久久 | 日本一区二区高清不卡 | 九色在线播放 | 国产亚洲一区二区三区 | 亚洲a视频 | 久久久一区二区 | 久久r精品 | 97色在线观看免费视频 | 久久婷婷麻豆国产91天堂 | 国产福利91精品一区二区三区 | 播放一区 | 免费观看一区二区三区毛片 | 一级看片 | 亚洲国产一区二区在线 | 精品国产一区二区三区性色av | 一区二区三区在线观看视频 | 久久伊人久久 | 欧美日韩一级在线观看 | 亚洲蜜臀av乱码久久精品蜜桃 | 国产精品美女久久 | 91久色| 在线观看免费毛片视频 | 国产在线观看91一区二区三区 | 麻豆成人在线 | 一区二区三区四区精品 | 久久精品国产77777蜜臀 | 国产女无套免费网站 | 亚洲精品在线视频 | 欧美视频在线观看一区 | 欧美一区二区三区aa大片漫 | 国产成人精品一区二区三区四区 | 伊人春色在线播放 | 91资源总站| 中文字幕在线观看不卡视频 | 国产一级在线 | 日韩精品一二三区 | 国产最新精品视频 | 天堂一区二区三区在线 | 亚洲精品久久久久999中文字幕 | 国产高清视频 | 久久婷婷麻豆国产91天堂 | 中文字幕在线第一页 | 国内av网站 | 中文字幕加勒比 | 成人在线播放器 | 日中文字幕在线 | 91色站| 四虎网址 | 欧美视频网站 | 一区二区av在线 | 亚洲精品乱码久久久久久9色 | 中文字幕三区 | 午夜操操 | 国产精品女同一区二区久久夜 | 拍拍无遮挡人做人爱视频免费观看 | 日韩国产一区二区 | 日韩专区视频 | 欧美性生活视频 | 波多野结衣精品 | 欧美日韩大片在线观看 | 国产精品久久久久国产a级 日韩在线二区 | 二区三区| 亚洲激情视频在线观看 | 欧美精品一二三区 | 一区二区成人 | 亚洲在线免费观看 | 精品视频 | 精品少妇一区二区三区在线播放 | 亚洲欧洲在线观看 | 看亚洲a级一级毛片 | 欧美日韩国产高清视频 | 91社区在线播放 | 久久99精品国产麻豆婷婷洗澡 | 激情网五月天 | 二区免费视频 | 欧美日韩综合视频 | 久久精品网 | 亚洲视频中文字幕 | 亚洲精品视频区 | 永久免费av| 久久精品国产一区 | 男人的天堂视频网站 | 免费一级 国产 | 亚洲高清视频一区二区三区 | 天天操操| 美女福利视频网站 | 国产精品永久 | www.国产91 | 久久久日韩精品一区二区三区 | 日韩一区二区在线观看 | 日本欧美久久久久免费播放网 | 欧美视频免费在线 | 夏同学福利网 | 亚洲午夜精品视频 | 国产精品178页| 国产情侣一区二区三区 | 亚洲a级在线观看 | 国产日韩在线视频 | 久久精品国产99国产精品 | a中文在线视频 | 国产成人精品午夜视频免费 | 操操操av | 麻豆国产一区二区三区四区 | 国产一区二区av | 免费看的av | 欧美福利一区二区三区 | 成人午夜免费视频 | 国产一极片| 毛片一级 | 欧美精品成人 | 国产精品美女视频一区二区三区 | 成人a在线视频免费观看 | 亚洲成人av在线 | 午夜精品一区二区三区在线视频 | 成人国产在线 | 午夜免费小视频 | 欧美一级一区 | 伊人一区 | 成人激情视频在线观看 | 国产第一区二区 | 国产a久久精品一区二区三区 | 娇妻被朋友调教成玩物 | www.日韩系列 | 精品成人免费一区二区在线播放 | 人人九九 | 久久99精品视频 | 99爱在线观看 | 成人精品视频99在线观看免费 | 成人激情视频免费观看 | 成人影院在线 | 亚洲男人天堂网 | 国产午夜精品一区二区 | 吴梦梦到粉丝家实战华中在线观看 | 日韩久久在线 | 欧美日韩免费在线 | 国产精品99久久久久久宅男 | 亚洲精品午夜国产va久久成人 | 狠狠操操 | 天天天堂 | 中出片| a√天堂资源在线 | 精品免费国产一区二区三区 | 欧美精品1区2区 | 特黄色一级片 | 国产无套丰满白嫩对白 | 久热官网| 青青草国产在线 | 99久久精品免费看国产一区二区三区 | 欧美午夜精品久久久久免费视 | www一起操| 久久伊人av| 久久九九| 亚洲精品一区二区三区在线看 | 欧美午夜在线 | 免费一看一级毛片 | 欧美精品1区 | 国产免费av网站 | 好姑娘影视在线观看高清 | 日韩在线视频播放 | 国产97色在线 | 亚洲 | 国产偷录视频叫床高潮对白 | 狠狠综合 | 日韩成人在线看 | 国产精品999 | 伊人久久一区二区三区 | 日本黄色激情片 | 国产精品日日夜夜 | 91色站 | 亚洲美女在线视频 | 国产精品99一区二区三区 | 亚洲欧美另类久久久精品2019 | 亚洲欧洲一区二区三区 | 天天拍天天草 | 成人在线精品视频 | 99精品久久 | 亚洲一区中文字幕永久在线 | 成人福利在线 | 国产精品成人一区二区三区 | 久久久久久久一区 | 精品国精品国产自在久不卡 | 日韩av视屏 | 国产一区在线视频 | 精品久久久久久国产 | 亚洲视频精品 | 亚洲国产成人在线 | 亚洲日本精品视频 | 国产精品久久久久久久久久久久久 | 欧美精品成人一区二区在线 | 亚洲一区中文字幕在线 | 成人情趣视频 | 免费的日本网站 | 国产一区二区在线免费观看 | 综合 欧美 亚洲日本 | 91久久久久久久久 | 中文字幕乱码一区二区三区 | 成a人片在线观看 | 影音先锋国产 | 美日韩精品视频 | 四虎影院网 | 91电影在线观看 | av一区二区在线观看 | 久久九九这里只有精品 | 日韩成人在线播放 | 日韩视频一区二区三区 | 男女网站在线观看 | 日韩欧美一区二区三区免费观看 | 国产一级片在线 | 在线高清av | www.国产在线 | 欧美 中文字幕 | 亚洲精品一区二区三区在线 | 在线观看国产一区 | 久久99精品视频 | 国产99久久精品一区二区永久免费 | 国产日韩欧美一区 | 日韩a级免费视频 | 欧美日韩精品免费观看视频 | 亚洲第一页中文字幕 | 日韩欧美一区二区在线观看 | 国产成人精品高清久久 | 欧美激情精品久久久久 | 在线观看亚洲a | 婷婷在线视频 | 日韩在线精品强乱中文字幕 | 欧美久久久久久久久久 | 国产一区二区在线免费观看 | 亚洲大片69999 | 久久综合热 | 欧美视频精品在线 | 国产成人精品久久二区二区 | 国产乱码精品一区二区三区五月婷 | 日韩中文字幕在线播放 | 青青操av | 久草新免费 | 99国产精品久久久久老师 | av影片在线 | 国产丝袜人妖ts黄檬 | 中国黄色在线视频 | 亚洲福利国产 | 久久久婷|