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

你知道 Redis 使用的什么協議嗎?

存儲 存儲軟件 Redis
先從持久化說起,雖然一提到 Redis,首先想到的就是緩存,但是 Redis 不僅僅是緩存這么簡單,它的定位是內存型數據庫,可以存儲多種類型的數據結構,還可以當做簡單消息隊列使用。既然是數據庫,持久化功能是必不可少的。

[[353629]]

有個小伙伴面試回來說面試官問了他一些 Redis 問題,但是他好像沒有回答上來。

我說,你 Redis 不是用的很溜嗎,什么問題難住你了。

他說,事情是這樣的,剛開始,問了一些基礎的問題,比如 Redis 的幾種基本數據類型和使用場景,以及主從復制和集群的一些問題,這些都還好。

然后問 Redis 的兩種持久化方式,他說與 RDB 和 AOF 兩種方式,RDB 數據文件小,恢復速度快,但是對性能有影響,而且不適合實時存儲。而 AOF 是現在最常用的持久化方式,它的一大優點就是實時性,并且對 Redis 半身性能影響最小。

那面試又問了,你知道 AOF 持久化之后的文件是什么格式嗎?

答:好像就是文本文件吧?

好,文本文件,那你知道它有什么規則嗎?或者說,它和 Redis 的協議有什么關系嗎?

答:啊,這個,恩,不太清楚呢。

現在就來看一下 AOF 和 RESP 協議的關系

  1. 從兩種持久化方式說起。
  2. RESP 協議是什么
  3. 動手實現一個簡單的協議解析命令行工具

 

先從持久化說起,雖然一提到 Redis,首先想到的就是緩存,但是 Redis 不僅僅是緩存這么簡單,它的定位是內存型數據庫,可以存儲多種類型的數據結構,還可以當做簡單消息隊列使用。既然是數據庫,持久化功能是必不可少的。

Redis 的兩種持久化方式

Redis 提供了兩種持久化方式,一種是 RDB 方式,另外一種是 AOF 方式,AOF 是目前比較流行的持久化方案。

RDB 方式

RDB持久化是通過快照的方式,在指定的時間間隔內將內存中的數據集快照寫入磁盤。它以一種緊湊壓縮的二進制文件的形式出現。可以將快照復制到其他服務器以創建相同數據的服務器副本,或者在重啟服務器后恢復數據。RDB是Redis默認的持久化方式,也是早期版本的必須方案。

RDB 由下面幾個參數控制。

  1. # 設置 dump 的文件名 
  2. dbfilename dump.rdb 
  3.  
  4. # 持久化文件的存儲目錄 
  5. dir ./ 
  6.  
  7. # 900秒內,如果至少有1個key發生變化,就會自動觸發bgsave命令創建快照 
  8. save 900 1 
  9.  
  10. # 300秒內,如果至少有10個key發生變化,就會自動觸發bgsave命令創建快照 
  11. save 300 10 
  12.  
  13. # 60秒內,如果至少有10000個key發生變化,就會自動觸發bgsave命令創建快照 
  14. save 60 10000 

持久化流程

上面說到了配置文件中的幾個觸發持久化的機制,比如 900 秒、300秒、60秒,當然也可以手動執行命令 save或bgsave進行觸發。bgsave是非阻塞版本,通過 fork 出子進程的方式來進行快照生成,而 save會阻塞主進程,不建議使用。

1、首先 bgsave命令觸發;

2、父進程 fork 出一個子進程,這一步是比較重量級的操作,也是 RDB 方式性能不及 AOF 的一個重要原因;

3、父進程 fork 出子進程后就可以正常的相應客戶端發來的其他命令了;

4、子進程開始進行持久化工作,對現有數據進行完整的快照存儲;

5、子進程完成操作后,通知父進程;

 

RDB的優點:

  • RDB是一個緊湊壓縮的二進制文件,代表Redis在某個時間點上的數據 快照。非常適用于備份,全量復制等場景。比如每6小時執行bgsave備份, 并把RDB文件拷貝到遠程機器或者文件系統中(如hdfs),用于災難恢復。
  • Redis加載RDB恢復數據遠遠快于AOF的方式。

