日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Redis源码分析 List实现

發(fā)布時間:2023/11/27 生活经验 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis源码分析 List实现 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在版本3.2之前,Redis中的列表是 ziplist 和 linkedlist 實現(xiàn)的,在3.2之后,由quicklist實現(xiàn)。

?

雙向鏈表linkedlist在表的兩端進行push和pop操作非常方便,但是地址不連續(xù),而且需要保持額外的指針。
ziplist是連續(xù)內存,存儲效率高。但不利于修改操作,插入和刪除需要重新申請和釋放內存。
?

先看quicklist數(shù)據結構

/* Node, quicklist, and Iterator are the only data structures used currently. *//* quicklistNode is a 32 byte struct describing a ziplist for a quicklist.* We use bit fields keep the quicklistNode at 32 bytes.* count: 16 bits, max 65536 (max zl bytes is 65k, so max count actually < 32k).* encoding: 2 bits, RAW=1, LZF=2.* container: 2 bits, NONE=1, ZIPLIST=2.* recompress: 1 bit, bool, true if node is temporarry decompressed for usage.* attempted_compress: 1 bit, boolean, used for verifying during testing.* extra: 10 bits, free for future use; pads out the remainder of 32 bits */
typedef struct quicklistNode {struct quicklistNode *prev;struct quicklistNode *next;unsigned char *zl;unsigned int sz;             /* ziplist size in bytes */unsigned int count : 16;     /* count of items in ziplist */unsigned int encoding : 2;   /* RAW==1 or LZF==2 */unsigned int container : 2;  /* NONE==1 or ZIPLIST==2 */unsigned int recompress : 1; /* was this node previous compressed? */unsigned int attempted_compress : 1; /* node can't compress; too small */unsigned int extra : 10; /* more bits to steal for future usage */
} quicklistNode;/* quicklistLZF is a 4+N byte struct holding 'sz' followed by 'compressed'.* 'sz' is byte length of 'compressed' field.* 'compressed' is LZF data with total (compressed) length 'sz'* NOTE: uncompressed length is stored in quicklistNode->sz.* When quicklistNode->zl is compressed, node->zl points to a quicklistLZF */
typedef struct quicklistLZF {unsigned int sz; /* LZF size in bytes*/char compressed[];
} quicklistLZF;/* quicklist is a 40 byte struct (on 64-bit systems) describing a quicklist.* 'count' is the number of total entries.* 'len' is the number of quicklist nodes.* 'compress' is: -1 if compression disabled, otherwise it's the number*                of quicklistNodes to leave uncompressed at ends of quicklist.* 'fill' is the user-requested (or default) fill factor. */
typedef struct quicklist {quicklistNode *head;quicklistNode *tail;unsigned long count;        /* total count of all entries in all ziplists */unsigned long len;          /* number of quicklistNodes */int fill : 16;              /* fill factor for individual nodes */unsigned int compress : 16; /* depth of end nodes not to compress;0=off */
} quicklist;

quicklist數(shù)據結構說明

fill是ziplist大小

compress是節(jié)點壓縮深度

?

quicklistNode 數(shù)據結構說明

*zl是數(shù)據指針,如果沒有被壓縮,就指向ziplist,否則指向quicklistLZF?

count是ziplist的數(shù)據個數(shù)

encoding : 2; 編碼方式,1:ziplist,2:quicklistLZF

?

quicklist整體數(shù)據結構圖

?PUSH操作

/*-----------------------------------------------------------------------------* List Commands*----------------------------------------------------------------------------*/void pushGenericCommand(client *c, int where) {int j, pushed = 0;robj *lobj = lookupKeyWrite(c->db,c->argv[1]);if (lobj && lobj->type != OBJ_LIST) {addReply(c,shared.wrongtypeerr);return;}for (j = 2; j < c->argc; j++) {if (!lobj) {lobj = createQuicklistObject();quicklistSetOptions(lobj->ptr, server.list_max_ziplist_size,server.list_compress_depth);dbAdd(c->db,c->argv[1],lobj);}listTypePush(lobj,c->argv[j],where);pushed++;}addReplyLongLong(c, (lobj ? listTypeLength(lobj) : 0));if (pushed) {char *event = (where == LIST_HEAD) ? "lpush" : "rpush";signalModifiedKey(c->db,c->argv[1]);notifyKeyspaceEvent(NOTIFY_LIST,event,c->argv[1],c->db->id);}server.dirty += pushed;
}void lpushCommand(client *c) {pushGenericCommand(c,LIST_HEAD);
}void rpushCommand(client *c) {pushGenericCommand(c,LIST_TAIL);
}

lpush和rpush操作都是調用pushGenericCommand

pushGenericCommand調用listTypePush

/*-----------------------------------------------------------------------------* List API*----------------------------------------------------------------------------*//* The function pushes an element to the specified list object 'subject',* at head or tail position as specified by 'where'.** There is no need for the caller to increment the refcount of 'value' as* the function takes care of it if needed. */
void listTypePush(robj *subject, robj *value, int where) {if (subject->encoding == OBJ_ENCODING_QUICKLIST) {int pos = (where == LIST_HEAD) ? QUICKLIST_HEAD : QUICKLIST_TAIL;value = getDecodedObject(value);size_t len = sdslen(value->ptr);quicklistPush(subject->ptr, value->ptr, len, pos);decrRefCount(value);} else {serverPanic("Unknown list encoding");}
}

