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

Redis篇:事務(wù)和Lua 腳本的使用

存儲 存儲軟件 Redis
現(xiàn)在多數(shù)秒殺,抽獎,搶紅包等大并發(fā)高流量的功能一般都是基于 redis 實現(xiàn),然而在選擇 redis 的時候,我們也要了解 redis 如何保證服務(wù)正確運行的原理.

[[436743]]

本文轉(zhuǎn)載自微信公眾號「潛行前行」,作者cscw 。轉(zhuǎn)載本文請聯(lián)系潛行前行公眾號。

 現(xiàn)在多數(shù)秒殺,抽獎,搶紅包等大并發(fā)高流量的功能一般都是基于 redis 實現(xiàn),然而在選擇 redis 的時候,我們也要了解 redis 如何保證服務(wù)正確運行的原理

前言

  • redis 如何實現(xiàn)高性能和高并發(fā)
  • reids 事務(wù)的 ACID 原理
  • WATCH、EXEC 命令實現(xiàn) redis 事務(wù)
  • lua 實現(xiàn) redis事務(wù)
  • 搶紅包方案

redis 如何實現(xiàn)高性能和高并發(fā)

  • redis 是一個內(nèi)存數(shù)據(jù)庫,讀寫非常高效。除了開啟 AOF,RDB 異步線程去持久化數(shù)據(jù),基本沒有磁盤I/O消耗,性能方面是比 mysql,oracle 快很多
  • redis 自己實現(xiàn)一套簡單高效的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu):動態(tài)字符串(SDS),鏈表,字典,跳躍鏈表,整數(shù)集合和壓縮列表。然后在這個基礎(chǔ)上去實現(xiàn)用戶能操作的對象:字符串,列表,哈希,集合,有序集合等對象
  • reactor 模式的網(wǎng)絡(luò)事件處理器。它使用了 I/O 多路復(fù)用去同時監(jiān)控多個套接字,這是一種高效的I/O模型。reactor 相關(guān)知識可以看下這篇文章框架篇:見識一下linux高性能網(wǎng)絡(luò)IO+Reactor模型
  • 事件處理器是單線執(zhí)行的,這大大減少CPU的上下文切換,和對資源鎖的競爭問題,極大提高redis服務(wù)處理速度(至于為啥使用單線程,因為CPU夠用了,它的性能瓶頸在內(nèi)存而不是CPU)
  • Redis直接自己構(gòu)建了VM 機制 ,因為一般的系統(tǒng)調(diào)用系統(tǒng)函數(shù)的話,會浪費一定的時間去移動和請求

reids 事務(wù)的 ACID 原理

redis 的事務(wù)需要先劃分出三個階段

  • 事務(wù)開啟,使用 MULTI 可以標(biāo)志著執(zhí)行該命令的客戶端從非事務(wù)狀態(tài)切換至事務(wù)狀態(tài)redis> MULTI
  • 命令入隊,MULTI開啟事務(wù)之后,非 WATCH、EXEC、DISCARD、MULTI 等特殊命令;客戶端的命令不會被立即執(zhí)行,而是放入一個事務(wù)隊列
  • 執(zhí)行事務(wù)或者丟棄。如果收到 EXEC 的命令,事務(wù)隊列里的命令將會被執(zhí)行。如果是 DISCARD 則事務(wù)被丟棄

命令入隊過程如果出錯(如使用了不存在的命令),則事務(wù)隊列會被拒接執(zhí)行

執(zhí)行事務(wù)期間出現(xiàn)了異常(如命令和操作的數(shù)據(jù)類型不匹配),事務(wù)隊列的里的命令還是繼續(xù)執(zhí)行下去,直到全部命令執(zhí)行完。不會回滾

WATCH 可用于監(jiān)控 redis 變量值,在命令 EXEC 之前;redis 里的數(shù)據(jù)是有機會被其他客戶端的命令修改的。使用 WATCH,監(jiān)控的變量被修改后,執(zhí)行 EXEC 時則會返回執(zhí)行失敗的 nil 回復(fù)

  1. redis> WATCH "name" 
  2. OK 
  3. redis> MULTI   ### 此時name已被其他客戶端的命令修改 
  4. OK 
  5. redis> SET "name" "lwl" 
  6. QUEUED 
  7. redis> EXEC 
  8. (nil) 