RDB的缺點:

  • RDB方式數據沒辦法做到實時持久化/秒級持久化。因為bgsave每次運 行都要執行fork操作創建子進程,屬于重量級操作,頻繁執行成本過高。
  • RDB文件使用特定二進制格式保存,Redis版本演進過程中有多個格式 的RDB版本,存在老版本Redis服務無法兼容新版RDB格式的問題。

AOF 方式

AOF 由下面幾個參數控制。

  1. # appendonly參數開啟AOF持久化 
  2. appendonly yes 
  3.  
  4. # AOF持久化的文件名,默認是appendonly.aof 
  5. appendfilename "appendonly.aof" 
  6.  
  7. # AOF文件的保存位置和RDB文件的位置相同,都是通過dir參數設置的 
  8. dir ./ 
  9.  
  10. # 同步策略 
  11. # appendfsync always 
  12. appendfsync everysec 
  13. # appendfsync no 
  14.  
  15. # aof重寫期間是否同步 
  16. no-appendfsync-on-rewrite no 
  17.  
  18. # 重寫觸發配置 
  19. auto-aof-rewrite-percentage 100 
  20. auto-aof-rewrite-min-size 64mb 
  21.  
  22. # 加載aof出錯如何處理 
  23. aof-load-truncated yes 
  24.  
  25. # 文件重寫策略 
  26. aof-rewrite-incremental-fsync yes 

針對RDB不適合實時持久化的問題,Redis提供了AOF 持久化方式來解決,AOF 也是目前最流程的持久化方式。

AOF(append only file),以獨立日志的方式記錄每次寫命令, 重啟時再重新執行AOF文件中的命令達到恢復數據的目的。

1、所有的寫入命令會追加到aof_buf(緩沖區)中;

2、AOF緩沖區根據對應的策略向硬盤做同步操作;

3、隨著AOF文件越來越大,需要定期對AOF文件進行重寫,達到壓縮的目的;

4、當Redis服務器重啟時,可以加載AOF文件進行數據恢復;

 

AOF 文件里存的是什么

我在本地的測試 redis 環境中隨便刷了幾條命令,然后打開 appendonly.aof 文件查看,發現里面的內容像下面這樣子。

 

RESP 協議Redis客戶端與服務端通信,使用 RESP 協議通信,該協議是專門為 Redis 設計的通信協議,但也可以用于其它客戶端-服務器通信的場景。

RESP 協議

有如下幾個特點:

  • 實現簡單;
  • 快速解析;
  • 可閱讀;

客戶端發送命令給服務端,服務端拿到命令后進行解析,然后執行對應的邏輯,之后返回給客戶端,當然了,這一發一回復都是用的 RESP 協議特點的格式。

一般情況下我們會使用 redis-cli或者一些客戶端工具連接 Redis 服務端。

  1. ./redis-cli 

然后整個交互過程的命令發送和返回結果像下面這樣,綠色部分為發送的命令,紅色部分為返回的結果。

 

這就是我們再熟悉不過的部分了。但是,這并不能看出 RESP 協議的真實面貌。

用 telnet 試試

RESP 是基于 TCP 協議實現的,所以除了用各種客戶端工具以及 Redis 提供的 redis-cli工具,還可以用 telnet 查看,用 telnet 就可以看出 RESP 返回的原始數據格式了。

我本地的 Redis 是用的默認 6379 端口,并且沒有設置 requirepass ,我們來試一下用 telnet 連接。

  1. telnet 127.0.0.1 6379 

然后執行與前面相同的幾條命令,發送和返回的結果如下,綠色部分為發送的命令,紅色為返回的結果。

 

怎么樣,有些命令的返回還好,但是像get str:hello這條,返回的結果除了 world值本身,上面還多了一行 $5,是不是有點迷糊了。

協議規則

請求命令

一條客戶端發往服務器的命令的規則如下:

  1. *<參數數量> CR LF 
  2. $<參數 1 的字節數量> CR LF 
  3. <參數 1 的數據> CR LF 
  4. ... 
  5. $<參數 N 的字節數量> CR LF 
  6. <參數 N 的數據> CR LF 

RESP 用\r\n作為分隔符,會表明此條命令的具體參數個數,在命令上看來,空格分隔的都表示一個參數,例如 set str:hello world 這條命令就是3個參數,會表明每個參數的字符數和具體內容。

用這條命令舉例,對應到 RESP 協議規則上就會變成下面這個樣子:

  1. *3\r\n$3\r\nset\r\n$9str:hello\r\n$5world\r\n 

 

