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

Redis中五大數(shù)據(jù)結構的底層實現(xiàn)

運維 數(shù)據(jù)庫運維 Redis
下面讓我們來詳細介紹一下redis中五大數(shù)據(jù)結構的底層實現(xiàn)。讓我們一起來看看吧。

一、概述

Redis是一個開源的使用ANSI C語言編寫、遵守BSD協(xié)議、支持網絡、可基于內存亦可持久化的日志型、Key-Value數(shù)據(jù)庫,與Memcached類似,卻優(yōu)于Memcached的一個高性能的key-value數(shù)據(jù)庫。下面讓我們來詳細介紹一下redis中五大數(shù)據(jù)結構的底層實現(xiàn)。

二、簡單動態(tài)字符串

1、概述

Redis是一個開源的使用ANSI C語言編寫的key-value 數(shù)據(jù)庫,我們可能會較為主觀的認為 Redis 中的字符串就是采用了C語言中的傳統(tǒng)字符串表示,但其實不然,Redis沒有直接使用C語言傳統(tǒng)的字符串表示,而是自己構建了一種名為簡單動態(tài)字符串(simple dynamic string SDS)的抽象類型,并將SDS用作Redis的默認字符串表示:redis>SET msg "hello world"

SDS 定義: 

  1. struct sdshdr{  
  2.      //記錄buf數(shù)組中已使用字節(jié)的數(shù)量  
  3.      //等于 SDS 保存字符串的長度  
  4.      int len;  
  5.      //記錄 buf 數(shù)組中未使用字節(jié)的數(shù)量  
  6.      int free;  
  7.      //字節(jié)數(shù)組,用于保存字符串  
  8.      char buf[];  

圖片來源:《Redis設計與實現(xiàn)》

我們看上面對于 SDS 數(shù)據(jù)類型的定義:

  •  len 保存了SDS保存字符串的長度
  •  buf[] 數(shù)組用來保存字符串的每個元素
  •  free j記錄了 buf 數(shù)組中未使用的字節(jié)數(shù)量  

2、與C語言相比較 

一般來說,SDS 除了保存數(shù)據(jù)庫中的字符串值以外,SDS 還可以作為緩沖區(qū)(buffer):包括 AOF 模塊中的AOF緩沖區(qū)以及客戶端狀態(tài)中的輸入緩沖區(qū)。后面在介紹Redis的持久化時會進行介紹。

三、鏈表

1、概述

鏈表提供了高效的節(jié)點重排能力,以及順序性的節(jié)點訪問方式,并且可以通過增刪節(jié)點來靈活地調整鏈表的長度。

鏈表在Redis 中的應用非常廣泛,比如列表鍵的底層實現(xiàn)之一就是鏈表。當一個列表鍵包含了數(shù)量較多的元素,又或者列表中包含的元素都是比較長的字符串時,Redis 就會使用鏈表作為列表鍵的底層實現(xiàn)。

每個鏈表節(jié)點使用一個listNode結構表示(adlist.h/listNode): 

  1. typedef  struct listNode{  
  2.        //前置節(jié)點  
  3.        struct listNode *prev;  
  4.        //后置節(jié)點  
  5.        struct listNode *next;  
  6.        //節(jié)點的值  
  7.        void *value;    
  8. }listNode 

鏈表的數(shù)據(jù)結構: 

  1. typedef struct list{  
  2.       //表頭節(jié)點  
  3.      listNode *head;  
  4.      //表尾節(jié)點  
  5.      listNode *tail;  
  6.      //鏈表所包含的節(jié)點數(shù)量  
  7.      unsigned long len;  
  8.      //節(jié)點值復制函數(shù)  
  9.      void (*free) (void *ptr);  
  10.      //節(jié)點值釋放函數(shù)  
  11.      void (*free) (void *ptr);  
  12.      //節(jié)點值對比函數(shù)  
  13.      int (*match) (void *ptr,void *key);  
  14. }list; 

組成結構圖

2、Redis鏈表特性

  •  雙端:鏈表具有前置節(jié)點和后置節(jié)點的引用,獲取這兩個節(jié)點時間復雜度都為O(1)。
  •  無環(huán):表頭節(jié)點的 prev 指針和表尾節(jié)點的 next 指針都指向 NULL,對鏈表的訪問都是以 NULL 結束。 
  •  帶鏈表長度計數(shù)器:通過 len 屬性獲取鏈表長度的時間復雜度為 O(1)。
  •  多態(tài):鏈表節(jié)點使用 void* 指針來保存節(jié)點值,可以保存各種不同類型的值。

四、字典

1、概述

字典又稱為符號表或者關聯(lián)數(shù)組、或映射(map),是一種用于保存鍵值對的抽象數(shù)據(jù)結構。字典中的每一個鍵 key 都是唯一的,通過 key 可以對值來進行查找或修改。C 語言中沒有內置這種數(shù)據(jù)結構的實現(xiàn),所以字典依然是 Redis自己構建的。

哈希表結構定義: 

  1. typedef struct dictht{  
  2.      //哈希表數(shù)組  
  3.      dictEntry **table;  
  4.      //哈希表大小  
  5.      unsigned long size;  
  6.      //哈希表大小掩碼,用于計算索引值  
  7.      //總是等于 size-1  
  8.      unsigned long sizemask;  
  9.      //該哈希表已有節(jié)點的數(shù)量  
  10.      unsigned long used;  
  11. }dictht 

哈希表是由數(shù)組 table 組成,table 中每個元素都是指向 dict.h/dictEntry 結構,dictEntry 結構定義如下: 

  1. typedef struct dictEntry{  
  2.      //鍵  
  3.      void *key;  
  4.      //值  
  5.      union{  
  6.           void *val;  
  7.           uint64_tu64;  
  8.           int64_ts64;  
  9.      }v;  
  10.      //指向下一個哈希表節(jié)點,形成鏈表  
  11.      struct dictEntry *next; 
  12. }dictEntry 

key 用來保存鍵,val 屬性用來保存值,值可以是一個指針,也可以是uint64_t整數(shù),也可以是int64_t整數(shù)。

注意這里還有一個指向下一個哈希表節(jié)點的指針,我們知道哈希表最大的問題是存在哈希沖突,如何解決哈希沖突,有開放地址法和鏈地址法。這里采用的便是鏈地址法,通過next這個指針可以將多個哈希值相同的鍵值對連接在一起,用來解決哈希沖突。

五、跳躍表

1、概述

跳躍表(skiplist)是一種有序數(shù)據(jù)結構,它通過在每個節(jié)點中維持多個指向其他節(jié)點的指針,從而達到快速訪問節(jié)點的目的。跳躍表是一種隨機化的數(shù)據(jù),跳躍表以有序的方式在層次化的鏈表中保存元素,效率和平衡樹媲美 ——查找、刪除、添加等操作都可以在對數(shù)期望時間下完成,并且比起平衡樹來說,跳躍表的實現(xiàn)要簡單直觀得多。

Redis 只在兩個地方用到了跳躍表,一個是實現(xiàn)有序集合鍵,另外一個是在集群節(jié)點中用作內部數(shù)據(jù)結構。

Redis中跳躍表節(jié)點定義如下: 

  1. typedef struct zskiplistNode {  
  2.      //層  
  3.      struct zskiplistLevel{  
  4.            //前進指針  
  5.            struct zskiplistNode *forward;  
  6.            //跨度  
  7.            unsigned int span;  
  8.      }level[];  
  9.      //后退指針  
  10.      struct zskiplistNode *backward;  
  11.      //分值  
  12.      double score;  
  13.      //成員對象  
  14.      robj *obj;  
  15. } zskiplistNode 

多個跳躍表節(jié)點構成一個跳躍表: 

  1. typedef struct zskiplist{  
  2.      //表頭節(jié)點和表尾節(jié)點  
  3.      structz skiplistNode *header, *tail;  
  4.      //表中節(jié)點的數(shù)量  
  5.      unsigned long length;  
  6.      //表中層數(shù)最大的節(jié)點的層數(shù)  
  7.      int level;  
  8. }zskiplist; 
  •  header和tail指針分別指向跳躍表的表頭和表尾節(jié)點;
  •  length屬性記錄節(jié)點的數(shù)量;
  •  level屬性記錄層數(shù)最高的幾點的層數(shù)量;
  •  下圖分別展示了完整的跳躍表和單個節(jié)點的詳細結構圖:

2、特性

跳表具有如下性質:

  •  由很多層結構組成
  •  每一層都是一個有序的鏈表
  •  最底層(Level 1)的鏈表包含所有元素
  •  如果一個元素出現(xiàn)在 Level i 的鏈表中,則它在 Level i 之下的鏈表也都會出現(xiàn)。
  •  每個節(jié)點包含兩個指針,一個指向同一鏈表中的下一個元素,一個指向下面一層的元素。

六、整數(shù)集合

1、概述

《Redis 設計與實現(xiàn)》 中這樣定義整數(shù)集合:“整數(shù)集合是集合建的底層實現(xiàn)之一,當一個集合中只包含整數(shù),且這個集合中的元素數(shù)量不多時,redis就會使用整數(shù)集合intset作為集合的底層實現(xiàn)。”

我們可以這樣理解整數(shù)集合,他其實就是一個特殊的集合,里面存儲的數(shù)據(jù)只能夠是整數(shù),并且數(shù)據(jù)量不能過大。 

  1. typedef struct intset{  
  2.      //編碼方式  
  3.      uint32_t encoding;  
  4.      //集合包含的元素數(shù)量  
  5.      uint32_t length;  
  6.      //保存元素的數(shù)組  
  7.      int8_t contents[];  
  8. }intset; 

我們觀察一下一個完成的整數(shù)集合結構圖:   

  • encoding:用于定義整數(shù)集合的編碼方式
  • length:用于記錄整數(shù)集合中變量的數(shù)量
  • contents:用于保存元素的數(shù)組,雖然我們在數(shù)據(jù)結構圖中看到,intset將數(shù)組定義為int8_t,但實際上數(shù)組保存的元素類型取決于encoding

2、特性

  •  整數(shù)集合是集合建的底層實現(xiàn)之一
  •  整數(shù)集合的底層實現(xiàn)為數(shù)組,這個數(shù)組以有序,無重復的范式保存集合元素,在有需要時,程序會根據(jù)新添加的元素類型改變這個數(shù)組的類型
  •  升級操作為整數(shù)集合帶來了操作上的靈活性,并且盡可能地節(jié)約了內存2

    整數(shù)集合只支持升級操作,不支持降級操作

七、壓縮列表

1、概述

壓縮列表是列表鍵和哈希鍵的底層實現(xiàn)之一。當一個列表鍵只包含少量列表項,并且每個列表項要么就是小整數(shù),要么就是長度比較短的字符串,那么Redis 就會使用壓縮列表來做列表鍵的底層實現(xiàn)。

一個壓縮列表的組成如下:  

  •  zlbytes:用于記錄整個壓縮列表占用的內存字節(jié)數(shù)
  •  zltail:記錄要列表尾節(jié)點距離壓縮列表的起始地址有多少字節(jié)
  •  zllen:記錄了壓縮列表包含的節(jié)點數(shù)量
  •  entryX:要說列表包含的各個節(jié)點
  •  zlend:用于標記壓縮列表的末端

2、特性

  •  壓縮列表是一種為了節(jié)約內存而開發(fā)的順序型數(shù)據(jù)結構
  •  壓縮列表被用作列表鍵和哈希鍵的底層實現(xiàn)之一
  •  壓縮列表可以包含多個節(jié)點,每個節(jié)點可以保存一個字節(jié)數(shù)組或者整數(shù)值
  •  添加新節(jié)點到壓縮列表,可能會引發(fā)連鎖更新操作。 

 

責任編輯:龐桂玉 來源: DBAplus社群
相關推薦

2023-10-18 15:17:24

Redis數(shù)據(jù)結構Java

2012-08-13 14:27:31

大數(shù)據(jù)

2017-01-15 10:56:57

大數(shù)據(jù)非結構化過期

2021-09-08 17:17:43

大數(shù)據(jù)智慧城市大數(shù)據(jù)應用

2019-06-21 15:20:05

Redis數(shù)據(jù)結構數(shù)據(jù)庫

2013-01-10 10:30:32

大數(shù)據(jù)預測Hadoop

2015-10-20 09:42:36

醫(yī)療大數(shù)據(jù)應用

2020-11-04 07:34:02

Redis數(shù)據(jù)類型

2022-03-14 09:46:10

Hadoop大數(shù)據(jù)

2019-10-29 08:59:16

Redis底層數(shù)據(jù)

2025-01-15 12:20:41

2025-01-14 08:00:00

RedisList數(shù)據(jù)結構

2022-08-08 10:20:19

數(shù)據(jù)安全首席信息安全官

2015-08-26 10:46:16

大數(shù)據(jù)

2019-05-27 23:21:47

大數(shù)據(jù)云遷移企業(yè)

2019-06-12 22:51:57

Redis軟件開發(fā)

2012-02-15 09:29:58

大數(shù)據(jù)IT

2019-09-27 08:53:47

Redis數(shù)據(jù)C語言

2019-04-17 15:35:37

Redis數(shù)據(jù)庫數(shù)據(jù)結構

2024-05-28 11:44:54

Redis數(shù)據(jù)結構數(shù)據(jù)庫
點贊
收藏

51CTO技術棧公眾號

亚洲青色在线| 日韩高清三区| 亚洲成人精品在线观看| 国偷自产av一区二区三区小尤奈| 欧美日韩精品区| av亚洲在线观看| 日韩一区二区免费视频| 日韩少妇内射免费播放| 成人高清免费在线播放| 国产成人综合亚洲网站| 青草青草久热精品视频在线观看| 农村老熟妇乱子伦视频| 亚洲日本va中文字幕| 色婷婷精品久久二区二区蜜臂av| 亚洲一区二区在线观| 国产成人无码www免费视频播放| 亚洲欧美清纯在线制服| 日韩有码片在线观看| 艳妇乳肉亭妇荡乳av| 日韩亚洲国产免费| 色综合视频在线观看| 在线观看18视频网站| 黄色片在线免费看| 成人午夜私人影院| 国产区亚洲区欧美区| 天天综合天天干| 欧美在线网址| 日韩在线中文视频| 波多野结衣av在线观看| 国产欧美啪啪| 91精品一区二区三区在线观看| 日韩欧美亚洲天堂| 亚洲奶水xxxx哺乳期| 欧美国产精品v| 久久精彩视频| 欧美综合视频在线| 国产福利电影一区二区三区| 国产精品一区二区三区久久| 亚洲免费黄色网址| 亚洲三级色网| 欧美激情极品视频| 日韩在线不卡av| 国产在视频线精品视频www666| 亚洲国产精品va在线观看黑人| 欧美又黄又嫩大片a级| 日韩av电影资源网| 精品日韩美女的视频高清| 国产精品无码免费专区午夜| 成人影欧美片| 国产精品国产成人国产三级| 日韩在线电影一区| 美丽的姑娘在线观看免费动漫| 成人av免费在线观看| 99久久精品免费看国产四区 | 99精品综合| 亚洲性生活视频| 波多野结衣a v在线| 网友自拍区视频精品| 亚洲精品电影网在线观看| 折磨小男生性器羞耻的故事| 试看120秒一区二区三区| 欧美一区二区播放| www日本在线观看| 亚洲日本va| 欧美精品一区二区不卡| 野战少妇38p| 欧美大奶一区二区| 亚洲免费伊人电影在线观看av| 女人被狂躁c到高潮| 久久99免费视频| 一个人www欧美| 乱老熟女一区二区三区| 天天射成人网| 欧美高清视频一区二区| 日本少妇毛茸茸高潮| 一区二区精品| 国产精品av电影| 在线免费看av的网站| 国产在线播放一区二区三区| 99re在线播放| 桃花色综合影院| 91麻豆视频网站| 性刺激综合网| 国产精品剧情一区二区在线观看| 一区二区三区四区高清精品免费观看| 51xx午夜影福利| 国产美女高潮在线| 在线观看免费亚洲| 99精品视频国产| 果冻天美麻豆一区二区国产| 亚洲欧洲xxxx| 亚洲综合网在线| 一区二区三区四区五区精品视频| 国产成人免费av电影| 91成人国产综合久久精品| 高清免费成人av| 免费h精品视频在线播放| www.中文字幕久久久| 亚洲精品日日夜夜| 国产三区在线视频| 99综合久久| 亚洲老头老太hd| 国产午夜精品理论片| 亚洲精品社区| 成人免费直播live| 亚洲欧洲国产综合| 亚洲人xxxx| www国产黄色| 日韩黄色av| 亚洲欧美中文日韩在线| 九九视频免费观看| 日韩国产在线一| 国产成人精品福利一区二区三区 | 最新91在线视频| 国产午夜精品无码一区二区| 蜜臀a∨国产成人精品| 国产精品一区二区在线观看| 91网在线播放| 天天av天天翘天天综合网色鬼国产| 尤物国产在线观看| 亚洲精品一级二级三级| 欧美国产日韩一区| 91精品视频免费在线观看| 91美女片黄在线观看91美女| 欧美激情亚洲天堂| 4438五月综合| 中文字幕av一区| 久久久久99精品成人片三人毛片| 韩国av一区二区三区四区| 欧美色欧美亚洲另类七区| 欧美人与牲禽动交com | 特黄aaaaaaaaa真人毛片| 国产精品素人视频| www.日日操| 香蕉国产成人午夜av影院| 欧美国产中文字幕| 精品人妻无码一区二区| 中文字幕一区免费在线观看| 男女视频一区二区三区| 丝袜av一区| 97精品免费视频| 亚洲精品一区二区口爆| 亚洲狠狠丁香婷婷综合久久久| 蜜臀一区二区三区精品免费视频| 国产日产精品_国产精品毛片| 97精品在线视频| 色屁屁草草影院ccyycom| 一区二区激情小说| 18禁一区二区三区| 韩国欧美一区| 国产v亚洲v天堂无码| 日韩伦理电影网站| 欧美成人三级电影在线| 青娱乐国产在线| 国产福利91精品| 欧美精品在欧美一区二区| 日本一区二区三区播放| 蜜臀久久99精品久久久久久宅男 | 精品国产免费人成网站| 日韩av一区在线观看| 成人毛片18女人毛片| 99天天综合性| 一本色道无码道dvd在线观看| 女人av一区| 国产精品久久久久9999| 日本韩国在线视频爽| 4438x亚洲最大成人网| 国产盗摄x88av| 高清成人在线观看| 国产乱子伦农村叉叉叉| 伊人久久大香线蕉综合网站| 国产精品高清在线观看| 麻豆tv免费在线观看| 日韩视频免费观看高清完整版在线观看 | 婷婷五月综合久久中文字幕| 欧美日韩美女视频| xxxx日本黄色| 国产一区二区三区免费播放| 大西瓜av在线| 曰本一区二区三区视频| 国产美女久久精品香蕉69| 国产精品va在线观看视色| 日韩美一区二区三区| 日韩一区二区视频在线| 中文子幕无线码一区tr| 91在线第一页| 99热免费精品| 日韩色妇久久av| 精品伊人久久| 欧美又大又硬又粗bbbbb| 91精品国产综合久久久久久豆腐| 日韩一区二区三区观看| 国产无人区码熟妇毛片多| 国产精品久久久久永久免费观看 | 国产麻豆精品久久| 国产综合色香蕉精品| 国产福利在线免费观看| 亚洲午夜激情免费视频| 国产哺乳奶水91在线播放| 欧美日韩国产中文字幕| 91大神福利视频| www.在线成人| 亚洲精品综合在线观看| 亚洲黄色影片| 一区二区三区我不卡| 激情小说亚洲色图| 成人黄色免费看| av资源亚洲| 久久99精品久久久久久噜噜 | 国产精品网友自拍| 喷水视频在线观看| 国产一区亚洲一区| 色诱视频在线观看| 亚洲第一精品影视| 黄瓜视频免费观看在线观看www| 玖玖玖免费嫩草在线影院一区| 国产色视频一区| 成人一区福利| 97热精品视频官网| 色呦呦视频在线观看| 色老头一区二区三区| 欧美日本网站| 日韩av综合中文字幕| 99久久婷婷国产一区二区三区| 色综合久久久久综合体| 国产在线视频卡一卡二| 亚洲色图.com| 影音先锋男人看片资源| 久久综合久久综合久久综合| 一本色道久久hezyo无码| 国产精品资源站在线| 小泽玛利亚视频在线观看| 久久av最新网址| 欧美 丝袜 自拍 制服 另类| 好看不卡的中文字幕| 精品国产三级a∨在线| 国产精品久久久久久久| 午夜欧美一区二区三区免费观看| 免费av一区| 免费看成人午夜电影| 欧美精品国产白浆久久久久| 国产有色视频色综合| 91麻豆精品激情在线观看最新| 成人午夜小视频| 欧美天堂一区| 91精品国产自产在线观看永久| 日本精品不卡| 国产成人精品a视频一区www| 欧美aa免费在线| 欧美孕妇性xx| 偷拍视频一区二区三区| 日本国产高清不卡| 日韩中文影院| 国产精品午夜视频| 婷婷成人av| 亚洲综合在线做性| 五月亚洲婷婷| 国内视频一区二区| 奇米亚洲欧美| 亚洲国产精品www| 91久久国产| av一区二区三区免费观看| 激情久久综合| 超碰网在线观看| 蜜桃一区二区三区在线| 欧美激情国内自拍| 国产不卡在线一区| 日本国产在线视频| 91捆绑美女网站| 亚洲区免费视频| 欧美极品aⅴ影院| 在线观看亚洲网站| 一区二区三区在线播放| 日本中文字幕免费观看| 一本色道久久综合亚洲精品按摩| 青青艹在线观看| 欧美一级片在线看| 欧美特黄一级视频| 亚洲天堂av图片| 麻豆影院在线| 97在线看福利| 成人看片毛片免费播放器| 亚洲精品日韩av| 秋霞蜜臀av久久电影网免费| 日本一区二区三区视频在线观看| 91欧美国产| 人妻久久久一区二区三区| 老司机午夜精品视频| 一区二区三区四区毛片| 成人在线一区二区三区| 男人天堂av电影| 综合色中文字幕| 精品成人久久久| 欧美顶级少妇做爰| 五十路在线观看| 久久精品色欧美aⅴ一区二区| 91福利区在线观看| 国产精品亚洲自拍| 好吊妞国产欧美日韩免费观看网站 | 亚洲激情网站免费观看| 亚洲天堂av片| 欧美一区二区美女| 蜜桃视频在线观看网站| 欧美日韩成人免费| 福利精品一区| 精品午夜一区二区| 最新国产精品| 亚洲狼人综合干| thepron国产精品| 精品国产大片大片大片| 欧美日韩亚洲视频| 成人h动漫精品一区二区无码| 国产小视频国产精品| av在线播放资源| 91人成网站www| 热久久天天拍国产| 91精品91久久久中77777老牛| 国产麻豆精品久久一二三| 变态另类ts人妖一区二区| 亚洲成人资源网| 国产suv一区二区| 色视频www在线播放国产成人| 亚洲十八**毛片| 国产偷国产偷亚洲高清97cao| 97偷自拍亚洲综合二区| 高清一区二区视频| 26uuu精品一区二区| 精品在线视频观看| 日韩欧美国产午夜精品| 日本三级在线播放完整版| 国产精品户外野外| 国产伦精品一区二区三区千人斩 | 亚洲人成网站在线播| 538在线观看| 成人黄色片视频网站| 一本精品一区二区三区| 91pony九色| 国产精品免费免费| 亚洲精品国产欧美在线观看| 日韩精品中文字| 五月天av在线| 美女一区视频| 欧美专区18| 日本成人免费视频| 欧洲国内综合视频| 成人影院免费观看| 国产精品久久综合av爱欲tv| 青青草国产免费一区二区下载| 人妻无码视频一区二区三区| 久久亚洲一区二区三区明星换脸| 国产精品500部| 亚洲精品美女网站| 欧美成人性网| 亚洲免费在线精品一区| 另类小说欧美激情| 欧美性生给视频| 欧美一区二区三区啪啪| 中文字幕免费高清电视剧网站在线观看| 91免费国产视频| 国产精品99一区二区| youjizz.com日本| 精品日本高清在线播放| 国产美女视频一区二区三区| 国产精品一区二区久久久| 久久久久久久久国产一区| 久久久久久国产精品日本| 亚洲制服丝袜av| 香蕉视频国产在线| 国产精品va在线| 国产高清一区二区| 中文字幕乱妇无码av在线| 午夜精品一区二区三区三上悠亚| 先锋av资源站| 国产精品偷伦一区二区| 欧美精品三级| 短视频在线观看| 欧美日韩国产免费一区二区 | 啪一啪鲁一鲁2019在线视频| 国产成人精品三级高清久久91| wwwwxxxx日韩| 亚洲国产日韩av| 国产免费视频在线| 99蜜桃在线观看免费视频网站| 99精品视频网| 久草福利资源在线| 日韩av网站大全| 亚洲欧美一级| 国产精品后入内射日本在线观看| 国产欧美精品国产国产专区| 国产99视频在线| 欧美一区二区影院| 五月天激情综合网| 在线观看国产网站| 欧美高清视频不卡网| 极品美鲍一区| 最新黄色av网站| 2021久久国产精品不只是精品| 91麻豆国产在线| 欧美最顶级的aⅴ艳星| 欧美成人日本|