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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis学习(二):redis集群之cluster模式下的跨节点的批量操作 I

發(fā)布時(shí)間:2023/12/18 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis学习(二):redis集群之cluster模式下的跨节点的批量操作 I 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

說明

通過之前的博文《Redis學(xué)習(xí)(一):redis集群之哨兵模式下的負(fù)載均衡》,對(duì)redis哨兵模式下的讀負(fù)載進(jìn)行學(xué)習(xí)研究。在本篇博文中,將對(duì)redis cluster模式下的跨節(jié)點(diǎn)集合操作進(jìn)行研究學(xué)習(xí)。通過本篇博文,我們將了解redis cluster模式的基本原理及在Jedis客戶端中如何對(duì)redis cluster集群進(jìn)行批量操作。

正文

Redis Cluster

redis cluster是redis官方推薦的高可用分布式解決方案。它的設(shè)計(jì)目標(biāo)主要是:

  • 高性能和線性擴(kuò)展
  • 一定程度的寫操作安全性
  • 可用性

但是它同時(shí)也引入了一些缺陷:所有的操作都只能在同一個(gè)節(jié)點(diǎn)(key的slot相同)進(jìn)行,只能使用0號(hào)數(shù)據(jù)庫而不能使用其他數(shù)據(jù)庫,無法跨節(jié)點(diǎn)使用事務(wù)等等。

在對(duì)redis cluster操作前需要了解下槽點(diǎn)的概念:
redis cluster模式將存儲(chǔ)空間在邏輯上分為了16384個(gè)槽點(diǎn),每個(gè)節(jié)點(diǎn)負(fù)責(zé)一部分槽點(diǎn)。在對(duì)數(shù)據(jù)進(jìn)行操作時(shí),需要根據(jù)key計(jì)算出槽點(diǎn),進(jìn)而找到對(duì)應(yīng)的節(jié)點(diǎn)進(jìn)行操作。槽點(diǎn)的算法為:HASH_SLOT = CRC16(KEY) mod 16384

為了保證集群的可用性,官方建議最少使用三個(gè)節(jié)點(diǎn),三個(gè)從節(jié)點(diǎn),以一主一從的形式。

關(guān)于redis集群的搭建可以參考《深入剖析Redis系列(三) - Redis集群模式搭建與原理詳解》這篇文章。

關(guān)于redis集群更多的詳細(xì)內(nèi)容,詳見 https://redis.io/topics/cluster-spec


JedisCluster

JedisCluster是Jedis客戶端中對(duì)cluster模式實(shí)現(xiàn)的操作類,通過探究學(xué)習(xí)其源碼來了解Jedis如何對(duì)集群進(jìn)行操作。

通過上圖可以看到,JedisCluster繼承了BinaryJedisCluster類,實(shí)現(xiàn)了JedisClusterCommands, MultiKeyJedisClusterCommands, JedisClusterScriptingCommands接口。

接著再以JedisCluster的構(gòu)造函數(shù)為入口,探究該對(duì)象如何創(chuàng)建初始化。

public JedisCluster(Set<HostAndPort> nodes, GenericObjectPoolConfig poolConfig) {this((Set)nodes, 2000, 5, poolConfig); }public JedisCluster(Set<HostAndPort> jedisClusterNode, int timeout, int maxAttempts, GenericObjectPoolConfig poolConfig) {super(jedisClusterNode, timeout, maxAttempts, poolConfig); }

通過源碼可以發(fā)現(xiàn)它最終調(diào)用了父類的構(gòu)造方法:

public BinaryJedisCluster(Set<HostAndPort> jedisClusterNode, int timeout, int maxAttempts, GenericObjectPoolConfig poolConfig) {this.connectionHandler = new JedisSlotBasedConnectionHandler(jedisClusterNode, poolConfig, timeout);this.maxAttempts = maxAttempts; }

在BinaryJedisCluster類的構(gòu)造方法中,創(chuàng)建了JedisClusterConnectionHandler對(duì)象,可以看到這里具體創(chuàng)建的是JedisSlotBasedConnectionHandler對(duì)象。

通過上圖可以看到,JedisSlotBasedConnectionHandler繼承了JedisClusterConnectionHandler這個(gè)抽象類,該類的構(gòu)造方法也是調(diào)用的父類的構(gòu)造方法。

在抽象類JedisClusterConnectionHandler的構(gòu)造函數(shù)中,創(chuàng)建了JedisClusterInfoCache對(duì)象,并進(jìn)行了槽點(diǎn)初始化。在該類中有唯一一個(gè)屬性------JedisClusterInfoCache cache;

public JedisClusterConnectionHandler(Set<HostAndPort> nodes, GenericObjectPoolConfig poolConfig, int connectionTimeout, int soTimeout, String password, String clientName) {this.cache = new JedisClusterInfoCache(poolConfig, connectionTimeout, soTimeout, password, clientName);this.initializeSlotsCache(nodes, poolConfig, connectionTimeout, soTimeout, password, clientName); }

至此,我們可以看到與JedisCluster類密切相關(guān)的兩個(gè)類,JedisClusterConnectionHandler和JedisClusterInfoCache。在JedisClusterInfoCache類中有兩個(gè)關(guān)鍵屬性 Map<String, JedisPool> nodes 和 Map<Integer, JedisPool> slots, 通過閱讀源碼來了解這兩個(gè)屬性的作用。

在以上代碼中可以看到,先創(chuàng)建JedisClusterInfoCache對(duì)象,再初始化槽點(diǎn)信息。

public JedisClusterInfoCache(GenericObjectPoolConfig poolConfig, int connectionTimeout, int soTimeout, String password, String clientName) {this.nodes = new HashMap();this.slots = new HashMap();this.rwl = new ReentrantReadWriteLock();this.r = this.rwl.readLock();this.w = this.rwl.writeLock();this.poolConfig = poolConfig;this.connectionTimeout = connectionTimeout;this.soTimeout = soTimeout;this.password = password;this.clientName = clientName; }