從嚴(yán)格意義上來說,redis 是沒有事務(wù)的。因為事務(wù)必須具備四個特點:原子性(Atomicity),一致性(Consistency),隔離性(Isolation),持久性(Durability)。然后 redis 是做不到這四點,只是具備其中一些特征,redis的事務(wù)是個偽事務(wù),而且不支持回滾。下面將為各位同學(xué)一一道來

原子性

從上面可以,事務(wù)的異常會發(fā)生在EXEC命令執(zhí)行前、后

EXEC命令執(zhí)行前:在命令入隊時就報錯,(如內(nèi)存不足,命令名稱錯誤),redis 就會報錯并且記錄下這個錯誤。此時,客戶還能繼續(xù)提交命令操作;等到執(zhí)行EXEC時,redis 就會拒絕執(zhí)行所有提交的命令操作,返回事務(wù)失敗的結(jié)果 nil

EXEC命令執(zhí)行后:命令和操作的數(shù)據(jù)類型不匹配,但 redis 實例沒有檢查出錯誤。在執(zhí)行完 EXEC 命令以后,redis 實際執(zhí)行這些指令,就會報錯。此時事務(wù)是不會回滾的,但事務(wù)隊列的命令還是繼續(xù)被執(zhí)行。事務(wù)的原子性無法保證

EXEC執(zhí)行時,發(fā)生故障:如果 redis 開啟了 AOF 日志,那么,只會有部分的事務(wù)操作被記錄到 AOF 日志中。需要使用 redis-check-aof 工具檢查 AOF 日志文件,這個工具可以把未完成的事務(wù)操作從 AOF 文件中去除。事務(wù)的原子性得到保證

一致性

EXEC命令執(zhí)行前:入隊報錯事務(wù)會被放棄執(zhí)行,具有一致性

EXEC命令執(zhí)行后:實際執(zhí)行時報錯,錯誤的執(zhí)行不會執(zhí)行,正確的指令可以正常執(zhí)行,一致性可以保證

EXEC執(zhí)行時,發(fā)生故障:RDB 模式,RDB 快照不會在事務(wù)執(zhí)行時執(zhí)行,事務(wù)結(jié)果不會保存在RDB;AOF 模式,可以使用 redis-check-aof 工具檢查 AOF 日志文件,把未完成的事務(wù)操作從 AOF 文件中去除。可以保證一致性

隔離性

EXEC 命令前執(zhí)行,隔離性需要通過 WATCH 機制保證。因為 EXEC 命令執(zhí)行前,其他客戶端命令可以被執(zhí)行,相關(guān)變量會被修改;但可以使用 WATCH 機制監(jiān)控相關(guān)變量。一旦相關(guān)變量被修改,則 EXEC 后則事務(wù)失敗返回;具有隔離性

EXEC 命令之后,隔離性可以保證。因為 redis 是單線程執(zhí)行,事務(wù)隊列里的命令和其他客戶端的命令只能二選一被順序執(zhí)行,因此具有隔離性

持久性

如果 redis 沒有使用 RDB 或 AOF,事務(wù)的持久化是不存在的

使用 RDB 模式,那么在一個事務(wù)執(zhí)行后,而下一次的 RDB 快照還未執(zhí)行前,如果發(fā)生了實例宕機,數(shù)據(jù)丟失,這種情況下,事務(wù)修改的數(shù)據(jù)也是不能保證持久化

AOF 模式,因為 AOF 模式的三種配置選項 no、everysec 和 always 都會存在數(shù)據(jù)丟失的情況。所以,事務(wù)的持久性屬性也還是得不到保證

總結(jié)

redis 的事務(wù)機制可以保證一致性和隔離性;但是無法保證持久性;具備了一定的原子性,但不支持回滾

