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

天堂av在线| 丰满人妻一区二区三区四区53| 白嫩白嫩国产精品| 污片在线观看一区二区| 欧美高清视频一区二区三区在线观看| 久久夜色精品国产噜噜亚洲av| 欧美日韩中文字幕一区二区三区| 在线不卡一区二区| a级黄色小视频| 三级视频在线看| 日韩av一区二区三区四区| 超碰精品一区二区三区乱码| 折磨小男生性器羞耻的故事| 国产 日韩 欧美一区| 亚洲日穴在线视频| 欧美日韩电影一区二区三区| 国产又爽又黄免费软件| 久久国产精品亚洲77777| 波霸ol色综合久久| 一区二区不卡免费视频| 欧美二区观看| 欧美性猛交一区二区三区精品| 国产在线视频综合| 中文字幕在线视频区| 国产在线麻豆精品观看| 热re99久久精品国产66热| 精品日韩在线视频| 激情小说一区| 欧美一区二区在线播放| 国产精彩免费视频| 手机在线观看av网站| 亚洲精品中文在线| 一区二区三区不卡在线| 国产在线黄色| 久久综合色天天久久综合图片| 91亚洲一区精品| 337p粉嫩色噜噜噜大肥臀| 亚洲网址在线| 精品自在线视频| 日日碰狠狠添天天爽| 国产欧美日韩精品一区二区三区| 精品福利视频一区二区三区| 日韩精品aaa| 91久久久久久白丝白浆欲热蜜臀| 欧美香蕉大胸在线视频观看| 日韩av在线播放不卡| 色帝国亚洲欧美在线| 日韩理论片中文av| 最新精品视频| 欧美成人三区| 亚洲欧洲av另类| 亚洲欧洲精品在线 | 亚洲 欧美 日韩 国产综合 在线| caoporn免费在线| 最新欧美精品一区二区三区| 亚洲一区二区三区午夜| 在线视频91p| 国产精品亲子伦对白| 亚洲7777| 欧美videos极品另类| 国产精品二三区| 在线播放 亚洲| 国产黄a三级三级三级av在线看| 国产精品久久久久7777按摩| 一区二区精品免费视频| www在线免费观看视频| 亚洲精品高清在线| 18禁裸男晨勃露j毛免费观看 | 夜夜爽夜夜爽精品视频| 菠萝蜜视频在线观看入口| 污视频免费在线观看| 亚洲成人免费视| 成人免费毛片网| 国产精品扒开腿做爽爽爽视频软件| 91黄视频在线观看| 日本美女视频一区| a级日韩大片| 日韩福利在线播放| 亚洲色图 激情小说| 午夜国产一区二区| 欧美精品第一页在线播放| 黄网在线观看视频| 日韩av一区二区在线影视| 91久久国产综合久久91精品网站| 亚洲AV无码成人片在线观看| 99久久国产免费看| 亚洲成色www久久网站| 黄色网在线播放| 性做久久久久久久久| 久草精品在线播放| 日本免费一区二区三区视频| 日韩成人av网| 久久av无码精品人妻系列试探| 91麻豆精品国产91久久久平台| 欧美高清videos高潮hd| 青草视频在线观看免费| 精品在线免费视频| 久久精品午夜一区二区福利| 婷婷成人激情| 亚洲国产精品欧美一二99| 999香蕉视频| 日韩精品免费视频一区二区三区| 亚洲激情小视频| 欧日韩不卡视频| 日韩午夜精品| 成人中文字幕+乱码+中文字幕| 香蕉国产在线视频| 综合亚洲深深色噜噜狠狠网站| 欧美成人三级在线视频| 日韩成人综合网| 日韩高清a**址| 欧美三级免费看| 日本欧美大码aⅴ在线播放| 国产精品久久九九| 黄色网页在线播放| 91福利在线免费观看| 精品国产免费久久久久久婷婷| 精品国产美女| 7777精品视频| 午夜精品久久久久久久91蜜桃| 国产欧美日韩综合精品一区二区| 国产av人人夜夜澡人人爽麻豆| 亚洲最大的免费视频网站| 亚洲欧美日韩国产中文专区| 日本少妇毛茸茸高潮| 国产精品自在欧美一区| 亚洲精品一区二区三区樱花 | 岛国av在线不卡| 少妇愉情理伦片bd| 97视频精品| 国产精品久久久久一区二区| 日韩a在线看| 天天综合色天天| jjzz黄色片| 欧美激情日韩| 91精品国产综合久久久久久丝袜| 137大胆人体在线观看| 色天使色偷偷av一区二区| 在线免费观看污视频| 国产精品久久| 97久久精品午夜一区二区| h网站久久久| 4438亚洲最大| 日韩亚洲欧美中文字幕| 美日韩一级片在线观看| 先锋影音网一区| 少妇精品视频一区二区免费看| 亚洲区中文字幕| 亚洲另类在线观看| 久久久久久免费网| 毛片一区二区三区四区| 九一亚洲精品| 欧美综合一区第一页| 亚洲人成色777777精品音频| 精品欧美激情精品一区| 一级性生活毛片| 亚洲一区二区三区xxx视频| 国产精品第一第二| 欧美成年人视频网站| 久久久999免费视频| 天堂va在线高清一区| 精品中文字幕乱| 不卡视频在线播放| 亚洲图片欧美视频| 人妻激情偷乱频一区二区三区| 亚洲无线视频| 精品无码久久久久久久动漫| 周于希免费高清在线观看| 精品一区二区电影| 免费av中文字幕| 亚洲欧美综合网| 久久久久无码精品| 99国产精品视频免费观看一公开| 国内精品国语自产拍在线观看| 蜜桃av在线播放| 亚洲系列中文字幕| 国产又粗又黄又爽| 亚洲国产欧美日韩另类综合 | 视频一区二区视频| 97se亚洲| 日本中文字幕不卡免费| 91精彩在线视频| 欧美一区二区三区在线观看 | 欧美刺激午夜性久久久久久久| 久久综合激情网| 国产亚洲一区字幕| 999久久久精品视频| 黄色成人精品网站| 日本一区二区高清视频| 深夜日韩欧美| 午夜欧美大片免费观看| 成人午夜影视| 日韩欧美中文字幕公布| 91精品国产乱码在线观看| 日本一二三不卡| 潘金莲一级淫片aaaaa| 久久国产主播| 超碰97在线看| 少妇精品久久久一区二区| 成人免费高清完整版在线观看| 国产极品人妖在线观看| 在线电影av不卡网址| 黄色片一区二区三区| 欧美亚洲综合一区| 国产一级片免费| 国产精品乱人伦中文| 中国极品少妇videossexhd| 美日韩一级片在线观看| 免费一级特黄特色毛片久久看| 成人毛片在线| 精品久久精品久久| 国产一区二区三区黄网站| 欧美在线不卡区| 亚洲第一图区| 中文字幕亚洲欧美日韩2019| 蜜桃视频久久一区免费观看入口| 欧美亚洲国产bt| 久久久久久久极品| 亚洲精品免费播放| 老司机福利在线观看| 99精品欧美一区二区三区小说| 婷婷激情综合五月天| 午夜一区不卡| 激情小视频网站| 亚洲欧美综合久久久| 天天爽天天狠久久久| 欧美一区二区三区红桃小说| 亚洲a∨日韩av高清在线观看| 外国电影一区二区| 欧美最猛性xxxxx亚洲精品| 久久亚洲资源| 久久成人av网站| 888av在线| 一本大道亚洲视频| 飘雪影院手机免费高清版在线观看| 欧美本精品男人aⅴ天堂| 97久久人国产精品婷婷| 欧美午夜宅男影院| 无码人妻精品一区二区三区蜜桃91| 亚洲国产va精品久久久不卡综合| 国产三级国产精品国产国在线观看| 国产喷白浆一区二区三区| 不卡一区二区在线观看| av一区二区不卡| 中文字幕精品视频在线| 国产成人精品www牛牛影视| 91视频福利网| 国产一区二区视频在线播放| 欧洲在线免费视频| 精品一区二区影视| 午夜激情影院在线观看| 精品一区二区三区在线播放视频| 天天干天天综合| 麻豆视频一区二区| 国产美女18xxxx免费视频| 久久国产剧场电影| 色呦色呦色精品| 国产精品白丝av| 亚洲精品乱码久久久久久9色| 国产乱妇无码大片在线观看| 污免费在线观看| 国产河南妇女毛片精品久久久| 不卡的一区二区| 懂色中文一区二区在线播放| 丰满少妇xbxb毛片日本| 99在线精品视频| 中国美女乱淫免费看视频| 国产人妖乱国产精品人妖| 蜜桃av免费在线观看| 综合欧美一区二区三区| 青青草原国产视频| 午夜影院久久久| 亚洲成熟少妇视频在线观看| 欧美亚洲免费在线一区| 国产一区二区小视频| 精品国产一区二区三区忘忧草| 日韩一卡二卡在线| 亚洲图片在区色| 九义人在线观看完整免费版电视剧| 久久精品国产亚洲一区二区| 国产在线激情| 91国产精品电影| 日韩欧美一区二区三区免费观看| 国产主播精品在线| 北条麻妃在线一区二区免费播放 | 国产精品一区二区性色av | 久久精品国产一区二区三区日韩| 综合干狼人综合首页| 在线视频不卡一区二区| 在线不卡亚洲| 亚洲色图久久久| 国产精品1区2区3区| 人妻无码中文久久久久专区| 欧美—级在线免费片| 裸体武打性艳史| 欧美日韩在线视频一区| 91精品国产乱码久久久| 亚洲精品www久久久久久广东| 国产三级视频在线播放线观看| 伦理中文字幕亚洲| 亚洲国产成人二区| 3d精品h动漫啪啪一区二区| 亚洲欧洲色图| 第九区2中文字幕| 亚洲欧美视频一区二区三区| 成人在线短视频| 欧美经典一区二区三区| 国产在线视频第一页| 欧美色图在线观看| 在线观看xxx| 伦理中文字幕亚洲| 你懂得影院夜精品a| 国产成人免费电影| 99久久亚洲精品蜜臀| 国内自拍在线观看| 国产乱子轮精品视频| 国产1区2区在线观看| 亚洲风情在线资源站| 91黄色在线视频| 亚洲欧美国产视频| 久久99亚洲网美利坚合众国| 国产男人精品视频| 亚洲精品一级二级三级| 无码日本精品xxxxxxxxx| 久久国产精品第一页| 国产成人无码精品久久二区三| 亚洲一区欧美一区| 国产三级三级在线观看| 综合久久五月天| 丝袜美腿一区| 精品蜜桃一区二区三区| 狠色狠色综合久久| 日批视频在线看| 亚洲日穴在线视频| 国产精品伦一区二区三区| 中文字幕日韩视频| 免费在线观看一区| 日本一区高清不卡| 另类亚洲自拍| 欧美做受xxxxxⅹ性视频| 欧美日韩加勒比精品一区| 亚洲乱色熟女一区二区三区| 欧美大成色www永久网站婷| 96视频在线观看欧美| 亚洲一区二区三区色| 麻豆高清免费国产一区| 开心激情五月网| 欧美色网一区二区| 欧美成人视屏| 亚洲综合精品伊人久久| 亚洲大全视频| 日本55丰满熟妇厨房伦| 亚洲自拍偷拍av| 高潮一区二区三区乱码| 久久久久久久久久久网站| 国产精品流白浆在线观看| 欧美午夜小视频| 91在线看国产| 国产又大又粗又爽| 在线观看精品自拍私拍| 欧美日韩伦理一区二区| 国产精品av免费| 国产酒店精品激情| 久久亚洲国产成人精品性色| 精品国精品国产| 三级在线看中文字幕完整版| 日本成人黄色免费看| 美国欧美日韩国产在线播放| 三级影片在线观看| 日韩精品一区在线观看| 丰满诱人av在线播放| 精品欧美一区二区三区久久久 | 国产91精品久久久久| 国产亚洲欧美日韩在线观看一区二区| 别急慢慢来1978如如2| 国产精品欧美综合在线| 国产视频一区二区三区四区五区| 欧美日韩成人网| 日韩有码一区| jizz欧美性11| 一二三区精品福利视频| 欧美日韩视频精品二区| 国产美女久久久| 国产精品sm| 在哪里可以看毛片| 日韩一区二区精品| 黑人巨大亚洲一区二区久 | 欧美人动性xxxxz0oz| 精品一区久久| 久久99久久99精品免视看婷婷| 久久精品第一页| 亚洲欧美中文在线视频| 天堂久久一区| 国产网站免费在线观看| 国产精品美女久久久久久2018 | 99视频精品在线| 亚洲天堂网视频| 91黑丝高跟在线| 91精品高清| 干b视频在线观看|