初始化槽點(diǎn)信息調(diào)用了initializeSlotsCache方法

private void initializeSlotsCache(Set<HostAndPort> startNodes, GenericObjectPoolConfig poolConfig, int connectionTimeout, int soTimeout, String password, String clientName) {Iterator var7 = startNodes.iterator();while(var7.hasNext()) {HostAndPort hostAndPort = (HostAndPort)var7.next();Jedis jedis = null;try {jedis = new Jedis(hostAndPort.getHost(), hostAndPort.getPort(), connectionTimeout, soTimeout);if (password != null) {jedis.auth(password);}if (clientName != null) {jedis.clientSetname(clientName);}this.cache.discoverClusterNodesAndSlots(jedis);break;} catch (JedisConnectionException var14) {} finally {if (jedis != null) {jedis.close();}}}}

在該方法中,可以看到通過配置的節(jié)點(diǎn)信息,循環(huán)調(diào)用JedisClusterInfoCache對(duì)象的discoverClusterNodesAndSlots方法。注意,這里只要初始化成功就立即終止循環(huán)。

public void discoverClusterNodesAndSlots(Jedis jedis) {this.w.lock();try {this.reset();List<Object> slots = jedis.clusterSlots();Iterator var3 = slots.iterator();while(true) {List slotInfo;do {if (!var3.hasNext()) {return;}Object slotInfoObj = var3.next();slotInfo = (List)slotInfoObj;} while(slotInfo.size() <= 2);List<Integer> slotNums = this.getAssignedSlotArray(slotInfo);int size = slotInfo.size();for(int i = 2; i < size; ++i) {List<Object> hostInfos = (List)slotInfo.get(i);if (hostInfos.size() > 0) {HostAndPort targetNode = this.generateHostAndPort(hostInfos);this.setupNodeIfNotExist(targetNode);if (i == 2) {this.assignSlotsToNode(slotNums, targetNode);}}}}} finally {this.w.unlock();}}

在該方法中,通過jedis.clusterSlots()獲取集群的槽點(diǎn)信息??梢钥吹皆摲椒ǚ祷亓艘粋€(gè)List<Object>對(duì)象,在list中每個(gè)元素是單獨(dú)的slot信息,這也是一個(gè)list集合。該集合的基本信息為[long, long, List, List], 第一,二個(gè)元素是該節(jié)點(diǎn)負(fù)責(zé)槽點(diǎn)的起始位置,第三個(gè)元素是主節(jié)點(diǎn)信息,第四個(gè)元素為主節(jié)點(diǎn)對(duì)應(yīng)的從節(jié)點(diǎn)信息。該list的基本信息為[string,int,string],第一個(gè)為host信息,第二個(gè)為port信息,第三個(gè)為唯一id。

在獲取有關(guān)節(jié)點(diǎn)的槽點(diǎn)信息后,調(diào)用getAssignedSlotArray(slotinfo)來獲取所有的槽點(diǎn)值。

private List<Integer> getAssignedSlotArray(List<Object> slotInfo) {List<Integer> slotNums = new ArrayList();for(int slot = ((Long)slotInfo.get(0)).intValue(); slot <= ((Long)slotInfo.get(1)).intValue(); ++slot) {slotNums.add(slot);}return slotNums; }

再獲取主節(jié)點(diǎn)的地址信息,調(diào)用generateHostAndPort(hostInfo)方法。

private HostAndPort generateHostAndPort(List<Object> hostInfos) {return new HostAndPort(SafeEncoder.encode((byte[])((byte[])hostInfos.get(0))), ((Long)hostInfos.get(1)).intValue()); }

再根據(jù)節(jié)點(diǎn)地址信息來設(shè)置節(jié)點(diǎn)對(duì)應(yīng)的JedisPool,即設(shè)置Map<String, JedisPool> nodes的值。

public JedisPool setupNodeIfNotExist(HostAndPort node) {this.w.lock();JedisPool nodePool;try {String nodeKey = getNodeKey(node);JedisPool existingPool = (JedisPool)this.nodes.get(nodeKey);if (existingPool == null) {nodePool = new JedisPool(this.poolConfig, node.getHost(), node.getPort(), this.connectionTimeout, this.soTimeout, this.password, 0, this.clientName, false, (SSLSocketFactory)null, (SSLParameters)null, (HostnameVerifier)null);this.nodes.put(nodeKey, nodePool);JedisPool var5 = nodePool;return var5;}nodePool = existingPool;} finally {this.w.unlock();}return nodePool; }

接下來判斷若此時(shí)節(jié)點(diǎn)信息為主節(jié)點(diǎn)信息時(shí),則調(diào)用assignSlotsToNodes方法,設(shè)置每個(gè)槽點(diǎn)值對(duì)應(yīng)的連接池,即設(shè)置Map<Integer, JedisPool> slots的值。

public void assignSlotsToNode(List<Integer> targetSlots, HostAndPort targetNode) {this.w.lock();try {JedisPool targetPool = this.setupNodeIfNotExist(targetNode);Iterator var4 = targetSlots.iterator();while(var4.hasNext()) {Integer slot = (Integer)var4.next();this.slots.put(slot, targetPool);}} finally {this.w.unlock();}}

至此,JedisCluster對(duì)象的初始化完成。這里主要是通過JedisClusterInfoCache對(duì)象來保存節(jié)點(diǎn)信息及對(duì)應(yīng)槽點(diǎn)信息。


mget操作

在上部分內(nèi)容中,簡單介紹了JedisCluster類的初始化過程。在之前提到redis cluster 只能實(shí)現(xiàn)在一個(gè)節(jié)點(diǎn)的集合操作,即要求所有的key都有相同的slot,這里我們通過源碼,了解JedisCluster的有限的批量操作。

public List<String> mget(final String... keys) {return (List)(new JedisClusterCommand<List<String>>(this.connectionHandler, this.maxAttempts) {public List<String> execute(Jedis connection) {return connection.mget(keys);}}).run(keys.length, keys); }