WATCH、EXEC 命令實現(xiàn) redis 事務(wù)

  1. redis> WATCH "map" 
  2. OK 
  3. redis> MULTI  
  4. OK 
  5. redis> HSET map "csc" "lwl"   
  6. QUEUED 
  7. redis> HGET map "csc" 
  8. QUEUED 
  9. redis> EXEC 
  10. 1) OK 
  11. 2) "lwl"   

lua 實現(xiàn) redis 事務(wù)

除了 MULTI、WATCH、EXEC 命令,還有其他的方式可做到 redis 原子性和隔離性嗎?有的,lua 腳本;redis 內(nèi)置了lua的執(zhí)行環(huán)境,并自帶了一些 lua 函數(shù)庫。redis 執(zhí)行 lua 時,會啟動一個偽客戶端去執(zhí)行腳本里的 redis 命令

一致性,原子性,持久性 和 MULTI,EXEC 過程相似:如果 lua 存在錯誤的命令名稱,事務(wù)會執(zhí)行失敗。如果在執(zhí)行 redis 命令過程出現(xiàn)異常,之前正常執(zhí)行的命令也不會回滾

lua 腳本被當(dāng)做一命令集合一起被執(zhí)行,且 redis 是單線處理機制,因此不需要 WATCH 保證隔離性,天然具備隔離性

Lua調(diào)用Redis指令: redis.call("命令名稱",參數(shù)1,參數(shù)2)

優(yōu)點

減少網(wǎng)絡(luò)開銷:可以將多個請求通過腳本的形式一次發(fā)送,減少網(wǎng)絡(luò)時延

原子操作:Redis會將整個腳本作為一個整體執(zhí)行,中間不會被其他請求插入。在腳本運行過程中無需擔(dān)心會出現(xiàn)競態(tài)條件

可重復(fù)使用:客戶端發(fā)送的腳本會永久存在 redis 中,這樣其他客戶端可以復(fù)用這一腳本,而不需要使用代碼完成相同的邏輯

搶紅包方案

問題關(guān)鍵點

  • 一:用戶是否參與過活動,不可重復(fù)參與
  • 二:紅包數(shù)量有限;而且一個可搶的紅包,保證不能讓多個人同時搶到
  • 三:持久化存儲紅包與用戶的關(guān)系
  • 四:如何保證 步驟一到步驟三的原子性和隔離性

關(guān)鍵點一

redis 的集合對象 set 是無序且唯一的。set 集合由整數(shù)集合或字典實現(xiàn)的,添加,刪除,查找的復(fù)雜度基本視為 O(1),存放的最大對象個數(shù)是2^32 - 1 (4294967295)

使用 set 集合保存參加過的用戶,每次用戶參與活動時先判斷是否在 set 里。不在則可以搶紅包

如果是用戶可以重復(fù)參與多次的場景,則使用哈希對象,key存用戶對象,value 存放參與次數(shù)。使用 INCR 原子操作增加 value,如果返回數(shù)值 > 上限,說明搶的次數(shù)用完

關(guān)鍵點二

使用 list 或者 set 存放事先創(chuàng)建好的有限個紅包;因為 redis 是單線程操作,同一時間,多人搶紅包,只會有一個人成功。而紅包是事先生成的,消費用完即止,不存在超發(fā)的可能

使用 list 列表存放紅包

  • 因為紅包金額大小不一,為增加搶到紅包大小的隨機性,需要先shuffle一次,再 LPUSH 入隊列
  • RPOP 出隊列一個紅包,如果返回不為nil,則代表獲取成功,繼續(xù)下一步,反之則說明已搶完,返回

set 集合中有兩個指令非常適合在搶紅包、抽獎的場景使用

  • SPOP key [count] 移除并返回集合中的一個隨機元素
  • SRANDMEMBER key [count] 返回集合中一個或多個隨機數(shù);需要再調(diào) SREM 移除一遍
  • 將所有的紅包通過 SADD 添加到 set 中,然后通過隨機命令獲取對應(yīng)的紅包即可