服務端回復

Redis 命令會返回多種不同類型的回復。

通過檢查服務器發回數據的第一個字節, 可以確定這個回復是什么類型:

1、狀態回復(status reply)的第一個字節是 "+"

比如 ping命令的回復,+PONG\r\n

2、錯誤回復(error reply)的第一個字節是 "-"

比如輸入一個 redis 中不存在的命令,或者給某些命令設置錯誤的參數,例如輸入auth,auth 命令后面需要有一個密碼參數的,如果不輸入就會返回錯誤回復類型。

-ERR wrong number of arguments for 'auth' command\r\n

3、整數回復(integer reply)的第一個字節是 ":"

例如 INCR、DECR 自增自減命令,返回的結果是這樣的 :2\r\n

4、批量回復(bulk reply)的第一個字節是 "$"

例如對 string 類型執行 get 操作,$5\r\nworld\r\n,$后面的數字 5 表示返回的結果有 5 個字符,后面是返回結果的實際內容。

5、多條批量回復(multi bulk reply)的第一個字節是 "*"

例如 LRANGE key start stop或者 hgetall等返回多條結果的命令,比如 lrange命令返回的結果:

  1. *2\r\n$6\r\nnews-2\r\n$6\r\nnews-1\r\n 

多條批量回復和前面說的客戶端發送命令的格式是一致的。

實現一個簡單的 Redis 交互工具

了解了 Redis 的協議規則,我們就可以自己寫一個簡單的客戶端了。當然,通過官網我們可以看到已經有各種語言,而且每種語言有不止一個客戶端工具了。

 

比如 Java 語言的客戶端就有這么多種,其中 Jedis 應該是用的最多了,既然已經有這么好用的輪子了,當然沒必要重復造輪子,主要還是為了加深印象。

 