在mget方法中,創(chuàng)建了JedisClusterCommand匿名對(duì)象,調(diào)用其run()方法來完成操作。這里從run()方法開始探究。

public T run(int keyCount, String... keys) {if (keys != null && keys.length != 0) {int slot = JedisClusterCRC16.getSlot(keys[0]);if (keys.length > 1) {for(int i = 1; i < keyCount; ++i) {int nextSlot = JedisClusterCRC16.getSlot(keys[i]);if (slot != nextSlot) {throw new JedisClusterOperationException("No way to dispatch this command to Redis Cluster because keys have different slots.");}}}return this.runWithRetries(slot, this.maxAttempts, false, (JedisRedirectionException)null);} else {throw new JedisClusterOperationException("No way to dispatch this command to Redis Cluster.");} }

通過該方法可以看到,針對(duì)所有的key,都通過JedisClusterCRC16.getSlot(key)方法計(jì)算出其對(duì)應(yīng)的槽點(diǎn)值,再循環(huán)判斷所有的槽點(diǎn)值是否相等,若存在不等則拋出異常: No way to dispatch this command to Redis Cluster because keys have different slots.

校驗(yàn)完成后,調(diào)用了runWithRetries方法,具體執(zhí)行命令,通過該方法名稱可以看出,該方法可以失敗重試。重試次數(shù)為配置時(shí)的參數(shù),若沒有指定,則JedisCluster默認(rèn)值為5。

private T runWithRetries(int slot, int attempts, boolean tryRandomNode, JedisRedirectionException redirect) {if (attempts <= 0) {throw new JedisClusterMaxAttemptsException("No more cluster attempts left.");} else {Jedis connection = null;Object var7;try {if (redirect != null) {connection = this.connectionHandler.getConnectionFromNode(redirect.getTargetNode());if (redirect instanceof JedisAskDataException) {connection.asking();}} else if (tryRandomNode) {connection = this.connectionHandler.getConnection();} else {connection = this.connectionHandler.getConnectionFromSlot(slot);}Object var6 = this.execute(connection);return var6;} catch (JedisNoReachableClusterNodeException var13) {throw var13;} catch (JedisConnectionException var14) {this.releaseConnection(connection);connection = null;if (attempts <= 1) {this.connectionHandler.renewSlotCache();}var7 = this.runWithRetries(slot, attempts - 1, tryRandomNode, redirect);return var7;} catch (JedisRedirectionException var15) {if (var15 instanceof JedisMovedDataException) {this.connectionHandler.renewSlotCache(connection);}this.releaseConnection(connection);connection = null;var7 = this.runWithRetries(slot, attempts - 1, false, var15);} finally {this.releaseConnection(connection);}return var7;}}

在方法中,首先通過JedisClusterConnectionHandler的getConnectionFromSlot(slot)方法獲取對(duì)應(yīng)槽點(diǎn)的連接jedis對(duì)象。

public Jedis getConnectionFromSlot(int slot) {JedisPool connectionPool = this.cache.getSlotPool(slot);if (connectionPool != null) {return connectionPool.getResource();} else {this.renewSlotCache();connectionPool = this.cache.getSlotPool(slot);return connectionPool != null ? connectionPool.getResource() : this.getConnection();} }

在獲取槽點(diǎn)對(duì)應(yīng)連接時(shí),是通過JedisClusterInfoCache的getSlotPool(slot)方法。若獲取的JedisPool為null,則會(huì)進(jìn)行重新初始化槽點(diǎn)的信息。在重新初始化后若值仍為null,則隨機(jī)獲取一個(gè)Jedis對(duì)象。

在獲取到j(luò)edis后,調(diào)用execute()方法執(zhí)行命令,這個(gè)方法在創(chuàng)建匿名對(duì)象時(shí),該方法被實(shí)現(xiàn)。

上面提到,該方法可以失敗重試。通過源碼得知,在異常為JedisConnectionException或JedisRedirectException時(shí),才進(jìn)行重試。在重試過程中,也會(huì)進(jìn)行重新初始化槽點(diǎn)信息信息,直到成功執(zhí)行或重試次數(shù)耗盡。

至此,JedisCluster的有限集合操作mget源碼分析結(jié)束。這里可以看出,JedisCluster只能進(jìn)行有限的批量操作,必須要求所有key的slot值相等。這樣的方式,對(duì)我們的使用造成很多不便,雖然官方建議可以通過key的hash_tag來保證slot值一致,實(shí)現(xiàn)批量操作。

在下篇博文中,我將會(huì)根據(jù)閱讀源碼獲取的基本知識(shí)來打破這個(gè)約束,實(shí)現(xiàn)跨節(jié)點(diǎn)的批量操作。

總結(jié)

以上是生活随笔為你收集整理的Redis学习(二):redis集群之cluster模式下的跨节点的批量操作 I的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