如果有謝謝惠顧之類的落空選項,生成對應(yīng)的無效紅包、獎品放入 set 或 list 即可

搶紅包一般是有時效性,正好可以配合 redis 的 key 的失效時間使用。使得搶紅包功能很完美的解決

關(guān)鍵點三

使用額外的 list 列表保存用戶與紅包的關(guān)系,用戶搶到紅包后,將對應(yīng)的關(guān)系 LPUSH 入隊列,然后服務(wù)去消費拉取數(shù)據(jù)批量保存到數(shù)據(jù)庫即可

關(guān)鍵點四

使用 lua 腳本實現(xiàn)即可

  1. -- 參數(shù):KEYS[1]-紅包list,KEYS[2]-用戶和紅包的消費list,KEYS[3]-去重的哈希對象,KEYS[4]-用戶ID 
  2. -- 函數(shù):嘗試獲得紅包,如果成功,則返回json字符串,如果不成功,則返回nil 
  3. -- 返回值:nil 或者 json字符串,{"userId":"用戶ID","id":"紅包ID"} 
  4. -- 如果用戶已搶過紅包,則返回nil 
  5.  
  6. -- 步驟一,攔截重復(fù)參與 
  7. if redis.call('hexists', KEYS[3], KEYS[4]) == 1 then 
  8.   return nil 
  9. else 
  10.   -- 步驟二,先取出一個紅包 
  11.   local lunkMoney = redis.call('rpop', KEYS[1]); 
  12.   if luckMoney then 
  13.     local data = cjson.decode(luckMoney); 
  14.     data['userId'] = KEYS[4]; -- 加入用戶ID信息 
  15.     local re = cjson.encode(data); 
  16.     -- 把用戶ID放到去重的哈希,value設(shè)置為 1 
  17.     redis.call('hset', KEYS[3], KEYS[4], 1); 
  18.     -- 步驟三: 用戶和紅包放到已消費隊列里 
  19.     redis.call('lpush', KEYS[2], re); 
  20.     return re; 
  21.   end 
  22. end 
  23. return nil 

參考文章

redis事務(wù)一致性問題?

Redis的ACID屬性

搶紅包設(shè)計

騰訊二面:Redis 事務(wù)支持 ACID 么?

 

責(zé)任編輯:武曉燕 來源: 潛行前行
相關(guān)推薦

2023-04-04 07:52:26

RedisLua腳本

2024-01-09 07:25:31

2019-08-06 14:06:19

數(shù)據(jù)庫工具技術(shù)

2025-02-28 08:21:36

C語言C++Java

2022-08-03 08:17:00

Redis事務(wù)內(nèi)存

2023-05-05 08:08:06

JavaRedis事務(wù)

2011-08-23 09:56:52

UnicodeLua

2011-08-25 09:55:27

2011-08-25 13:22:40

CEGUILua腳本

2011-08-23 09:44:28

LUA腳本

2024-12-30 07:20:00

Redis數(shù)據(jù)庫MySQL

2024-08-13 17:35:27

2022-03-08 07:22:48

Redis腳本分布式鎖

2024-01-18 11:54:44

Redis事務(wù)命令

2011-08-30 10:28:11

MySQL ProxyLUA

2022-04-26 21:49:55

Spring事務(wù)數(shù)據(jù)庫

2024-03-29 08:56:47

2011-08-24 14:26:08

Lua游戲腳本

2021-08-01 07:19:16

語言OpenrestyNginx

2023-10-12 07:54:02

.NETXamarin框架
點贊
收藏

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