quicklistPush和quicklistPop

/* Default pop function** Returns malloc'd value from quicklist */
int quicklistPop(quicklist *quicklist, int where, unsigned char **data,unsigned int *sz, long long *slong) {unsigned char *vstr;unsigned int vlen;long long vlong;if (quicklist->count == 0)return 0;int ret = quicklistPopCustom(quicklist, where, &vstr, &vlen, &vlong,_quicklistSaver);if (data)*data = vstr;if (slong)*slong = vlong;if (sz)*sz = vlen;return ret;
}/* Wrapper to allow argument-based switching between HEAD/TAIL pop */
void quicklistPush(quicklist *quicklist, void *value, const size_t sz,int where) {if (where == QUICKLIST_HEAD) {quicklistPushHead(quicklist, value, sz);} else if (where == QUICKLIST_TAIL) {quicklistPushTail(quicklist, value, sz);}
}

quicklistPushHead和quicklistPushTail?

/* Add new entry to head node of quicklist.** Returns 0 if used existing head.* Returns 1 if new head created. */
int quicklistPushHead(quicklist *quicklist, void *value, size_t sz) {quicklistNode *orig_head = quicklist->head;if (likely(_quicklistNodeAllowInsert(quicklist->head, quicklist->fill, sz))) {quicklist->head->zl =ziplistPush(quicklist->head->zl, value, sz, ZIPLIST_HEAD);quicklistNodeUpdateSz(quicklist->head);} else {quicklistNode *node = quicklistCreateNode();node->zl = ziplistPush(ziplistNew(), value, sz, ZIPLIST_HEAD);quicklistNodeUpdateSz(node);_quicklistInsertNodeBefore(quicklist, quicklist->head, node);}quicklist->count++;quicklist->head->count++;return (orig_head != quicklist->head);
}/* Add new entry to tail node of quicklist.** Returns 0 if used existing tail.* Returns 1 if new tail created. */
int quicklistPushTail(quicklist *quicklist, void *value, size_t sz) {quicklistNode *orig_tail = quicklist->tail;if (likely(_quicklistNodeAllowInsert(quicklist->tail, quicklist->fill, sz))) {quicklist->tail->zl =ziplistPush(quicklist->tail->zl, value, sz, ZIPLIST_TAIL);quicklistNodeUpdateSz(quicklist->tail);} else {quicklistNode *node = quicklistCreateNode();node->zl = ziplistPush(ziplistNew(), value, sz, ZIPLIST_TAIL);quicklistNodeUpdateSz(node);_quicklistInsertNodeAfter(quicklist, quicklist->tail, node);}quicklist->count++;quicklist->tail->count++;return (orig_tail != quicklist->tail);
}

最重要就是這一行代碼:

?ziplistPush

unsigned char *ziplistPush(unsigned char *zl, unsigned char *s, unsigned int slen, int where) {unsigned char *p;p = (where == ZIPLIST_HEAD) ? ZIPLIST_ENTRY_HEAD(zl) : ZIPLIST_ENTRY_END(zl);return __ziplistInsert(zl,p,s,slen);
}

__ziplistInsert在?ziplist.c太長了不貼代碼了。

?

關于LZF壓縮算法是第三方的,redis直接引用了。

LZF的壓縮算法,該算法用于對quicklist的節(jié)點進行壓縮操作。list的設計目的是能夠存放很長的數(shù)據列表,當列表很長時,必然會占用很高的內存空間,且list中最容易訪問的是兩端的數(shù)據,中間的數(shù)據訪問率較低,于是就可以從這個出發(fā)點來進一步節(jié)省內存用于其他操作。

lzh.h

/** Copyright (c) 2000-2008 Marc Alexander Lehmann <schmorp@schmorp.de>** Redistribution and use in source and binary forms, with or without modifica-* tion, are permitted provided that the following conditions are met:**   1.  Redistributions of source code must retain the above copyright notice,*       this list of conditions and the following disclaimer.**   2.  Redistributions in binary form must reproduce the above copyright*       notice, this list of conditions and the following disclaimer in the*       documentation and/or other materials provided with the distribution.** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER-* CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO* EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE-* CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH-* ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED* OF THE POSSIBILITY OF SUCH DAMAGE.** Alternatively, the contents of this file may be used under the terms of* the GNU General Public License ("GPL") version 2 or any later version,* in which case the provisions of the GPL are applicable instead of* the above. If you wish to allow the use of your version of this file* only under the terms of the GPL and not to allow others to use your* version of this file under the BSD license, indicate your decision* by deleting the provisions above and replace them with the notice* and other provisions required by the GPL. If you do not delete the* provisions above, a recipient may use your version of this file under* either the BSD or the GPL.*/#ifndef LZF_H
#define LZF_H/***********************************************************************
**
**	lzf -- an extremely fast/free compression/decompression-method
**	http://liblzf.plan9.de/
**
**	This algorithm is believed to be patent-free.
**
***********************************************************************/#define LZF_VERSION 0x0105 /* 1.5, API version *//** Compress in_len bytes stored at the memory block starting at* in_data and write the result to out_data, up to a maximum length* of out_len bytes.** If the output buffer is not large enough or any error occurs return 0,* otherwise return the number of bytes used, which might be considerably* more than in_len (but less than 104% of the original size), so it* makes sense to always use out_len == in_len - 1), to ensure _some_* compression, and store the data uncompressed otherwise (with a flag, of* course.** lzf_compress might use different algorithms on different systems and* even different runs, thus might result in different compressed strings* depending on the phase of the moon or similar factors. However, all* these strings are architecture-independent and will result in the* original data when decompressed using lzf_decompress.** The buffers must not be overlapping.** If the option LZF_STATE_ARG is enabled, an extra argument must be* supplied which is not reflected in this header file. Refer to lzfP.h* and lzf_c.c.**/
unsigned int
lzf_compress (const void *const in_data,  unsigned int in_len,void             *out_data, unsigned int out_len);/** Decompress data compressed with some version of the lzf_compress* function and stored at location in_data and length in_len. The result* will be stored at out_data up to a maximum of out_len characters.** If the output buffer is not large enough to hold the decompressed* data, a 0 is returned and errno is set to E2BIG. Otherwise the number* of decompressed bytes (i.e. the original length of the data) is* returned.** If an error in the compressed data is detected, a zero is returned and* errno is set to EINVAL.** This function is very fast, about as fast as a copying loop.*/
unsigned int
lzf_decompress (const void *const in_data,  unsigned int in_len,void             *out_data, unsigned int out_len);#endif