欧美一级大片在线观看 | 五月婷社区| 中文字幕黄色 | 国产成人精品一区二区在线 | 欧美日韩高清一区二区 国产亚洲免费看 | 国产拍揄自揄精品视频麻豆 | 欧美aa一级片 | 国产香蕉视频在线播放 | 综合网天天 | av黄色免费网站 | 色多多污污在线观看 | 午夜久操| 亚洲色五月 | 成人精品福利 | 五月天综合在线 | 丁香色综合| 精品久久在线 | 天天艹日日干 | 国产精品6999成人免费视频 | 亚洲美女精品区人人人人 | 国产成人久久精品77777 | 欧美日韩99 | 久久人人爽爽 | 色综合久久综合中文综合网 | 综合伊人av| 国产精品99久久久久人中文网介绍 | 亚洲成aⅴ人在线观看 | 亚洲精品日韩在线观看 | 一区二区高清在线 | 九九交易行官网 | 在线国产能看的 | 久久精品人人做人人综合老师 | 97国产小视频 | 很污的网站| 中文字幕在线观看三区 | 国产精品成久久久久 | 97国产在线观看 | 久章草在线观看 | 国产xxxxx在线观看 | 公与妇乱理三级xxx 在线观看视频在线观看 | 免费看的黄色录像 | 久久97精品 | 999久久国精品免费观看网站 | 91精品成人 | 中文字幕在线观看日本 | 久久精品一二区 | 97国产精品久久 | 在线电影播放 | 国产精品专区在线观看 | 欧美日韩性生活 | 成人在线观看资源 | 偷拍精偷拍精品欧洲亚洲网站 | 免费看一级黄色 | 三级a视频 | 久久久久久久久精 | 欧美精品免费在线 | 91免费高清| 国产少妇在线观看 | 一区二区三区国产欧美 | 欧美日韩在线精品 | 亚洲天堂网在线视频 | 国产九九九精品视频 | 亚洲欧美日韩在线看 | 国产精品入口麻豆 | 亚洲五月婷 | 99国产精品一区 | 国产精品国产亚洲精品看不卡15 | 欧美日韩在线视频观看 | 天天干.com | 国产视频在线观看一区 | 午夜少妇 | 97在线免费 | 日韩 精品 一区 国产 麻豆 | 日韩免费看的电影 | 久久激情五月丁香伊人 | 黄色av网站在线免费观看 | 天天五月天色 | 最近日本中文字幕 | 黄色软件视频大全免费下载 | 国产日韩欧美在线影视 | www.久草视频 | 精品国产成人在线影院 | 99精品久久久久久久久久综合 | 亚洲免费国产 | 91精品福利在线 | 午夜视频在线观看一区二区三区 | www.夜夜骑.com | 久久免费在线视频 | 999精品网| 精品99免费视频 | 国产福利一区二区在线 | 国产在线高清视频 | 久久视频这里有久久精品视频11 | 精品国产欧美一区二区三区不卡 | 欧美日韩在线视频一区二区 | 91香蕉久久| 麻豆国产精品va在线观看不卡 | 97综合在线 | 日韩一区二区三区视频在线 | 黄色一级大片在线免费看产 | 99视频在线免费看 | 欧美a级免费视频 | 久久er99热精品一区二区三区 | 亚洲午夜精品一区 | 日韩国产欧美在线视频 | 久久精品导航 | 91精品资源 | 99精品欧美一区二区蜜桃免费 | 国产手机av | 在线观看一区二区视频 | 中文字幕91 | 激情五月综合 | 日本在线精品视频 | 欧美成a人片在线观看久 | 午夜性生活 | 久久在线视频精品 | 在线观看蜜桃视频 | 欧美片一区二区三区 | 久久久久久久久网站 | 中文字幕 在线 一 二 | 国产精品久久久区三区天天噜 | 亚洲欧美日韩一二三区 | 在线免费av观看 | 狠狠的干狠狠的操 | 成人黄色小说视频 | 亚洲精品免费在线播放 | 午夜av免费看 | 欧美性极品xxxx做受 | 麻豆视频在线 | 九九热在线观看视频 | av中文字幕网址 | 500部大龄熟乱视频使用方法 | 在线视频专区 | 一区二区视频电影在线观看 | 中文字幕在线观看免费 | 99超碰在线播放 | 9999激情 | 中文字幕免费不卡视频 | 国产精品九九九九九 | 国产精品免费看 | 欧美午夜精品久久久久久浪潮 | 在线国产一区二区 | 一区二区三区四区久久 | 天天综合视频在线观看 | 最新精品国产 | 91成人免费电影 | 成人免费精品 | 日韩欧美91 | 特级西西444www高清大视频 | 日韩在线观看小视频 | 日韩久久午夜一级啪啪 | 欧美精品一区二区性色 | 欧美污在线观看 | 国产精品99久久久久久武松影视 | 在线视频一区观看 | 97av在线视频 | 日韩成人精品一区二区三区 | 色网站在线免费观看 | 久久有精品 | 四虎影视8848aamm | 狠狠干婷婷| 天堂在线视频免费观看 | 国产精品美女免费看 | 99精品在线免费 | 色中射| 精品视频9999 | 成人蜜桃视频 | 日日夜夜噜 | 国产午夜小视频 | 久久久久成人精品免费播放动漫 | a久久免费视频 | 色五月色开心色婷婷色丁香 | 欧美日本中文字幕 | 成全在线视频免费观看 | 波多在线视频 | 久久,天天综合 | 久久精品视频在线 | 国产精品一区二区果冻传媒 | 91中文字幕在线播放 | 天天爽夜夜爽人人爽一区二区 | 久热电影 | 国产精品免费久久久久影院仙踪林 | 国产三级精品三级在线观看 | 正在播放国产精品 | 免费高清无人区完整版 | 久久免费视频在线观看6 | 国产黄色a| 黄色日批网站 | 成人97人人超碰人人99 | 美女网站黄在线观看 | 欧美日韩在线观看一区二区 | 久久激情五月丁香伊人 | www.黄色片网站 | 色播五月激情综合网 | 少妇bbw搡bbbb搡bbb | 免费在线播放av电影 | 天天艹天天干天天 | 天天搞天天 | 韩国在线视频一区 | 免费看三级黄色片 | 狠狠色噜噜狠狠狠狠2021天天 | 久久精品国产免费看久久精品 | 日韩激情影院 | 日韩中文免费视频 | 午夜美女福利直播 | www.久艹 | 亚洲污视频 | 综合久久久久久久久 | 操碰av | 91麻豆精品国产91久久久使用方法 | 久久97精品 | 亚洲精品久久视频 | 免费久久精品视频 | 人人cao| 99久免费精品视频在线观看 | 最近更新的中文字幕 | 日韩高清免费在线观看 | 国产精品二区三区 | 伊人激情网| 成年人免费在线播放 | 久久少妇免费视频 | 色偷偷88888欧美精品久久 | 成人黄色小说在线观看 | 五月天欧美精品 | 亚洲春色奇米影视 | 久久久亚洲影院 | 一区二区不卡高清 | 成人免费网视频 | 日韩视频 一区 | 亚洲成人av在线播放 | 国产精品99页 | 婷婷丁香在线视频 | 国产999精品久久久 免费a网站 | 视频在线观看99 | 免费观看www7722午夜电影 | 91人人在线 | 中文在线a∨在线 | www.黄色片网站 | 中文字幕精品一区二区三区电影 | av解说在线观看 | 91探花在线 | 超碰99在线 | 欧美午夜精品久久久久久孕妇 | 精品国产激情 | 色丁香久久 | 中文字幕精品一区二区精品 | 麻豆视频在线播放 | 中文在线免费一区三区 | 成年人免费电影在线观看 | 免费观看黄色12片一级视频 | 中文字幕成人一区 | 毛片一区二区 | 久草视频国产 | 中文字幕视频在线播放 | 久久久午夜电影 | 在线精品观看 | 香蕉视频在线观看免费 | 天天操天天干天天爱 | 500部大龄熟乱视频使用方法 | 丁香婷婷在线 | 中文字幕观看视频 | 久久免费精品 | 国产精品a成v人在线播放 | 国产理论在线 | 精品久久一级片 | 国产精品免费麻豆入口 | 国产亚洲无 | 国产一区二区三区四区在线 | 国产一区二区三区高清播放 | av看片在线观看 | 在线观看的av | 日韩av一卡二卡三卡 | 国内精品久久久久久久久久久 | 国产99区| 久久免费成人精品视频 | 亚洲精品国产视频 | 亚洲区色 | 人人爽久久久噜噜噜电影 | 免费在线观看亚洲视频 | 在线免费黄色av | 国产女教师精品久久av | 成年人国产视频 | 欧美日韩一区二区三区免费视频 | 超碰电影在线观看 | 免费色黄| 美女一级毛片视频 | 91精品国产99久久久久 | 日韩a在线观看 | 天天干天天干天天干 | 91传媒91久久久 | 国产高清视频免费在线观看 | 一级黄色在线免费观看 | 99re亚洲国产精品 | 久久综合免费视频影院 | 97超碰在线久草超碰在线观看 | 久久大片| 丁香花在线视频观看免费 | 久久麻豆视频 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 日韩精品一区二区三区第95 | 亚洲精品午夜一区人人爽 | 一级成人在线 | 久久你懂的| av在观看| 中文字幕免费观看全部电影 | 国产精品精品国产色婷婷 | 在线电影 一区 | 在线一级片 | 日韩免费 | 99视频在线观看免费 | 在线免费观看视频一区 | 久章草在线观看 | 99爱这里只有精品 | 国产精品观看在线亚洲人成网 | 91九色蝌蚪 | 97视频资源 | 国产成人精品久久二区二区 | 最近日本中文字幕 | 黄色av播放 | 九九免费观看全部免费视频 | 在线观看免费福利 | 好看av在线 | a视频免费在线观看 | 亚洲国产精品女人久久久 | 国产美女视频免费 | 亚洲无吗视频在线 | 在线色亚洲 | 国产小视频在线播放 | 色视频在线观看免费 | www.久久爱.cn | 免费在线黄 | 国产午夜三级 | 99视频在线观看视频 | 亚洲成av人影院 | 五月婷婷婷婷婷 | 日韩在线一级 | 黄色网免费 | 久久成人国产精品入口 | 日日爽日日操 | 九九热精品在线 | 亚洲免费av电影 | 亚洲天堂网站 | 天天色天天操综合网 | 久久不射电影院 | 国产视频一区二区在线播放 | 久草99| 在线日韩精品视频 | 亚洲精品456在线播放乱码 | 国产大尺度视频 | 色婷婷视频网 | 四虎小视频 | 日本公妇色中文字幕 | 国产精品二区在线观看 | 色婷婷福利视频 | 夜色在线资源 | 国产区第一页 | 久久你懂得 | 青青草国产在线 | 黄色成人在线网站 | 日韩国产欧美视频 | 天天草天天摸 | 波多野结衣视频一区二区 | 欧美一级黄色片 | 国产亚洲精品久久久久久无几年桃 | 国产在线精品一区二区三区 | 国产高清av | 国产乱对白刺激视频在线观看女王 | 日本久久精品 | 永久免费的av电影 | 国产麻豆传媒 | 久久综合国产伦精品免费 | 手机看片国产 | 久久 精品一区 | 最新精品视频在线 | 国产又粗又猛又爽又黄的视频免费 | 九九九热精品免费视频观看 | 一区二区三区免费 | 久久精品久久精品久久 | 777奇米四色 | 亚洲欧美国产精品va在线观看 | 国产精品欧美久久久久三级 | 天天干天天摸 | 综合在线亚洲 | 国产男女爽爽爽免费视频 | 18岁免费看片| 五月婷婷久草 | 亚洲电影久久 | 九九久久久久久久久激情 | 狠狠色丁香久久综合网 | 精品国产亚洲日本 | 一级黄色网址 | 精品久久一区 | 久草在线中文视频 | 久热免费在线 | 456免费视频| 久久久高清免费视频 | 天天操天天能 | 久久不射网站 | 精品美女在线视频 | 国产一区欧美一区 | 久草青青在线观看 | 狠狠久久 | 中文字幕一区2区3区 | 日韩电影中文字幕在线 | 在线播放国产一区二区三区 | 亚洲视频 在线观看 | 久久高清视频免费 | 久久久久成 | 国产污视频在线观看 | 欧美巨大荫蒂茸毛毛人妖 | 日韩欧美精品在线 | 久久五月天婷婷 | 日韩在线视频观看 | 国产在线视频在线观看 | 亚洲综合成人在线 | 91av原创 | 国内免费的中文字幕 | 插久久 | 亚洲精品456在线播放 | 国产精品二区在线观看 | 国产精品一区在线观看 | 国产在线成人 | 国产一区在线不卡 | 午夜精品一区二区三区四区 | 色婷av| 久久久久人人 | 粉嫩aⅴ一区二区三区 | 成人av一区二区兰花在线播放 | 在线观看视频在线观看 | 黄色com| 久久久久久高潮国产精品视 | 亚洲性少妇性猛交wwww乱大交 | 二区三区精品 | 婷婷 综合 色| 亚洲最新精品 | 欧美性一级观看 | mm1313亚洲精品国产 | a色视频 | 亚洲精品乱码久久久久久蜜桃91 | 伊人天天色 | 国产 日韩 欧美 中文 在线播放 | 少妇av片| 91精品国产欧美一区二区 | 99热这里是精品 | 亚洲成人黄色在线 | 综合黄色网 | 国产亚洲情侣一区二区无 | 人人插人人玩 | 亚洲免费公开视频 | 成年人免费在线看 | 奇米先锋| 三级在线视频播放 | 美女久久精品 | 久久综合99| 久草在线99 | 久久久久久久久影院 | 亚洲涩涩色 | 国产成人精品一区一区一区 | 韩日av在线 | 精品福利在线视频 | 成人在线视频免费观看 | 不卡视频在线 | 亚洲国产99| 欧美超碰在线 | 国产精品久久久久久久久久妇女 | 免费碰碰 | 亚洲精品短视频 | 91成人午夜| 中文在线最新版天堂 | 97在线公开视频 | 最新av网址大全 | 99久久激情 | 欧美日韩二三区 | 成年人在线观看网站 | 一级免费黄色 | 日韩视频在线观看免费 | 亚洲激情国产精品 | 久久成人在线视频 | 日韩欧美在线中文字幕 | 婷婷丁香在线观看 | 欧美亚洲一区二区在线 | 色综合天天综合网国产成人网 | 99精品区 | 欧美日韩另类在线 | 亚洲精品综合在线观看 | 久久久久久久久久久高潮一区二区 | 欧美日韩xx | 黄视频色网站 | 五月激情久久久 | 欧美性受极品xxxx喷水 | 免费黄色在线播放 | 欧美动漫一区二区三区 | 欧美坐爱视频 | www.亚洲精品 | 亚洲欧洲久久久 | 人人超碰人人 | 午夜精品久久久久99热app | 国产精品美女久久久久久久久 | 麻豆传媒在线视频 | 久久人人爽人人爽人人片 | 日日爽夜夜操 | 国产精品第二页 | 日韩午夜高清 | 欧美另类69 | 久久夜色精品国产欧美一区麻豆 | av在线8| 日本特黄一级片 | 爱爱av网 | 久久久久久久久久久综合 | 久久五月婷婷综合 | 韩国在线视频一区 | 亚洲视屏在线播放 | 中文视频在线 | 国产精品99久久99久久久二8 | 成人黄色电影视频 | 国产精品免费在线视频 | 精品久久久久久久久亚洲 | 玖玖玖精品 | av中文字幕网址 | 亚洲精品在线一区二区三区 | 国产一二区视频 | 国产精品九九久久久久久久 | www.婷婷色 | 麻豆免费看片 | 国产丝袜制服在线 | 成年美女黄网站色大片免费看 | www日韩在线观看 | 视频成人| 99精品国产在热久久下载 | 欧美色精品天天在线观看视频 | 六月色 | 欧美一级视频免费看 | 九九久| 久久久久久国产一区二区三区 | 夜夜躁狠狠燥 | 久久久久久久久毛片 | 精品国产区在线 | av一级片网站 | 国产黄色精品视频 | 亚洲综合射 | 国产精品亚洲人在线观看 | 国产成人久久久久 | 国产精品久久久区三区天天噜 | 精品国产电影一区二区 | 日日爱999| 天天干,天天射,天天操,天天摸 | 国产成人av电影在线 | 国产九色在线播放九色 | 国产91av视频在线观看 | 中文字幕在线观看网址 | 99热这里只有精品国产首页 | 在线一二三区 | 亚洲天堂精品视频在线观看 | 激情五月婷婷综合网 | 97国产 | 久草免费福利在线观看 | 亚洲日本va在线观看 | 久久99九九99精品 | 人人爽人人插 | 99久久精品免费看国产免费软件 | 久久久国产一区二区 | 成人在线网站观看 | 久久久久久久99精品免费观看 | 亚洲精品乱码久久久久久按摩 | 亚洲人人爱 | 欧美在线free | 日韩av不卡在线 | 不卡的av在线 | 黄色最新网址 | 国产无套一区二区三区久久 | 欧美激情第八页 | 日韩精选在线 | 国产传媒中文字幕 | 日韩中文字幕视频在线观看 | 久久亚洲私人国产精品 | 欧美在线视频一区二区三区 | 久久久久女人精品毛片 | av网站在线观看播放 | 日韩精品免费一区二区三区 | 日韩有码中文字幕在线 | 成人在线免费小视频 | 天堂入口网站 | 91网在线观看| av在线电影播放 | 久香蕉 | 久久久久五月 | 五月宗合网 | 亚洲精品影视在线观看 | 999热视频| 婷婷国产在线观看 | 在线中文字幕电影 | 蜜桃视频日本 | av丝袜在线| 在线观看视频福利 | 97人人模人人爽人人喊中文字 | 中文字幕美女免费在线 | 免费影视大全推荐 | 青青射 | 成人小视频免费在线观看 | 91最新地址永久入口 | 在线观看91网站 | 在线 国产 日韩 | 啪啪凸凸 | 免费成人av网站 | 成人av在线播放网站 | 伊人天天色 | 午夜色影院 | 久久久久久久久黄色 | 狠狠色丁香婷婷综合久小说久 | 国内三级在线观看 | 亚洲成人黄色 | 午夜视频在线观看一区二区三区 | 日本精品久久久久中文字幕5 | 日韩免费av网址 | 中文字幕一区二区三区乱码不卡 | 亚洲五月六月 | 人人添人人澡人人澡人人人爽 | 国产一级二级在线 | 久久av免费电影 | 国内久久精品视频 | 韩国三级在线一区 | 国产亚洲欧美一区 | 福利视频导航网址 | 免费黄色一区 | 久久国产女人 | 麻豆91在线播放 | 亚洲国产一区在线观看 | 在线免费观看黄网站 | 97国产一区二区 | 色综合天天在线 | av在线不卡观看 | 国产精品不卡视频 | 日韩欧美一区二区在线 | 欧美一区二区三区在线视频观看 | 国产打女人屁股调教97 | 国产精品亚洲成人 | 国产精品免费看 | 香蕉视频在线免费 | 一区二区三区高清 | 日韩在线免费高清视频 | 久久亚洲专区 | 丁香婷婷综合色啪 | 国产精品久久久久久久久久久久久 | 最近日本韩国中文字幕 | 日本精品久久久久影院 | 在线观看午夜av | 国产精品爽爽久久久久久蜜臀 | 精品一区免费 | 亚洲成人二区 | 国产麻豆果冻传媒在线观看 | 精品在线亚洲视频 | 国产我不卡 | 国产一区高清在线 | 在线免费看黄色 | 免费看一级 | 亚洲精品播放 | 欧美激情综合色综合啪啪五月 | 在线播放第一页 | 色综合久久综合中文综合网 | 婷婷色亚洲 | 在线性视频日韩欧美 | 黄色在线免费观看网站 | 亚洲第一av在线 | 国产精品毛片一区视频播不卡 | 国产毛片在线 | 五月婷婷中文网 | 国产精品毛片久久久久久久 | 6080yy精品一区二区三区 | 狠狠干天天色 | 在线观看免费一区 | 日韩在线不卡视频 | 久久精品高清视频 | 在线视频 区 | 天天干天天做 | 久久手机免费观看 | 亚洲va综合va国产va中文 | 亚洲在线视频播放 | 国产成人av网站 | 91麻豆精品国产自产在线 | 久久免费高清 | 国产黄a三级 | 国产精品久久久久久久久久久久 | 国产一区视频在线播放 | 天天色天天干天天 | 高清日韩一区二区 | 国产精品黄色 | 色网站在线免费观看 | 亚洲国产日韩精品 | 久久婷婷精品 | 91视频免费播放 | 黄色小网站在线观看 | 99精品视频免费观看视频 | 免费在线色电影 | 天天干夜夜夜操天 | 成人av一级片 | 九九久久国产精品 | 日本中文字幕网站 | 欧美中文字幕久久 | 久久综合久久综合这里只有精品 | 91探花在线 | 黄色av一区| 午夜精品麻豆 | 精品国产一区二区三区日日嗨 | 色www精品视频在线观看 | 9992tv成人免费看片 | 亚洲区视频在线 | 亚洲免费国产视频 | 日韩免费久久 | 久国产在线播放 | 免费视频成人 | 国产成人精品久 | 成人免费看电影 | 伊人资源视频在线 | 国产资源站 | 中文一二区 | 国产黄色片久久 | 日韩三级视频在线看 | 麻豆视频免费看 | 久久一精品 | 国产成人一区二区三区电影 | 欧美一级性生活片 | 97成人精品视频在线观看 | 91av大全| 日本中文字幕免费观看 | 超碰在97 | 97超碰国产在线 | 九九欧美视频 | 久久午夜免费视频 | 精品久久电影 | 黄色av影院 | 欧美 激情在线 | 国产精品久久久久久久久久直播 | 久久免费视频这里只有精品 | 中文字幕色婷婷在线视频 | 亚洲自拍偷拍色图 | 在线观看中文字幕一区二区 | 精品成人国产 | 麻豆av一区二区三区在线观看 | 97人人澡人人爽人人模亚洲 | 亚洲专区 国产精品 | 免费观看完整版无人区 | 91在线成人 | 国产 在线观看 | 香蕉国产91 | 午夜精品久久久久久久99婷婷 | 91精品国产91久久久久久三级 | 日韩 精品 一区 国产 麻豆 | 日韩精品中文字幕av | 97在线观看视频国产 | 波多野结衣在线播放视频 | 黄色成年 | 亚洲精品国产自产拍在线观看 | 成人黄色短片 | 91传媒免费在线观看 | 一区二区三区视频 | 亚洲成av人影院 | 丁香影院在线 | 日韩专区 在线 | 亚洲精品在线看 | 四川bbb搡bbb爽爽视频 | 久久久久国产成人免费精品免费 | 99九九热只有国产精品 | 激情综合五月天 | 日韩影视精品 | 97电院网手机版 | 丁香五月缴情综合网 | 黄色录像av | 久草在线一免费新视频 | 国产免费一区二区三区网站免费 | 九九热免费观看 | 久久久久国产成人免费精品免费 | 久久婷婷色| 日日干,天天干 | 中文字幕免费观看 | 亚洲片在线 | 国产黄色片一级三级 | 97精品国产aⅴ | 黄a在线看 | 狠狠狠色丁香综合久久天下网 | 蜜臀aⅴ国产精品久久久国产 | 欧美aa在线 | 日韩av免费大片 | 日本中文字幕在线看 | 九九热免费视频在线观看 | 欧美国产在线看 | 精品视频| 视频国产一区二区三区 | 91视频成人免费 | 国产香蕉av | 久久高清国产 | 天天操夜操视频 | 在线免费高清视频 | 有没有在线观看av | 中文字幕在线视频一区二区三区 | 日韩精品在线观看av | 婷婷婷国产在线视频 | 一区二区欧美在线观看 | 国产在线综合视频 | 成人黄色大片 | 中文字幕在线视频国产 | 91在线你懂的 | 91精品成人久久 | www.亚洲精品在线 | 国产精品网在线观看 | 欧美日韩精品在线视频 | 粉嫩av一区二区三区四区 | 国产欧美久久久精品影院 | 日韩精品一区二区三区在线视频 | 97av视频| 国产在线观看黄 | 精品久久久国产 | 国产精品二区三区 | 最近最新中文字幕 | 亚洲精品中文在线 | 久久午夜羞羞影院 | 日韩在线视频精品 | 成人亚洲精品久久久久 | 国产精品 久久 | 超碰人人草人人 | 国产99re | 日韩在线小视频 | 在线国产99 | 91色在线观看视频 | 国产精品精品 | 免费91麻豆精品国产自产在线观看 | 国产精品久久久久久久久软件 | 国色天香第二季 | 中文字幕在线久一本久 | 色大片免费看 | 日韩精品一区二区三区免费观看视频 | 欧美性色xo影院 | 在线免费观看黄色 | 亚洲国产精品一区二区尤物区 | 色噜噜狠狠狠狠色综合 | 欧美日韩亚洲在线观看 | 精品国产91亚洲一区二区三区www | 国内偷拍精品视频 | www.久久久 | 国产a精品 | 99精品一区二区三区 | 日韩精品高清不卡 | 国产xvideos免费视频播放 | 天天插夜夜操 | 欧美激情精品久久久久久变态 | 伊人久久影视 | 国产一级片网站 | japanesexxxhd奶水 91在线精品一区二区 | 国产一区二区三区免费视频 | 亚洲精品欧美成人 | 久久国产经典 | 久久精久久精 | 园产精品久久久久久久7电影 | 人人爽人人片 | 精品久久精品 | 在线免费亚洲 | 国产91探花 | 国产精品99久久久久的智能播放 | 射综合网 | 久久99亚洲精品久久 | 国产特黄色片 | 日韩免费视频观看 | 一区在线电影 | 天堂av在线免费观看 | 免费看的毛片 | 久久99亚洲热视 | 国产中文在线观看 | 黄色1级大片 | 国产不卡在线 | 不卡的av在线播放 | 激情久久小说 | 国产精品美女久久久久久2018 | 日本久久久久 | www国产亚洲精品久久网站 | 免费网站看av片 | 亚州国产视频 | 日韩高清不卡在线 | 探花视频免费观看高清视频 | 国产精品久久久久久久久免费 | 9免费视频 | 91av中文字幕 | 免费看的av片 | 狠狠干.com | 日韩欧美在线高清 | 精品国产精品久久 | 国产九九九精品视频 | 又湿又紧又大又爽a视频国产 | 久久国产精品系列 | 中文字幕一二 | 亚洲码国产日韩欧美高潮在线播放 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 中文字幕在线资源 | 亚洲永久精品视频 | 国产精品一区二区你懂的 | 日韩欧美电影在线观看 | 黄色影院在线免费观看 | 看片一区二区三区 | 亚洲精品乱码久久久久v最新版 | 欧美一级片在线播放 | 国产91精品一区二区麻豆网站 | 免费看片网址 | av片一区二区 | 久久无码av一区二区三区电影网 | 国产精品一区二区av日韩在线 | 麻豆传媒在线视频 | 亚洲小视频在线观看 | 免费色黄| 黄色精品久久久 | 蜜桃视频色 | 在线看国产 | 国产成人精品一区二区三区免费 | 国产亚洲精品成人 | 狠狠躁夜夜躁人人爽超碰91 | 国产高清成人 | 五月天视频网 | 91超国产 | 国产精品18久久久久久不卡孕妇 | 99 久久久久 | 人人舔人人干 | 日韩中文久久 | www.色午夜.com | 在线综合色 | 嫩草伊人久久精品少妇av | 日本丰满少妇免费一区 | 激情在线免费视频 | 日本中文字幕免费观看 | 五月激情av | 性色在线视频 | 92国产精品久久久久首页 | 国产欧美久久久精品影院 | 亚洲精品色 | 亚洲第一久久久 | 日韩黄色免费 | 69av国产| 黄色日本免费 | 中文字幕日本在线 | 欧美另类激情 | 91污在线观看| 天天色成人网 | 日韩欧美国产视频 | 成人av在线一区二区 | av免费看在线 | 午夜 在线 | 国产高清免费在线观看 | 最新中文字幕在线观看视频 | 国产生活一级片 | 亚洲精品日韩在线观看 | 国产精品一区二区三区四区在线观看 | 91在线www | 欧美日韩不卡一区 | 久久精品高清视频 | 午夜精品久久久久久久99无限制 | 国产高清精品在线观看 | 亚洲激情视频在线 | 国产在线观看高清视频 | 高清av在线 | 亚洲精品国偷拍自产在线观看蜜桃 | 伊人天天色| 亚洲精品视频在线免费 | 精品视频亚洲 | 免费看毛片网站 | 天天干天天玩天天操 | 欧美成人性网 | 月丁香婷婷 | 久久韩国免费视频 | 日韩欧美国产免费播放 | 婷婷日日 | 色综合久 | 午夜神马福利 | 美女网站在线观看 | 亚洲污视频 | 日韩av区| 久久久久久看片 | 丁香影院在线 | 亚洲自拍自偷 | 黄色在线免费观看网址 | 久久久久久草 | 在线欧美小视频 | 亚洲一二三区精品 | 亚洲一区二区三区四区在线视频 | 欧美黑人巨大xxxxx | 超碰免费在线公开 | 激情欧美在线观看 | 制服丝袜一区二区 | 高清一区二区三区av | av中文字幕网址 | 狠狠狠色狠狠色综合 | 国产麻豆精品传媒av国产下载 | 涩涩网站在线播放 | 欧美日韩国产一区二 | 国产视频综合在线 | 中国一级片视频 | 久久影院一区 | 国产韩国精品一区二区三区 | av网站免费在线 | 久久欧洲视频 | 欧美亚洲成人xxx | 日本最新高清不卡中文字幕 | 在线免费观看黄色小说 |