RESP 協議基于 TCP 協議,可以使用 socket 方式進行連接。

  1. public Socket createSocket() throws IOException { 
  2.   Socket socket = null
  3.   try { 
  4.     socket = new Socket(); 
  5.     socket.setReuseAddress(true); 
  6.     socket.setKeepAlive(true); 
  7.     socket.setTcpNoDelay(true); 
  8.     socket.setSoLinger(true, 0); 
  9.  
  10.     socket.connect(new InetSocketAddress(host, port), DEFAULT_TIMEOUT); 
  11.     socket.setSoTimeout(DEFAULT_TIMEOUT); 
  12.     outputStream = socket.getOutputStream(); 
  13.     inputStream = socket.getInputStream(); 
  14.     return socket; 
  15.   } catch (Exception ex) { 
  16.     if (socket != null) { 
  17.       socket.close(); 
  18.     } 
  19.     throw ex; 
  20.   } 

然后剩下的就是對返回的結果進行字符串的解析了,我做的工具就到簡陋的到這一步了,下面是一些簡單命令的返回輸出。

 

代碼已放到 github 上,有興趣的可以 clone 下來看一下。

https://github.com/huzhicheng/medis

本文轉載自微信公眾號「 古時的風箏」,可以通過以下二維碼關注。轉載本文請聯系 古時的風箏公眾號。

 

責任編輯:武曉燕 來源: 古時的風箏
相關推薦

2024-01-15 12:16:37

2010-09-17 15:32:09

Linux網絡協議棧

2014-08-21 10:27:58

創業初創技術

2020-02-20 08:30:49

OSPF網絡協議路由協議

2017-10-16 13:45:04

2021-08-29 18:01:57

HTTP協議版本

2023-11-06 18:33:19

分庫分表數據庫

2019-05-30 22:27:51

云計算成本云服務

2022-09-28 18:16:34

JavaJDK

2015-12-01 13:33:51

UnikernelLinux運維

2024-04-30 09:02:48

2023-12-20 08:23:53

NIO組件非阻塞

2021-11-12 05:59:23

容災備份5G

2023-06-30 08:26:24

Java注解Java程序元素

2020-10-08 18:58:46

條件變量開發線程

2023-10-16 23:12:02

Redis數據結構

2023-08-29 09:31:01

Scrapy網頁爬蟲

2019-08-16 09:07:47

RedisNoSQL數據庫

2016-09-29 15:43:33

2022-11-28 00:04:17

點贊
收藏

51CTO技術棧公眾號

神马亚洲视频| 国产一级生活片| 最新欧美电影| 亚洲欧洲精品天堂一级| av一区二区三区免费| 可以在线观看av的网站| 成人3d精品动漫精品一二三| 欧美一区二区三区在线观看 | 婷婷五月色综合香五月| 欧美亚洲日本国产| 99热久久这里只有精品| 可以在线观看的av| 国产乱人伦精品一区二区在线观看| 欧美激情亚洲自拍| 欧美人妻一区二区三区| 亚洲日本一区二区三区在线| 91国在线观看| 男人添女人下部视频免费| 免费福利在线观看| 成人午夜精品一区二区三区| 国产精品久久久久久亚洲影视| 亚洲欧美日韩第一页| 欧美日韩导航| 日韩一区和二区| 最新中文字幕2018| 久久精品一区中文字幕| 国产精品无码网站| 久久九九精品视频| 欧美日韩卡一卡二| 十八禁视频网站在线观看| 日本乱理伦在线| 国产精品久久久久久久久果冻传媒 | 在线观看亚洲天堂| 午夜日本精品| 视频在线观看99| 午夜理伦三级做爰电影| 国产精品1luya在线播放| 在线播放中文字幕一区| 久久久精品三级| 国产一二三在线| 亚洲国产中文字幕| 黄色一级片国产| 中文字幕中文字幕在线中高清免费版 | 色狠狠色狠狠综合| 日韩少妇内射免费播放| 国产丝袜在线观看视频| 一区二区视频在线| 国产成人免费高清视频| 国产精品实拍| 亚洲欧洲日韩综合一区二区| 五月天亚洲综合情| 国内精品一区视频| 国产视频一区二区在线观看| 欧美xxxx黑人又粗又长密月| 三级黄视频在线观看| av不卡一区二区三区| 国产精品久久波多野结衣| 成人av免费播放| 国产成人综合在线| 国产精品国模大尺度私拍| 性做久久久久久久久久| 国产激情视频一区二区三区欧美 | 91精品国产99| 国产精品100| 久久精品卡一| 国产精品av在线播放| 无码人妻熟妇av又粗又大| 麻豆亚洲精品| 国产狼人综合免费视频| 国产又粗又猛又爽又黄的| 国产精品一区久久久久| 国产精品免费看一区二区三区| 你懂的网站在线| 久久综合九色综合97婷婷女人| 日本欧美精品久久久| 电影在线一区| 亚洲欧美日韩在线| 欧妇女乱妇女乱视频| 成av人片在线观看www| 色综合激情久久| 天天综合网久久| 亚洲1区在线| 日韩电影中文字幕av| 亚洲AV无码国产成人久久| 日韩专区精品| 欧美日韩国产va另类| www.国产com| 麻豆传媒一区二区三区| av成人观看| 国产视频精选在线| 亚洲精品久久嫩草网站秘色| 香港三级韩国三级日本三级| 丁香婷婷久久| 亚洲成色777777在线观看影院| 久久人人妻人人人人妻性色av| 狠狠色狠狠色综合婷婷tag| www.亚洲免费视频| 在线免费观看亚洲视频| 久久激情网站| 亚洲综合在线中文字幕| 你懂的在线视频| 亚洲男人都懂的| 国产麻花豆剧传媒精品mv在线| 日韩免费小视频| 精品日韩一区二区| 精品成人无码一区二区三区| 午夜国产欧美理论在线播放| 国产ts一区二区| 性一交一乱一乱一视频| 欧美国产一区二区| 男女视频网站在线观看| 亚洲视频自拍| 亚洲视频在线看| 久久综合综合久久| 久草中文综合在线| 欧美三级电影在线播放| 秋霞在线午夜| 欧美精品高清视频| 中文字幕免费视频| 亚洲清纯自拍| 成人动漫在线视频| 色大18成网站www在线观看| 精品久久久久久中文字幕| 免费成年人高清视频| 欧美**vk| 欧美一级电影免费在线观看| 国产黄色av片| 中文字幕一区在线观看| 狠狠操精品视频| 卡通动漫国产精品| 欧美劲爆第一页| av免费在线不卡| 国产精品传媒入口麻豆| 欧在线一二三四区| 竹菊久久久久久久| 97**国产露脸精品国产| 亚洲国产剧情在线观看| 亚洲乱码中文字幕综合| 黄色aaaaaa| 亚洲精品va| 91亚洲永久免费精品| 久久久久久久久免费视频| 91国产免费观看| 欧美做受xxxxxⅹ性视频| 9色精品在线| 精品蜜桃传媒| 狂野欧美性猛交xxxxx视频| 欧美军同video69gay| yjizz视频| 在线电影一区| 亚洲精品免费网站| 在线看黄色av| 欧美日韩亚洲高清一区二区| 中文字幕第20页| 久久狠狠婷婷| 日韩欧美第二区在线观看| 日韩免费va| 国产一区二区三区毛片| 这里只有精品9| 亚洲欧美一区二区视频| 亚洲黄色av片| 中文字幕亚洲精品乱码| yy111111少妇影院日韩夜片| 国精一区二区三区| 亚洲精品短视频| 日韩电影在线观看一区二区| 国产午夜亚洲精品羞羞网站| 亚洲欧美国产日韩综合| 久久精品免费一区二区三区| 亚洲最大福利视频网| 女囚岛在线观看| 日韩精品中文字幕在线观看| 欧美成人一区二区视频| 亚洲欧洲日本在线| 乱码一区二区三区| 国产欧美大片| 水蜜桃亚洲精品| 蜜桃精品一区二区三区| 97久久国产精品| 黄色在线观看网| 91精品综合久久久久久| 日本三级黄色大片| 久久精品一区八戒影视| 国产亚洲视频一区| 亚洲国产精品第一区二区| 欧美一进一出视频| 伊人久久一区| 91av视频在线播放| 思思99re6国产在线播放| 精品国产1区2区3区| 久久久久久久久久久影院| 中文字幕一区日韩精品欧美| 国产av一区二区三区传媒| 模特精品在线| 久久精品在线免费视频| 婷婷成人综合| 亚洲尤物视频网| 日韩三级影视| 欧美激情按摩在线| 国产在线观看免费| 日韩精品一区二区三区在线观看| 国产精品久久久久久久久久久久久久久久久| 中文字幕精品在线不卡| 激情小说欧美色图| 人人超碰91尤物精品国产| 真实国产乱子伦对白视频| 精品黄色一级片| 国产欧美在线一区二区| 亚洲黑人在线| 国产成人aa精品一区在线播放| 影音先锋在线播放| 中文字幕日韩精品有码视频| 亚洲精华国产精华精华液网站| 在线视频观看一区| 亚洲国产综合久久| 亚洲精品视频一区| 四虎国产成人精品免费一女五男| 99久久综合精品| 黄色片免费网址| 男人的天堂久久精品| 久久久久久久久久久视频| 欧美精品九九| 制服国产精品| 第九色区aⅴ天堂久久香| 美女黄毛**国产精品啪啪| 日韩欧美一级| 成人激情在线播放| 国产成人精品一区二区三区在线 | 精品视频一区二区在线观看| 国产精品你懂的在线欣赏| 无码人妻精品一区二区三区温州| 国产成人免费在线观看不卡| 污网站在线免费| 麻豆极品一区二区三区| 乱子伦视频在线看| 国产亚洲精品自拍| 日本在线xxx| 亚洲精品社区| 九色自拍视频在线观看| 亚洲午夜av| 男人插女人视频在线观看| 一区二区三区四区在线观看国产日韩 | 国产成人手机在线| 欧美一区二区人人喊爽| 国产一区二区波多野结衣 | 999免费视频| 欧美美女直播网站| 一级黄色大毛片| 欧美男人的天堂一二区| 国产精品视频在线观看免费| 欧美精品黑人性xxxx| 国产乱码精品一区二三区蜜臂| 欧美人伦禁忌dvd放荡欲情| 亚洲一级在线播放| 制服丝袜成人动漫| 国产熟女一区二区三区五月婷| 91精品久久久久久久99蜜桃| 99久久久久成人国产免费| 日韩一级片在线观看| 99热这里只有精品5| 日韩欧美精品三级| 高潮一区二区三区乱码| 亚洲精品91美女久久久久久久| 四虎在线视频免费观看| 精品无人区太爽高潮在线播放| 欧洲视频在线免费观看| 一本色道久久88亚洲综合88| 亚洲欧美视频一区二区| 久久大大胆人体| av在线资源| 日韩av快播网址| 欧美在线se| aaa级精品久久久国产片| 欧美xxxx在线| 先锋影音日韩| 欧美体内she精视频在线观看| 国产3p露脸普通话对白| 美女爽到呻吟久久久久| 一道本在线免费视频| 国产91精品在线观看| 亚洲av片不卡无码久久| 中文字幕av在线一区二区三区| 性色av无码久久一区二区三区| 亚洲成人综合网站| 亚洲精品毛片一区二区三区| 91精品蜜臀在线一区尤物| 污视频网站免费观看| 中文字幕亚洲在线| 麻豆av在线播放| 国产成人精品午夜| 日本精品在线播放| 麻豆精品传媒视频| 一区二区影院| 少妇高清精品毛片在线视频| 国产在线精品一区二区夜色| 欧美深性狂猛ⅹxxx深喉 | 国内精品伊人久久久久av一坑| 一级黄色电影片| 国产精品丝袜黑色高跟| 国产一级视频在线| 欧美日韩一本到| 日韩在线观看视频一区| 日日狠狠久久偷偷四色综合免费| ****av在线网毛片| 成人动漫网站在线观看| 性欧美lx╳lx╳| 亚洲五码在线观看视频| 日韩激情av在线| 国产极品一区二区| 亚洲欧洲色图综合| 国产熟妇一区二区三区四区| 日韩精品一区在线| 美女黄视频在线观看| 欧洲午夜精品久久久| 999国产精品一区| 艳色歌舞团一区二区三区| 欧美一级专区| www.啪啪.com| 亚洲精品中文字幕乱码三区| 久久久国产免费| 亚洲欧美国产视频| 黄视频在线免费看| 亚洲www视频| 欧美肥老太太性生活| 无遮挡又爽又刺激的视频| 不卡一卡二卡三乱码免费网站| 午夜国产福利一区二区| 欧美精品粉嫩高潮一区二区| av在线之家电影网站| 国产97人人超碰caoprom| 日本在线中文字幕一区| 欧美做暖暖视频| 国产剧情一区二区| 日韩三级在线观看视频| 欧美群妇大交群的观看方式| 国产三级在线| 国产成人久久久精品一区| 天天躁日日躁狠狠躁欧美| 成人在线免费观看av| 99热这里都是精品| 日产精品久久久久| 精品国产污网站| av老司机在线观看| 国产欧美亚洲日本| 99国产精品| 亚洲の无码国产の无码步美| 午夜影院久久久| 亚洲av成人精品毛片| 5566成人精品视频免费| 亚洲v天堂v手机在线| 青青草原av在线播放| 久久老女人爱爱| 波多野结衣午夜| 中文字幕精品一区二区精品| 免费在线成人激情电影| 亚洲人体一区| 国产毛片精品一区| 麻豆亚洲av熟女国产一区二| 欧美精品一区二区不卡| 国产福利电影在线播放| 蜜桃狠狠色伊人亚洲综合网站| 久久午夜精品一区二区| 五月天婷婷丁香网| 欧美高清性hdvideosex| 亚洲欧美成人影院| 国产91一区二区三区| 亚洲福利国产| 一级黄色性视频| 在线不卡中文字幕播放| 青春草在线视频| 久久精品综合一区| 日韩电影一区二区三区四区| 国产精品夜夜夜爽阿娇| 日韩免费性生活视频播放| 午夜av不卡| 亚洲一区二区三区涩| 成人综合激情网| 精品人妻无码一区二区性色| 综合网中文字幕| 成人三级av在线| 日本熟妇人妻中出| 亚洲激情网站免费观看| 欧美日韩在线精品一区二区三区激情综| 国产成人一区二区三区电影| 亚洲天天影视网| 91玉足脚交白嫩脚丫| 欧美日韩国产综合一区二区三区| 亚洲小说区图片区都市| 欧美日韩国产精品一卡| 黄一区二区三区| 综合激情网五月| 久久成人综合视频| 自拍偷拍欧美一区| 日韩欧美理论片| 一本色道久久综合亚洲aⅴ蜜桃| 欧美一区二区三区在线观看免费| 国产一区福利视频| 久久激情五月激情| 99热只有这里有精品| 日韩在线精品视频|