擴展閱讀參考:

https://blog.csdn.net/belalds/article/details/91976367

https://blog.csdn.net/harleylau/article/details/80534159

總結

以上是生活随笔為你收集整理的Redis源码分析 List实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

91片黄在线观看 | 亚洲国产高清视频 | 91一区二区三区在线观看 | 欧美激情综合五月色丁香 | 国产一级电影网 | 夜夜摸夜夜爽 | 9在线观看免费高清完整 | 日韩免费看| 9999毛片| 成年一级片 | 色网站在线看 | 五月婷婷视频 | 99久久99视频 | 国产中文字幕免费 | 久久久免费看视频 | 国产主播大尺度精品福利免费 | 婷婷综合成人 | 久久综合久久88 | 操一草| 欧美视频在线观看免费网址 | 少妇bbb搡bbbb搡bbbb | 亚洲永久精品在线观看 | 久久综合中文字幕 | 西西www4444大胆视频 | 黄色大片免费网站 | 免费观看高清 | 午夜黄色 | 9色在线视频 | 色多多污污在线观看 | 美国三级黄色大片 | 色视频网址 | 免费观看v片在线观看 | 久草在线资源网 | 又粗又长又大又爽又黄少妇毛片 | 亚洲精品国偷自产在线91正片 | 伊人狠狠操 | 四虎5151久久欧美毛片 | 狠狠狠狠狠狠狠狠 | 欧美色图东方 | 国产手机在线播放 | 亚洲精品视频在线播放 | 91大神精品视频在线观看 | 久久香蕉国产精品麻豆粉嫩av | 综合色久 | 永久黄网站色视频免费观看w | 六月婷操 | 九九热在线精品 | 又紧又大又爽精品一区二区 | 香蕉精品视频在线观看 | 欧美国产高清 | 亚洲精品美女免费 | 亚洲激情视频在线 | 婷婷久久精品 | 婷婷中文字幕 | 一区二区三区免费网站 | 91精品国自产在线观看欧美 | 亚洲黄色免费电影 | 亚州精品在线视频 | 一区在线免费观看 | 黄色www | 免费av 在线| 午夜视频在线网站 | 久久国产精品99久久久久久丝袜 | 国产精品久久久久久久免费 | 免费观看性生活大片 | 亚洲电影免费 | 五月综合色 | 97免费在线观看视频 | 亚洲精品乱码白浆高清久久久久久 | 91免费试看 | 欧美精品在线观看 | 国产一级a毛片视频爆浆 | 亚洲国产一区二区精品专区 | 91精品久久久久久久久久久久久 | 亚洲成人家庭影院 | 欧美a级在线 | 狠狠干干 | 亚洲精品视频在线播放 | 久久精品牌麻豆国产大山 | 国产69久久久欧美一级 | 亚洲国产精选 | 成人欧美一区二区三区黑人麻豆 | 91成人精品一区在线播放69 | 91精品一| 中文字幕丝袜美腿 | 日韩高清片 | 五月综合激情网 | 亚洲国产片色 | 天天射天天干天天爽 | 免费69视频 | 精品人人人 | 欧美另类xxxxx | 国产99在线播放 | av在线一级 | 成人影片在线免费观看 | 亚洲国产精品电影 | 色欧美成人精品a∨在线观看 | 成人免费大片黄在线播放 | 国产999精品久久久久久 | 精品国产乱码久久久久久1区二区 | 在线观看视频你懂的 | 亚洲激情久久 | 精品999国产 | 99精品毛片| 久久久国产精品人人片99精片欧美一 | 久久免费国产视频 | 婷婷草 | 成人福利在线 | av中文在线播放 | 亚洲涩涩涩涩涩涩 | 久草在线视频首页 | 久久久久亚洲精品中文字幕 | 欧美 亚洲 另类 激情 另类 | 日日夜夜天天综合 | 99精品视频一区二区 | 亚洲视频专区在线 | 国产精品v欧美精品 | 久久草草影视免费网 | 国产精品毛片一区视频 | 亚洲美女视频网 | 亚洲少妇久久 | 波多野结衣在线播放视频 | 一区二区精品久久 | 亚洲精品乱码白浆高清久久久久久 | 久久优 | 欧美性生交大片免网 | 黄色av成人在线观看 | 青青视频一区 | 欧美成人日韩 | 欧美一区二区在线免费看 | 在线观看中文字幕亚洲 | 日韩欧美高清一区二区 | 伊人热 | 国产电影黄色av | 国内免费的中文字幕 | 免费在线观看亚洲视频 | 久久视频在线观看中文字幕 | 国产精品1区 | 黄色高清视频在线观看 | 亚洲欧美日韩在线看 | 一区二区 精品 | 亚洲精品中文字幕视频 | 成年人电影免费在线观看 | 久久国产精品久久国产精品 | 伊人色综合网 | 日韩av综合网站 | 丁香花在线视频观看免费 | 久久久久国产成人精品亚洲午夜 | 色妞色视频一区二区三区四区 | 国产69精品久久app免费版 | 久久男人中文字幕资源站 | 国产亚洲精品久久久久久网站 | 色狠狠综合天天综合综合 | 97超级碰碰碰碰久久久久 | 天天av综合网 | 国产精品久久久久久爽爽爽 | 在线免费观看视频一区二区三区 | 又黄又爽又湿又无遮挡的在线视频 | 国产精品99久久免费黑人 | www日| 国产男男gay做爰 | 中文字幕在线播放一区 | 97av色| 日韩素人在线观看 | 午夜在线免费视频 | 国产精品网站 | 成人a毛片 | 久久久久久久久综合 | 日本成人a| 毛片久久久 | 天天操天天舔天天爽 | 久久午夜国产 | av黄色一级片 | 国产资源精品在线观看 | 91精品国产91 | 能在线观看的日韩av | 色播五月激情综合网 | 精品字幕| 亚洲精品大片www | 99久久综合狠狠综合久久 | 国产97在线播放 | av在线播放网址 | 欧美a级一区二区 | 2023国产精品自产拍在线观看 | 久久国际影院 | 欧美a在线看 | 五月天久久综合 | 欧美日韩免费观看一区=区三区 | 久久理论视频 | 伊香蕉大综综综合久久啪 | 啪啪精品 | 日韩不卡高清 | 亚洲区另类春色综合小说 | 国产精品一区二区三区四区在线观看 | 中文字幕在线看视频 | 国产特级毛片aaaaaaa高清 | 免费激情在线电影 | 亚洲激情p | 国产精品一区二区三区久久久 | 在线99 | 国产精品久久久久久久久久尿 | 99精品欧美一区二区 | 国产精品免费在线观看视频 | 久草免费资源 | 精品国精品自拍自在线 | 亚洲精品字幕在线观看 | 国产黄a三级三级三级三级三级 | 91丨九色丨高潮 | 97人人视频 | 国产免费久久 | 国产精品成人久久 | 涩涩网站在线观看 | 午夜精品久久久久久久久久 | 三级黄色网络 | 久久久久亚洲天堂 | 午夜精品视频在线 | 操碰av | 亚洲国产精品va在线 | 成人少妇影院yyyy | 成人免费 在线播放 | 97人人人人| 黄色三级网站 | 国产精品一区二区三区四区在线观看 | 夜夜爽夜夜操 | www.av小说| 精品国产99国产精品 | 综合铜03 | 久久精品视频免费 | 日韩av专区| 成人黄色电影在线观看 | 久久综合久久伊人 | 播五月综合 | 久久精品视频在线观看免费 | av在线免费播放网站 | 免费av网址在线观看 | 免费av在| 在线观看视频国产 | 免费在线观看的av网站 | av片子在线观看 | 成人网页在线免费观看 | 精品久久久久久久久久久久久久久久久久 | 伊人色综合网 | 国产精品久久久久永久免费观看 | 亚洲日本va在线观看 | 亚洲色图27p| 狠狠色综合欧美激情 | 中文字幕在线观看视频免费 | 日韩黄色免费在线观看 | 久草在线视频免费资源观看 | 国产精品不卡在线播放 | 久久国产精品久久精品 | 免费亚洲黄色 | 免费黄色看片 | 欧美成年人在线观看 | 亚洲精品国偷拍自产在线观看 | 成人a级网站 | 青青射 | 国产亚洲精品久久久久久网站 | 亚洲一区二区观看 | 国产精品综合在线观看 | av免费在线看网站 | 97精产国品一二三产区在线 | 99超碰在线观看 | 青青河边草手机免费 | 黄色毛片视频免费观看中文 | 久久人91精品久久久久久不卡 | 毛片永久新网址首页 | 天堂在线视频中文网 | 日批视频国产 | 成人看片 | 激情中文在线 | 久久人人爽人人爽人人片av软件 | 黄色最新网址 | 99色亚洲 | 午夜精品一区二区三区在线视频 | 欧洲精品码一区二区三区免费看 | 免费一级特黄毛大片 | 国产精品久久久久毛片大屁完整版 | 亚州成人av在线 | 91禁看片 | 天天草网站| 国内精品久久天天躁人人爽 | 色多多视频在线观看 | 91最新网址在线观看 | 日韩极品在线 | 国产成人无码AⅤ片在线观 日韩av不卡在线 | 免费91在线观看 | 一区二区三区在线观看 | 中文字幕精品www乱入免费视频 | av免费黄色 | 国产成人精品综合久久久久99 | 揉bbb玩bbb少妇bbb | 亚洲视屏一区 | www.天天干 | 中文字幕中文中文字幕 | 麻豆91在线播放 | 美女网站在线观看 | 欧美精品在线观看 | 日韩精品免费在线播放 | 国产黄在线免费观看 | 国产精品99在线观看 | 中文字幕乱在线伦视频中文字幕乱码在线 | freejavvideo日本免费 | 久久新 | 九九电影在线 | 人人爽人人av | 国产成人在线免费观看 | 激情欧美一区二区三区免费看 | 久久久精品欧美一区二区免费 | 成人三级网站在线观看 | 久久综合婷婷综合 | 99re国产 | 五月开心婷婷 | 亚洲精品乱码久久久久久高潮 | 欧美日韩视频观看 | 亚洲另类在线视频 | 日韩欧美有码在线 | 2019中文最近的2019中文在线 | 久久久夜色 | 国产不卡在线 | 99热只有精品在线观看 | 2022久久国产露脸精品国产 | 99精品视频精品精品视频 | 欧美 日韩 成人 | 国产视频在线播放 | 天天综合天天做天天综合 | 久久亚洲电影 | 91免费看片黄 | 欧美黄污视频 | 黄网站免费大全入口 | 亚洲色图 校园春色 | 久草在线手机视频 | 免费看一级特黄a大片 | 日韩特级黄色片 | 在线精品视频免费播放 | 人人爽久久涩噜噜噜网站 | 精品国内 | 久草在线看片 | 国产日韩精品一区二区 | 精品久久在线 | 日韩在线观看视频一区二区三区 | 狠狠插狠狠操 | 成人aaa毛片 | 午夜丰满寂寞少妇精品 | 日韩精品视 | 在线观看你懂的网站 | 日韩两性视频 | 日韩二区在线播放 | 一级黄色a视频 | 亚洲五月 | 在线精品视频在线观看高清 | 日韩精品久久久免费观看夜色 | 最新中文字幕在线观看视频 | 国产一区二区三区 在线 | 久草在线视频看看 | 亚洲国产激情 | 日日操日日操 | 黄www在线观看 | 日韩成片 | 激情婷婷综合网 | 国产精品毛片网 | 2022国产精品视频 | 中文字幕在线免费观看 | 久久久麻豆视频 | 久久美女视频 | 久久精品99国产精品 | 中文字幕精品三区 | 国产精品婷婷午夜在线观看 | 欧美激情精品久久久久久免费 | 国产精品美女免费 | 亚洲欧美少妇 | 91传媒免费在线观看 | 综合天堂av久久久久久久 | 日韩精品中文字幕一区二区 | 精品视频在线视频 | www.99av| 久久99精品视频 | 米奇狠狠狠888 | 国内精品久久久久久久97牛牛 | 在线观看日韩av | 亚洲v欧美v国产v在线观看 | 久久久久久久久久亚洲精品 | 亚洲伦理一区二区 | 激情综合五月 | 99免费观看视频 | 日狠狠| 在线观看国产v片 | 国产伦理一区 | 美女精品在线 | 国产精品一区在线观看 | 在线视频18在线视频4k | 精品久久99 | 综合色狠狠 | 国产精品久久久久久麻豆一区 | 欧美一级电影免费观看 | 伊人中文在线 | 伊人春色电影网 | 欧美一级特黄高清视频 | 黄色片视频免费 | 视频一区二区三区视频 | 日韩在线观看视频网站 | 中文区中文字幕免费看 | 美女免费网站 | 九九视频免费在线观看 | 丁香 婷婷 激情 | 成人av免费在线播放 | 久久久久伦理电影 | 性色av免费观看 | 亚洲激情中文 | 国产99一区二区 | 超级碰99 | 手机av在线免费观看 | 人操人| 欧美日韩一区二区三区不卡 | 草久久久久久 | 欧美专区日韩专区 | 色五月成人 | 日本丰满少妇免费一区 | 亚洲免费在线观看视频 | 国语自产偷拍精品视频偷 | 国产成人精品一区二三区 | 免费午夜在线视频 | 日韩在线观看中文字幕 | 亚洲精品久久久蜜桃 | 国产精品福利在线 | 91精品久久久久久综合乱菊 | 玖玖玖精品 | 国产亚洲精品无 | 免费看片日韩 | 日韩视频免费 | 亚洲国产高清在线 | 91视频免费看网站 | 激情五月五月婷婷 | 国产日韩欧美在线 | 2019中文最近的2019中文在线 | 欧美精品一区在线 | 黄色日视频 | 欧美在线视频二区 | 国产精品日韩在线播放 | 亚洲精品1区2区3区 超碰成人网 | 一级精品视频在线观看宜春院 | 欧美天天射| 日韩av在线不卡 | 国产高清久久久久 | 精品中文字幕视频 | 天天色天天综合 | 亚洲精品国产精品99久久 | 精品一区免费 | 97在线视频免费看 | 综合久久久久久久久 | 亚洲午夜久久久久久久久电影网 | 国产人在线成免费视频 | 国产成人精品一二三区 | 在线观看视频国产 | 亚洲精品国偷拍自产在线观看 | 国产精品久久久久久999 | 亚洲黄色片 | 成人精品99| 精品视频国产 | 天天色天天射天天操 | 色综合久久久久综合体桃花网 | 黄色一级大片在线免费看国产一 | 在线观看亚洲精品 | 国产亚洲精品久久久久久无几年桃 | 日韩精品一区二区三区免费视频观看 | 99视频99| 美女视频黄的免费的 | 日本在线免费看 | 亚洲经典中文字幕 | 91精品播放| 国产精品毛片 | 天天天天天天干 | 在线视频欧美日韩 | 色婷婷av一区二 | 日韩高清国产精品 | 男女激情免费网站 | 中文字幕在线观看视频一区二区三区 | 99精品国产一区二区三区不卡 | 99精品欧美一区二区三区黑人哦 | 久热av| 亚洲第一区在线播放 | 手机在线永久免费观看av片 | 福利在线看片 | 国产精品一区二区三区在线看 | 国产精品精品久久久久久 | 久久综合久久综合九色 | 在线观看国产中文字幕 | 天天超碰 | 久久看视频 | 色婷婷久久一区二区 | 波多野结衣在线视频一区 | 99精品免费久久久久久日本 | 黄色av三级在线 | 国产99久久久久久免费看 | 丁香婷婷电影 | 亚洲成人免费在线 | 中文有码在线 | 欧美色图亚洲图片 | 国产黄网站在线观看 | 色综合狠狠干 | 欧美不卡视频在线 | 日韩av电影中文字幕 | 四虎永久精品在线 | 国产区 在线 | 亚洲区二区| 精品久久久久一区二区国产 | 国产精品美女久久久久久2018 | 久久伊人五月天 | 国产成人a亚洲精品v | 97激情影院 | 麻豆传媒在线视频 | 特黄色大片 | 天天拍天天爽 | 91人网站| 国产一级一级国产 | 亚洲一区欧美精品 | 91日韩精品一区 | 欧美激情综合网 | 96超碰在线 | aaa黄色毛片 | 午夜精品福利影院 | 国产精品国产三级国产aⅴ9色 | 九七视频在线观看 | 天天综合91 | 成年人在线观看视频免费 | 美女福利视频网 | 欧美色伊人 | 免费看片网站91 | av三级在线免费观看 | 免费在线观看av网址 | 成人在线观看av | 日韩av片无码一区二区不卡电影 | 狠狠色综合欧美激情 | 特级黄色片免费看 | 日韩三级免费 | 成人av片在线观看 | 久久精美视频 | 一二三区视频在线 | 中文字幕在线免费看线人 | 久久精品视频国产 | 久久伦理网 | 国产精品夜夜夜一区二区三区尤 | 手机av在线免费观看 | 久久免费公开视频 | 黄色a级片在线观看 | 日韩激情视频在线 | 九九免费在线观看 | 免费观看91视频大全 | 青春草免费视频 | 人人看人人爱 | 中文字幕久久精品亚洲乱码 | 少妇啪啪av入口 | 天天做天天爱天天综合网 | 69av视频在线 | 欧美激情xxxx性bbbb | 久久久国产精品一区二区中文 | 免费影视大全推荐 | 在线免费高清 | 久久a视频 | 日韩精品网址 | 免费日韩一区二区三区 | 国产精品ⅴa有声小说 | 亚洲国产免费网站 | 日日草天天干 | 亚洲欧洲精品一区二区 | 一区二区视 | 久久在现 | 欧美大片www | 欧美夫妻性生活电影 | 免费黄a大片 | 日韩欧美精品在线观看 | 日本性xxx | www..com毛片 | 色播亚洲婷婷 | 91探花在线| 色婷婷狠狠18 | 亚洲国产精品电影在线观看 | 人人爽人人舔 | 亚洲色五月| 友田真希av | 四虎成人精品永久免费av | 精品视频999 | 特级毛片在线免费观看 | 玖玖精品在线 | 国产精品资源在线观看 | 日韩精品不卡在线观看 | 92精品国产成人观看免费 | 在线视频 国产 日韩 | 久久国产高清视频 | 久久91久久久久麻豆精品 | 欧美在线91| 欧美在线观看视频一区二区三区 | 欧美xxxxx在线视频 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 夜色资源站国产www在线视频 | 人人爽久久久噜噜噜电影 | 欧美日韩a视频 | 91香蕉国产在线观看软件 | 91一区二区三区在线观看 | 在线观看中文字幕2021 | 色播99 | 色网站免费在线看 | 三级黄色大片在线观看 | 久久久91精品国产 | 国产一级二级在线 | 黄网站免费看 | 国产成人一区二区三区久久精品 | 亚洲国产色一区 | 久久视频在线观看中文字幕 | 美女网站在线观看 | 99这里只有 | 久久久久久久久久久电影 | 久久欧美综合 | 国产日韩在线播放 | 日韩大片免费在线观看 | 日韩在观看线 | 国产精品久久久一区二区 | 五月天开心 | 免费麻豆| 狠狠色丁香久久婷婷综合_中 | 中文字幕资源网 国产 | 久久激情五月婷婷 | 亚洲人成在线电影 | 精品国产电影一区 | 日韩成人在线一区二区 | 91在线操 | 91污在线观看 | 日韩91在线| 最新高清无码专区 | 极品久久久久久久 | 中文字幕在线播放一区二区 | 色综合久久久久久久久五月 | 国产精品午夜久久 | 黄色在线观看www | 久久久久国产精品免费 | 一区二区三区电影在线播 | 九九九毛片 | 欧美日韩成人一区 | 国产一区二区在线免费观看 | 欧美日韩成人一区 | 99电影 | 天堂av在线中文在线 | 国产99精品在线观看 | 免费网站看v片在线a | 香蕉视频久久久 | 亚洲综合成人专区片 | 亚洲电影一级黄 | 国产中文字幕大全 | 在线观看视频一区二区三区 | 91在线免费公开视频 | 天天躁天天狠天天透 | 久久精品视频99 | 日本黄色免费播放 | 成人性生交视频 | 天天操夜夜操夜夜操 | 狠狠色狠狠色综合日日92 | 在线观看91久久久久久 | 中文字幕色在线视频 | 伊人成人久久 | 免费在线激情电影 | 开心丁香婷婷深爱五月 | 色综合色综合久久综合频道88 | 国产日韩精品在线观看 | 狠狠干中文字幕 | 久久伊人精品天天 | 中文字幕av日韩 | 伊人欧美 | 亚洲精品视频免费在线 | 91精品国产一区二区在线观看 | 97视频在线免费观看 | ,久久福利影视 | av一级在线| 手机看国产毛片 | 狠狠色噜噜狠狠 | 草久在线视频 | 日韩精品视频第一页 | 午夜影视剧场 | 97视频在线播放 | 嫩模bbw搡bbbb搡bbbb | 99精品国产99久久久久久福利 | 天操夜夜操 | 操处女逼 | 国产精品1区2区在线观看 | 亚洲午夜精品久久久久久久久久久久 | 久久曰视频 | 精品v亚洲v欧美v高清v | 久久国产精彩视频 | 精品久久久久久综合日本 | 最近高清中文字幕在线国语5 | 四虎在线视频 | 亚洲精品免费视频 | 99视频在线精品免费观看2 | 国产一卡二卡四卡国 | 丁香婷婷综合激情 | 国产在线2020| 久操久 | 涩涩在线 | 国产黄| 日韩高清www | 久久无码精品一区二区三区 | 99视频在线观看视频 | 九色porny真实丨国产18 | 天天干,天天射,天天操,天天摸 | 久久伊人热| 久久久久免费精品 | 天天操天天干天天操天天干 | 国产成人精品久久久 | 免费观看av网站 | 国产精品乱码在线 | 亚洲成a人片77777kkkk1在线观看 | www.夜夜操 | 亚洲成av人片在线观看无 | 成人教育av | 成人精品999 | 久久视奸 | 亚洲精品国精品久久99热一 | 天天射天天操天天色 | 九色91在线 | 久久在线观看视频 | 婷婷电影在线观看 | 18国产精品福利片久久婷 | 欧美日韩视频在线观看免费 | 国产精品精品国产色婷婷 | 国产九九精品 | 久久视频免费在线 | 久久一级电影 | 人人网av | 九九久久婷婷 | 亚洲黄色激情小说 | 97精品超碰一区二区三区 | 超碰人人99| 国产亚洲精品福利 | 久久久久www| 国产福利一区二区三区在线观看 | 日韩av片无码一区二区不卡电影 | 欧美日韩一区二区三区在线观看视频 | 日韩在线观看视频一区二区三区 | 国产91综合一区在线观看 | 免费在线观看成人小视频 | 中文乱幕日产无线码1区 | 51久久夜色精品国产麻豆 | 五月婷香蕉久色在线看 | 黄色一区三区 | 久久久久久久久黄色 | 亚洲欧美日韩国产 | wwwwwww色| 国产成人久久77777精品 | 日韩欧美精品一区 | 激情婷婷六月 | 国产日本三级 | www操操 | 久久这里只有精品视频首页 | 午夜精品一区二区三区可下载 | 不卡视频一区二区三区 | 在线观看成人一级片 | 婷婷丁香狠狠爱 | 92精品国产成人观看免费 | 天天干天天拍天天操天天拍 | 免费在线观看视频一区 | 中文字幕三区 | 婷婷综合五月 | 欧美91精品久久久久国产性生爱 | 国语对白少妇爽91 | 中文字幕超清在线免费 | 蜜臀av免费一区二区三区 | 一级片免费视频 | 欧美不卡视频在线 | 国产三级av在线 | 99r在线观看| 成人黄色大片网站 | 精品福利网站 | 在线观看www视频 | 精品日韩在线一区 | 久久综合婷婷综合 | 婷婷丁香视频 | 麻豆91在线 | 国产成人精品日本亚洲999 | 黄色成年片 | 狠狠的干狠狠的操 | 91精品国产高清自在线观看 | 国产成人精品一区二区三区福利 | 97国产精品 | 成人午夜在线观看 | 日韩免费观看一区二区 | 亚洲资源 | 国产一级在线视频 | 91精品免费| www黄在线 | 久久免费av电影 | 欧美精品中文在线免费观看 | 91九色视频在线播放 | 韩国一区视频 | 欧美国产日韩一区二区三区 | 特黄特黄的视频 | 视频在线91| 国产伦精品一区二区三区… | 国产在线观看 | 一区二区视频免费在线观看 | 日本99热 | 日韩在线色| 久草精品视频 | 天天操天天操天天操天天操天天操天天操 | 久久66热这里只有精品 | 久草在线资源观看 | 最新国产一区二区三区 | 日韩在线首页 | 成人国产精品久久久 | 射九九| 日韩av手机在线看 | 中文字幕免费久久 | 国产精品观看 | 国产破处视频在线播放 | 97人人射 | 久久99久久99 | 久草新在线 | 久久黄色影院 | 国产成人精品在线播放 | 色综合久久久久久久久五月 | av动图| 五月天中文字幕 | 日韩三级视频在线观看 | 在线播放亚洲激情 | 成人黄在线 | 91精品伦理| 4hu视频 | 久久久久北条麻妃免费看 | 成人在线视频观看 | 久久精品精品电影网 | 国产精品手机在线播放 | 国产成人精品日本亚洲999 | 天天干.com | 日韩在线观看一区 | 女人魂免费观看 | 色综合久 | 99在线精品视频在线观看 | 超碰97人人爱 | 成人网页在线免费观看 | 干 操 插| 黄p网站在线观看 | 最新av中文字幕 | 欧美一级淫片videoshd | 99热在线国产精品 | 国产精品成人av在线 | 性色av香蕉一区二区 | 亚洲精品视频在线免费播放 | 欧美色噜噜噜 | 欧美孕妇与黑人孕交 | 国产字幕在线播放 | 人人看人人 | 激情久久一区二区三区 | 日韩一级黄色大片 | 国产成人三级一区二区在线观看一 | 色中文字幕在线观看 | 狠狠干.com | 麻豆久久精品 | 国产成人av电影在线观看 | 免费高清在线观看成人 | 亚洲国产伊人 | 天天天色综合 | 亚洲国产中文字幕在线 | 午夜视频在线瓜伦 | 在线欧美a| 国产成人91 | 国产午夜免费视频 | 在线免费色视频 | 久久精品中文 | 91在线精品秘密一区二区 | 日韩在线大片 | 久久午夜精品 | 人人澡人摸人人添学生av | 人人擦 | 亚洲成人中文在线 | 丁香六月伊人 | 久久久久久久久久久免费av | 中文字幕亚洲高清 | 免费a v视频 | 欧美韩国日本在线观看 | 麻豆传媒视频在线免费观看 | 特黄色大片 | 国产精品一区二区在线播放 | 日韩欧美视频一区二区三区 | 久久9999久久免费精品国产 | 亚洲 欧美 国产 va在线影院 | 一区二区三区av在线 | 日韩精品一区二区三区在线视频 | 在线精品视频在线观看高清 | 又黄又色又爽 | 91在线看网站 | 国产精品美女久久久久久久 | av怡红院| 日韩免费在线网站 | 国产专区在线视频 | 国产亚洲精品久久久久久移动网络 | 精品国产诱惑 | 亚洲视频综合在线 | 成人黄大片 | 国产精品毛片一区视频 | 日本在线视频网址 | 在线视频久 | 特级西西人体444是什么意思 | 久99精品 | 日本中文字幕在线 | 久久专区 | 国产精品久久久一区二区 | 国产精彩视频 | 亚洲精品xx| 国产在线国产 | 天天干天天操天天搞 | 美腿丝袜一区二区三区 | 最近日本韩国中文字幕 | 一级a性色生活片久久毛片波多野 | 91免费试看 | 在线免费黄网站 | 久久久久免费电影 | 欧美嫩草影院 | 久久爱资源网 | 久久视频免费 | 免费观看www小视频的软件 | 999视频网站 | 91久久在线观看 | 一区二区在线影院 | 中文字幕在线看 | 欧洲精品视频一区二区 | 中文字幕人成人 | 免费亚洲成人 | 欧美人体xx | 欧美精品久久久久性色 | 久久久久久久久精 | 国产黄色特级片 | 日本久久片 | 亚洲区视频在线观看 | 日日草视频 | 国产欧美综合在线观看 | 日韩一级片大全 | 精品国产欧美一区二区三区不卡 | 五月婷久久| 午夜精品一区二区三区在线观看 | 国产精品欧美久久久久天天影视 | 国产夫妻自拍av | 亚洲国产精品久久久久 | 欧美日韩高清不卡 | 91大神在线观看视频 | 国产免费影院 | 91大神免费在线观看 | 日韩高清免费观看 | 亚洲精选99 | 国产小视频免费在线观看 | 欧美日韩久久久 | 久久九九久久九九 | 国产一线二线三线在线观看 | 四虎在线影视 | 久久亚洲美女 | 成年人免费观看在线视频 | 日韩欧美精品在线视频 | 一级成人网 | 玖玖视频免费在线 | 婷婷激情5月天 | 成人在线视频论坛 | 99热在| 国产一区视频在线观看免费 | www.五月天婷婷 | 一区二区av | 国产一卡久久电影永久 | 91精品一区在线观看 | 九九免费精品 | 亚洲二区精品 | 亚州精品在线视频 | 亚洲国产精品一区二区久久hs | 亚洲无吗av | 亚洲影音先锋 | 欧美在线视频精品 | 制服丝袜亚洲 | 国产色视频网站 | 国产美女精品视频 | 亚洲国产中文字幕在线 | 国产精品自产拍在线观看 | 久久九九免费 | 亚洲国产日韩一区 | 黄色小说在线免费观看 | 91av原创| 黄色一级免费 | 久久成人国产精品 | 日韩在线观看第一页 | 91探花在线视频 | 欧美日韩在线精品一区二区 | 一级片视频在线 | 97视频免费在线观看 | 狠狠色丁香婷婷综合 | 黄色www | 国产精品免费不卡 | 欧美最新另类人妖 | 97国产精品久久 | 最新av网址在线观看 | 国产日韩在线看 | 国产精品99蜜臀久久不卡二区 | 天天操夜夜操夜夜操 | 婷婷六月色 | 在线观看视频日韩 |