欧美一级淫片播放口| 91精品婷婷国产综合久久| 久草热久草热线频97精品| 成年人视频在线免费看| av一区二区高清| 欧美色涩在线第一页| 国内自拍中文字幕| 日韩av成人| 美女视频黄a大片欧美| 久久91超碰青草是什么| 亚洲人成人无码网www国产| 欧美综合社区国产| 日韩亚洲在线| 欧美一级搡bbbb搡bbbb| 青青草精品视频在线| 成人18在线| 国产成人超碰人人澡人人澡| 日韩av手机在线看| 欧美高清视频一区二区三区| 九九热爱视频精品视频| 日韩午夜在线观看| 999在线免费视频| 美女尤物在线视频| 国产精品久久久一本精品| 国产精品一区免费观看| 在线亚洲欧美日韩| 久久黄色影院| 欧美精品18videos性欧| 激情无码人妻又粗又大| 九九久久婷婷| 日韩av网站大全| 极品人妻一区二区| 日日夜夜亚洲| 在线观看网站黄不卡| 欧美日韩精品在线一区二区| 99视频免费在线观看| 日本一区二区三区四区在线视频 | 97视频一区| 欧美区一区二区三区| 能在线观看的av网站| 国模私拍一区二区国模曼安| 一区二区三区免费网站| 在线视频一区观看| 98在线视频| 国产欧美一区二区精品性色超碰| 国产一区二区三区四区hd| 久久久久国产精品夜夜夜夜夜| 成人在线视频www| 狠狠综合久久av一区二区小说| 蜜桃成人免费视频| 日本精品一二区| 成人av在线看| 国产欧美在线一区二区| 国产刺激高潮av| 国产91丝袜在线观看| 99中文字幕| 亚洲国产精品suv| 国产不卡在线视频| 国产精品有限公司| 天堂在线中文网| 99久久婷婷国产综合精品电影| 国产精品一区二区三区免费| 少妇高潮一区二区三区99小说| 成人听书哪个软件好| 国产精品一区二区三区精品| 五月婷婷丁香六月| 久久婷婷一区二区三区| 区一区二区三区中文字幕| 激情在线视频| 国产一本一道久久香蕉| 91精品久久久久久| 国产成人麻豆精品午夜在线| 国产成人午夜精品5599| 国产伦精品一区| 亚洲欧美日韩精品永久在线| 久久日韩粉嫩一区二区三区| 小说区图片区图片区另类灬| 天堂а√在线官网| 成人h动漫精品一区二| 国产精品免费在线播放| 天堂中文在线视频| 国产精品视频你懂的| 在线观看日韩片| 中国av在线播放| 婷婷中文字幕一区三区| 中文网丁香综合网| 在线视频中文字幕第一页| 黄色一区二区在线观看| 天堂社区在线视频| 日本精品视频| 亚洲精品在线91| 日本女人性生活视频| 在线观看的日韩av| 国产成人免费av电影| 国产日韩精品suv| 本田岬高潮一区二区三区| 欧美日韩一区在线播放| 日本免费视频在线观看| 亚洲成人av电影在线| 欧美黑人又粗又大又爽免费| 国语精品视频| 亚洲性夜色噜噜噜7777| 青青草激情视频| 亚洲制服av| 亚洲va欧美va国产综合剧情| 亚洲色图欧美视频| 亚洲日本在线看| 人妻内射一区二区在线视频| 精品视频一区二区三区| 国产一区二区三区精品久久久| 婷婷色中文字幕| 秋霞午夜av一区二区三区 | 亚洲春色h网| 久久香蕉国产线看观看av| av大片免费观看| 狠狠入ady亚洲精品经典电影| 日本韩国欧美精品大片卡二| 99热在线只有精品| 国产午夜亚洲精品羞羞网站| 黄色激情在线视频| 色8久久久久| 亚洲欧美三级伦理| 久久精品国产亚洲av香蕉| 麻豆成人久久精品二区三区小说| 国产精品成av人在线视午夜片 | 亚洲精品福利在线观看| 色欲人妻综合网| 奇米精品一区二区三区在线观看 | 99久久99精品| blacked蜜桃精品一区| 亚洲3p在线观看| www视频在线| 成人免费在线视频观看| 欧美日韩怡红院| 亚洲欧洲av| 97在线视频免费| 成人毛片视频免费看| 亚洲日本在线a| 三日本三级少妇三级99| 97精品国产| 国产精品自拍偷拍| 69久久夜色| 欧美性视频一区二区三区| 麻豆精品免费视频| 午夜一级在线看亚洲| 精品国产一二| 色戒汤唯在线| 亚洲女在线观看| 日日夜夜狠狠操| 久久久久国产精品厨房| 激情网站五月天| 国产欧美亚洲精品a| 一区二区欧美日韩视频| av大全在线观看| 久久综合九色欧美综合狠狠| 国产视频一视频二| 精品国产影院| 7777精品久久久久久| 亚洲三级中文字幕| 色婷婷综合中文久久一本| 亚洲欧美日韩三级| 久久精品高清| 91久久久久久久一区二区 | 欧美国产亚洲视频| 黑人精品一区二区三区| 午夜精品一区二区三区免费视频| 中国免费黄色片| 亚洲在线免费| 日韩在线电影一区| 999精品视频在线观看| 欧美老女人性视频| 色哟哟国产精品色哟哟| 一本久久综合亚洲鲁鲁五月天| 91资源在线播放| 精品一区二区影视| 国产一级做a爰片久久毛片男| 岛国成人av| 日本久久91av| 黄色网址视频在线观看| 日韩精品在线看片z| 久久久久亚洲av成人无码电影| 久久先锋影音| 一区二区在线中文字幕电影视频| 日韩激情欧美| 欧美一级片久久久久久久| jizz在线观看中文| 日韩欧美国产午夜精品| 国产欧美日韩另类| 国产成人在线视频网站| 国产精品专区在线| 青草国产精品| 成人永久免费| 欧美xxxx做受欧美护士| 久久久精品一区二区| 欧美一区二区公司| 欧美综合天天夜夜久久| 久久久久久免费观看| 国产性天天综合网| 制服.丝袜.亚洲.中文.综合懂| 亚洲一区国产一区| 成人h视频在线观看| 国模套图日韩精品一区二区| 久久久精品亚洲| 黄色影院在线播放| 精品少妇一区二区三区免费观看| 日本中文字幕第一页| 亚洲图片激情小说| 美女久久久久久久久久| 国产suv精品一区二区883| 另类小说第一页| 亚洲二区免费| 国产卡一卡二在线| 国产欧美一区| 久久精品99| 国语精品视频| 国产在线999| 天堂√中文最新版在线| 欧美精品情趣视频| 最新电影电视剧在线观看免费观看| 亚洲第一男人av| 国产欧美久久久精品免费| 色激情天天射综合网| 日韩和一区二区| 亚洲免费看黄网站| 激情五月深爱五月| 久久久一区二区三区| 男人网站在线观看| 国产河南妇女毛片精品久久久| 成年网站在线播放| 午夜在线精品| 国产九九九九九| 一区视频在线看| 蜜桃视频一区二区在线观看| 亚洲mv大片欧洲mv大片| 亚洲一区高清| 青草伊人久久| 91久久久亚洲精品| 日韩成人免费av| 国产精品免费一区二区三区都可以 | 男人天堂2024| 福利视频导航一区| 日产精品久久久久| 性久久久久久久久| 国产精品99re| 五月综合激情网| 青青国产在线观看| 激情亚洲一区二区三区四区| 日本午夜精品理论片a级app发布| 一区二区高清视频在线观看| 免费一级片视频| 亚洲午夜一区二区三区| 国产网友自拍视频| 午夜电影网一区| 天堂网中文字幕| 欧美性猛片xxxx免费看久爱| 国产日韩久久久| 尤物在线观看一区| 加勒比婷婷色综合久久| 亚洲男人的天堂在线aⅴ视频| 91嫩草|国产丨精品入口| 亚洲自拍偷拍欧美| 激情综合网五月婷婷| 精品女同一区二区三区在线播放| 日韩女同强女同hd| 精品福利在线观看| 黄色一级片免费看| 色婷婷精品大在线视频| 中文字幕免费观看| 亚洲精品视频啊美女在线直播| 麻豆国产精品va在线观看不卡| 中文字幕日本在线| 中文字幕亚洲在线| 国产传媒在线播放| 精品国产伦理网| 中文字幕日韩免费| 欧美日韩国产小视频在线观看| 丰满人妻一区二区三区四区| 欧美日韩中文另类| 性生活视频软件| 亚洲大胆人体av| 毛片免费在线| 久久大大胆人体| 欧美野外wwwxxx| 57pao国产成人免费| 欧美xxxx性| 99高清视频有精品视频| 给我免费播放日韩视频| 欧美精品与人动性物交免费看| 成人羞羞网站入口| 久久久久久久久影视| 国产日韩高清一区二区三区在线| 久久婷婷五月综合色国产香蕉| 日韩高清在线不卡| 日韩精品一区二区三区色欲av| 日韩精品久久久久久| 图片区乱熟图片区亚洲| 97se亚洲国产综合自在线| 欧洲在线免费视频| 成人动漫视频在线| a资源在线观看| 一区二区三区在线高清| 久久一区二区三区视频| 3d成人动漫网站| 同心难改在线观看| 精品国产美女在线| 成人亚洲欧美| 亚洲japanese制服美女| 色爱综合av| 久久手机在线视频| 日韩电影一二三区| 亚洲色图偷拍视频| 久久精品视频网| 久久黄色免费网站| 欧美精品在线观看播放| 丝袜视频国产在线播放| 久久国产精品久久久久久久久久 | 66m—66摸成人免费视频| 成人精品高清在线视频| 久久99精品久久久水蜜桃| 国产精品久久久久久久免费观看| 国产成人艳妇aa视频在线| 日本欧美一区二区三区乱码| 中文字幕在线视频播放| 樱花草国产18久久久久| 中文字幕欧美色图| 日韩欧美一区二区三区久久| a毛片在线免费观看| 亚洲精品资源美女情侣酒店| 91精选在线| 成人激情春色网| 精品国产一区探花在线观看| 国产婷婷一区二区三区| 国产很黄免费观看久久| av资源在线免费观看| 在线观看av不卡| 深夜福利免费在线观看| 欧美激情小视频| 91精品国产自产在线丝袜啪 | 中文字幕在线观看第三页| 91一区二区在线| 五月天丁香激情| 这里是久久伊人| 五月天婷婷在线视频| 国产精品91一区| 色婷婷精品视频| 久久久性生活视频| www.在线欧美| 国产精品成人网站| 亚洲国产小视频在线观看| 在线观看wwwxxxx| 亚洲一区二区三区视频| 欧美在线三区| 欧洲在线免费视频| 久久久久久一二三区| 天天爱天天做天天爽| 亚洲片av在线| jizz久久久久久| 亚洲日本欧美在线| 蜜臀av性久久久久蜜臀aⅴ四虎 | 91在线视频国产| 欧美大片顶级少妇| 污视频网站在线免费| 成人国产在线激情| 亚洲a在线视频| 男人添女人荫蒂国产| 亚洲高清免费观看高清完整版在线观看| 国产精品高潮呻吟AV无码| 中文字幕亚洲二区| 在线观看v片| 欧美人与物videos另类| 老司机久久99久久精品播放免费| 一级黄色片大全| 欧美日韩一级片网站| 黄网页免费在线观看| 国产伊人精品在线| 国内精品久久久久国产盗摄免费观看完整版 | 免费黄色在线| 91深夜福利视频| 亚洲国产一区二区精品专区| 黄色录像a级片| 精品视频资源站| а天堂中文在线官网| 91久久伊人青青碰碰婷婷| 国产精品久久久久9999高清| 三上悠亚影音先锋| 欧美一区二区视频在线观看| 韩国成人免费视频| 性欧美videosex高清少妇| 久久成人久久爱| 久久久久久久黄色| 亚洲乱码国产乱码精品精天堂| 亚洲精品555| 欧美乱做爰xxxⅹ久久久| 99久久国产综合色|国产精品| 无码人妻精品一区二区三区不卡 | 嫩草在线视频| 91手机视频在线观看| 美女被久久久| 国产性生活大片| 亚洲欧美精品一区|