久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術(shù)文章
文章詳情頁

spring-data-redis連接操作redis的實現(xiàn)

瀏覽:4日期:2023-07-03 10:54:32

Java連接redis的客戶端有很多,其中比較常用的是Jedis. (參考:redis client)

spring-data-redis則是對Jedis進行了高度封裝,使用起來非常方便。下面就以代碼為例說明spring-data-redis的使用。

整個項目使用maven管理jar包,pom文件如下:

<project xmlns='http://maven.apache.org/POM/4.0.0' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd'> <modelVersion>4.0.0</modelVersion> <groupId>com.snow</groupId> <artifactId>redis-test</artifactId> <version>0.0.1</version> <packaging>jar</packaging> <name>redis-test</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <spring.version>4.3.2.RELEASE</spring.version> <slf4j.version>1.7.12</slf4j.version> <log4j.version>1.2.17</log4j.version> <junit.version>4.12</junit.version> <spring-data-redis.version>1.7.2.RELEASE</spring-data-redis.version> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.5.0</version> <type>jar</type> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>${spring-data-redis.version}</version> <type>jar</type> </dependency> <!-- log --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> </dependencies></project>

主要用到的jia包是spring-context、spring-data-redis、jedis以及日志打印相關(guān)的三個jar包

配置spring-data-redis如下application-context-redis.xml:

<!-- 配置方法見 //www.jb51.net/database/201311/254449.html --> <bean class='redis.clients.jedis.JedisPoolConfig'> <property name='maxTotal' value='500'/> <!-- 控制一個pool可分配多少個jedis實例 --> <property name='maxIdle' value='100'/><!-- 最大能夠保持idel狀態(tài)的對象數(shù) --> <property name='maxWaitMillis' value='1000'/><!-- 表示當(dāng)borrow一個jedis實例時,最大的等待時間,如果超過等待時間,則直接拋出JedisConnectionException --> <property name='timeBetweenEvictionRunsMillis' value='30000'/><!-- 多長時間檢查一次連接池中空閑的連接 --> <property name='minEvictableIdleTimeMillis' value='30000'/><!-- 空閑連接多長時間后會被收回, 單位是毫秒 --> <property name='testOnBorrow' value='true'/> <!-- 當(dāng)調(diào)用borrow Object方法時,是否進行有效性檢查 --> <property name='testOnReturn' value='true'/> <!-- 當(dāng)調(diào)用return Object方法時,是否進行有效性檢查 --> <property name='testWhileIdle' value='true'/> </bean> <span style='white-space:pre'> </span><!-- 直連master --> <bean class='org.springframework.data.redis.connection.jedis.JedisConnectionFactory'> <constructor-arg ref='jedisPoolConfig' /> <property name='hostName' value='${redis.hostName}' /> <property name='port' value='${redis.port}' /> <!-- <property name='password' value ='${redis.password}' /> --> </bean> <span style='white-space:pre'> </span><bean > <span style='white-space:pre'> </span><property name='connectionFactory' ref='jedisConnectionFactory' /> <span style='white-space:pre'> </span></bean>

在配置文件中先配置一個連接池,然后配置一個connection工廠,最后配置bean redisTemplate,我們使用的class是StringRedisTemplate,從而決定我們后面的操作key及value都必須是String類型的。而通常我們希望將一個對象存入到redis中,這個時候可以將對象轉(zhuǎn)為json字符串之后再存儲,取出來的時候再將json字符串轉(zhuǎn)換為對象。這種操作還是比較方便的,都有線程的jar包。除了StringRedisTemplate之外,我們還可以使用RedisTemplate類,這里暫不介紹。

在application-context-redis.xml這個配置文件中還需要用到redis的host和port信息,我們可以配置一個文件properties文件如下:redis.properties

redis.hostName=127.0.0.1redis.port=6379

這個配置文件需要在application-contex.xml中加載,同時application-context.xml還需要加載application-context-redis.xml配置文件

<bean class='org.springframework.beans.factory.config.PropertyPlaceholderConfigurer'> <property name='ignoreUnresolvablePlaceholders' value='true' /> <property name='locations'> <list> <value>classpath:redis.properties</value> </list> </property> <property name='fileEncoding' value='UTF-8' /><!-- 資源文件的編碼 --> </bean> <import resource='classpath:application-context-redis.xml' />

接下來可以寫個redis操作的接口

public interface RedisService { public void setStr(String key, String value);public String getStr(String key);public void rPushList(String key, String value); public String lPopList(String key); public void delKey(String key); }

接口實現(xiàn)如下:

@Service(value = 'redisService')public class RedisServiceImpl extends AbstractRedisDao<String, String> implements RedisService { @Override public void setStr(String key, String value) {getRedisTemplate().opsForValue().set(key, value); } @Override public String getStr(String key) {return getRedisTemplate().opsForValue().get(key); } @Override public void rPushList(String key, String value) {getRedisTemplate().opsForList().rightPush(key, value); } @Override public String lPopList(String key) {return getRedisTemplate().opsForList().leftPop(key); }@Override public void delKey(String key) {getRedisTemplate().delete(key); }}

在該實現(xiàn)中繼承了一個AbstractRedisDao,這個主要是提供getRedisTemplate()函數(shù),使我們能夠調(diào)用在application-context-redis.xml中配置的redisTemplate bean實例

public abstract class AbstractRedisDao<K, V> { @Autowired protected RedisTemplate<K, V> redisTemplate; // 設(shè)置redisTemplate public void setRedisTemplate(RedisTemplate<K, V> redisTemplate) {this.redisTemplate = redisTemplate; } public RedisTemplate<K, V> getRedisTemplate() {return redisTemplate; }}

主要的程序都已經(jīng)寫完了,接下來可以用Junit寫個單元測試對接口測試下。

public class RedisServiceTest extends AbstractUnitTest { private static final Logger logger = LoggerFactory.getLogger(RedisServiceTest.class); @Resource private RedisService redisService; @Test public void testSetStr() {String key = 'test';String value = 'valuetest';redisService.setStr(key, value); } @Test public void testGetStr() {String key = 'test';String value = redisService.getStr(key);logger.info('The value is {}', value); } @Test public void testRPushList() {String key = 'list';for (int i = 0; i < 10; i++) { redisService.rPushList(key, String.valueOf(i));} } @Test public void testLPopList() {String key = 'list';for(int i = 0; i < 9; i++) { String value = redisService.lPopList(key); logger.info('lpop value is {}', value);} }@Test public void testDelKey() {String key = 'list';redisService.delKey(key); } }

在這個測試類中,為了能夠運行這些測試函數(shù),需要對所有的bean進行實例化,這個過程是在 AbstractUnitTest中實現(xiàn)的,代碼如下:

@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = {'classpath:application-context.xml'})public abstract class AbstractUnitTest { private static final Logger logger = LoggerFactory.getLogger(AbstractUnitTest.class); // @Test// public void stub() {//logger.info('msg from abstract unit test, just ignore this.');// } @After public void teardown() throws InterruptedException {logger.info('unit test complete.');TimeUnit.MILLISECONDS.sleep(500);// 因為有些測試是需要異步插入操作記錄的,sleep一下等待線程結(jié)束 } }

AbstractUnitTest類可以作為測試spring的一個通用類。

主要的代碼就這些了,運行下可以看到結(jié)果是沒有問題的。下面我摘抄一段打印輸出說明一個問題:

016-08-02 20:43:16,608 DEBUG RedisConnectionUtils:125 - Opening RedisConnection2016-08-02 20:43:16,609 DEBUG RedisConnectionUtils:205 - Closing Redis Connection2016-08-02 20:43:16,610 INFO RedisServiceTest:54 - lpop value is 02016-08-02 20:43:16,610 DEBUG RedisConnectionUtils:125 - Opening RedisConnection2016-08-02 20:43:16,611 DEBUG RedisConnectionUtils:205 - Closing Redis Connection2016-08-02 20:43:16,611 INFO RedisServiceTest:54 - lpop value is 12016-08-02 20:43:16,611 DEBUG RedisConnectionUtils:125 - Opening RedisConnection2016-08-02 20:43:16,611 DEBUG RedisConnectionUtils:205 - Closing Redis Connection2016-08-02 20:43:16,612 INFO RedisServiceTest:54 - lpop value is 22016-08-02 20:43:16,612 DEBUG RedisConnectionUtils:125 - Opening RedisConnection2016-08-02 20:43:16,612 DEBUG RedisConnectionUtils:205 - Closing Redis Connection2016-08-02 20:43:16,612 INFO RedisServiceTest:54 - lpop value is 32016-08-02 20:43:16,612 DEBUG RedisConnectionUtils:125 - Opening RedisConnection2016-08-02 20:43:16,613 DEBUG RedisConnectionUtils:205 - Closing Redis Connection2016-08-02 20:43:16,613 INFO RedisServiceTest:54 - lpop value is 42016-08-02 20:43:16,613 DEBUG RedisConnectionUtils:125 - Opening RedisConnection2016-08-02 20:43:16,613 DEBUG RedisConnectionUtils:205 - Closing Redis Connection2016-08-02 20:43:16,613 INFO RedisServiceTest:54 - lpop value is 52016-08-02 20:43:16,613 DEBUG RedisConnectionUtils:125 - Opening RedisConnection2016-08-02 20:43:16,614 DEBUG RedisConnectionUtils:205 - Closing Redis Connection2016-08-02 20:43:16,614 INFO RedisServiceTest:54 - lpop value is 62016-08-02 20:43:16,614 DEBUG RedisConnectionUtils:125 - Opening RedisConnection2016-08-02 20:43:16,614 DEBUG RedisConnectionUtils:205 - Closing Redis Connection2016-08-02 20:43:16,618 INFO RedisServiceTest:54 - lpop value is 72016-08-02 20:43:16,618 DEBUG RedisConnectionUtils:125 - Opening RedisConnection2016-08-02 20:43:16,618 DEBUG RedisConnectionUtils:205 - Closing Redis Connection2016-08-02 20:43:16,618 INFO RedisServiceTest:54 - lpop value is 82016-08-02 20:43:16,618 INFO AbstractUnitTest:34 - unit test complete.

這段輸出是運行testLPopList得到的,這里面opening RedisConnection進行了9次,然后又Closing Redis Connection 9次,這是不是說每次執(zhí)行redis操作都需要創(chuàng)建一個連接,操作完然后又關(guān)閉連接呢?實際上不是這樣的,閱讀源代碼我們可以發(fā)現(xiàn)我們對redis的所有操作都是通過回調(diào)execute函數(shù)執(zhí)行的,其代碼如下:

public <T> T execute(RedisCallback<T> action, boolean exposeConnection) { return execute(action, exposeConnection, false);}// execute實現(xiàn)如下:// org.springframework.data.redis.core.RedisTemplate<K, V> --- 最終實現(xiàn)public <T> T execute(RedisCallback<T> action, boolean exposeConnection, boolean pipeline) { Assert.isTrue(initialized, 'template not initialized; call afterPropertiesSet() before using it'); Assert.notNull(action, 'Callback object must not be null'); RedisConnectionFactory factory = getConnectionFactory(); RedisConnection conn = null; try {if (enableTransactionSupport) { // only bind resources in case of potential transaction synchronization conn = RedisConnectionUtils.bindConnection(factory, enableTransactionSupport);} else { conn = RedisConnectionUtils.getConnection(factory);}boolean existingConnection = TransactionSynchronizationManager.hasResource(factory);RedisConnection connToUse = preProcessConnection(conn, existingConnection);boolean pipelineStatus = connToUse.isPipelined();if (pipeline && !pipelineStatus) { connToUse.openPipeline();}RedisConnection connToExpose = (exposeConnection ? connToUse : createRedisConnectionProxy(connToUse));T result = action.doInRedis(connToExpose);// close pipelineif (pipeline && !pipelineStatus) { connToUse.closePipeline();}// TODO: any other connection processing?return postProcessResult(result, connToUse, existingConnection); } finally {if (!enableTransactionSupport) { RedisConnectionUtils.releaseConnection(conn, factory);} }}

這里面每次執(zhí)行action.doInRedis(connToExpose)前都要調(diào)用RedisConnectionUtils.getConnection(factory);獲得一個連接,進入RedisConnnectionUtils類中,getConnection(factory)最終調(diào)用的是doGetConnection(factory, true, false, enableTranactionSupport)這個函數(shù)。這個函數(shù)我們可以看下api文檔,發(fā)現(xiàn)實際上并不是真的創(chuàng)建一個新的redis連接,它只是在connectFactory中獲取一個連接,也就是從連接池中取出一個連接。當(dāng)然如果connectFactory沒有連接可用,此時如果allowCreate=true便會創(chuàng)建出一個新的連接,并且加入到connectFactory中?;旧峡梢源_定真實的情況是spring-data-redis已經(jīng)幫我們封裝了連接池管理,我們只需要調(diào)用一系列操作函數(shù)即可,這給操作redis帶來了極大的方便。

最后附上本文源代碼:redis-test

到此這篇關(guān)于spring-data-redis連接操作redis的實現(xiàn)的文章就介紹到這了,更多相關(guān)spring-data-redis連接操作redis內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 国产精品日产欧美久久久久 | 免费一区二区三区视频在线 | 一级毛片中国 | 国产高清免费视频 | 91爱爱| 成人久久| 成人日批 | 99re6在线| 亚洲看片 | 秋霞av电影 | 五月婷婷丁香婷婷 | 日韩一二三区 | 久久精品无码一区二区日韩av | 国产综合久久 | hh99me在线观看 | 国产高清在线精品一区二区三区 | 国产三级精品在线 | 五月激情天 | 久久久一 | 日本亚洲最大的色成网站www | 草草久久久 | 精品成人一区二区 | 99re在线视频 | 亚洲电影在线观看 | 91社区在线观看高清 | jav成人av免费播放 | 91精品国产综合久久福利软件 | 亚洲视频中文字幕 | 国产精品久久国产精麻豆99网站 | 久久久久久久国产 | 欧美激情视频一区二区三区 | 亚洲一区中文 | 91成人一区| 综合网日韩 | 午夜一级黄色片 | 久草在线 | 亚洲一区二区精品视频 | 午夜视频网站 | www狠狠干 | 色视频免费在线观看 | 亚洲精品成人av | 国产免费一区二区三区 | 欧美精品一区二区在线观看 | 成年免费视频 | 国产一区二区久久 | 久久精品久久精品国产大片 | 一本岛在线视频 | 日韩午夜激情视频 | 成人看片免费网站 | 99国产精品99久久久久久 | 伊人激情综合 | 91美女在线观看 | 女同久久另类99精品国产 | 亚洲成人av | 国产日韩一区二区 | 一级在线| 黄色91在线 | 99精品视频一区二区三区 | 91精品国产综合久久久久久丝袜 | 亚洲精品视频免费观看 | 亚洲欧洲一区二区 | 国产伦精品一区二区三区四区视频 | 欧美黄色性视频 | 国产成人毛片 | 亚洲不卡在线观看 | 国内精品视频在线观看 | 国产乱码精品一区二区三区手机版 | 成人精品在线视频 | 国产成人精品一区二区在线 | 国产96在线观看 | 国产成人在线播放 | 亚洲成av | 欧美日韩激情一区二区三区 | 九九视频这里只有精品 | 日韩成人精品视频 | 午夜不卡福利视频 | 国产欧美综合一区二区三区 | 精品欧美乱码久久久久久1区2区 | 91久久久久 | 午夜在线 | 国产精品久久久久久久一区探花 | www.99热这里只有精品 | 国产精品美女久久久久aⅴ国产馆 | 99精品免费视频 | 伊人欧美在线 | 成人精品一区二区三区 | 欧美精品在线观看免费 | 国产精品91av | 在线亚洲不卡 | 成人亚洲网站 | 色必久久| 天天天天爽 | 中文字幕一区二区三区四区不卡 | 久久国内精品 | 国产精品一区二区精品 | 在线成人免费 | 羞羞的视频在线免费观看 | 成人三级视频 | 香蕉综合久久 | 一级片在线观看视频 | 久久综合一区二区三区 | 国产亚洲欧美一区二区三区 | 国产精品久久久久久久久久久免费看 | 成人福利视频 | 免费看毛片网 | 黄色拍拍视频 | 99国产精品久久久久久久久久 | 欧美成人影院在线 | 国产精品久久久久久久久免费桃花 | 毛片网站在线观看 | 久久精品一区二区 | 在线观看中文 | 国产在线视频在线 | 亚洲在线一区二区 | 国产精品久久久久久久久久久久久 | 国产精品欧美一区二区三区 | 国产乱码精品一区二区三区忘忧草 | 日韩在线一区二区 | 伊人伊人伊人 | 91久久久久久久久久久久久久久久 | 亚洲精品福利在线观看 | 国产欧美一区二区三区在线看 | 91视频一区二区 | 中文字幕在线日韩 | 成人超碰在线 | 99re6在线 | 午夜精品久久久久久久久久久久 | 亚洲成人精品在线观看 | 一二三四区视频在线观看 | 久久不射电影网 | 亚洲在线播放 | 午夜影院在线观看 | 亚洲福利一区二区 | 爱爱视频在线观看 | 欧美激情欧美激情在线五月 | 国产精品久久久久久久久久新婚 | 久草毛片 | 羞羞视频免费在线观看 | 91福利在线播放 | 深夜福利1000 | 成人伊人网 | a久久| 国产精品视频免费 | 日韩精品专区在线影院重磅 | 亚洲成人免费av | 精品国产91乱码一区二区三区 | 欧美一级特黄aaaaaaa在线观看 | 韩日av在线 | 精品国产乱码久久久久久88av | av一二三区| 午夜精品久久久久久久久久久久 | www.久久99| 亚洲男人天堂网 | 黑色丝袜脚足j国产在线看68 | 欧美精品中文字幕久久二区 | 久久激情视频 | 精品一区二区三区在线观看视频 | 国产成人免费视频网站高清观看视频 | 亚洲国产精品一区二区www | 综合一区二区三区 | 国产区视频在线观看 | 国产中文字幕一区 | 欧美日韩三级在线 | 国产精品一二三区 | 免费在线观看av的网站 | 亚洲福利二区 | 亚洲欧美激情精品一区二区 | 三级av | 午夜视频在线免费观看 | 成人久久18免费网站图片 | 色综合天天综合网国产成人网 | 国产99免费 | 中文字幕在线观看精品视频 | 成人二区 | 精品1区| 91久久夜色精品国产网站 | 国产欧美精品在线 | 久久综合一区二区三区 | 国产精品视频入口 | 特黄一级| 国产黄色av | 91精品国产色综合久久 | 午夜视频免费网站 | 中国特级黄色片 | 国产一区二区三区在线免费观看 | 亚洲精品久久久狠狠狠爱 | 日韩三区 | 欧美福利一区二区三区 | 日韩精品专区在线影院重磅 | 黄色成人在线网站 | 亚洲天堂成人在线 | 日韩视频免费在线观看 | 国产高清在线不卡 | 日日干夜夜操 | 成人情趣视频 | 成人精品一区二区三区中文字幕 | 日韩精品免费在线视频 | 久草综合网 | 羞视频在线观看 | 国产精品久久久久久 | 欧美一区二区三区 | 久久国产精品免费一区二区三区 | 欧美亚洲天堂 | 成人a级片在线观看 | 久久精品久久精品 | 成人免费视频网站在线观看 | 涩涩视频在线看 | 91一区在线 | 国产一区二区三区久久 | 国产毛片视频 | 中文字幕精品一区 | 91久久精品国产91久久性色tv | 草樱av| 国产精品久久99 | 999久久久国产精品 免费视频一区 | 国产一区视频网站 | 免费成人在线网站 | 久久免费视频观看 | 亚洲伦理一区 | 亚洲一区二区三区久久 | 日韩激情综合网 | 狠狠干干| 精品自拍视频 | 国产精品一区二区在线 | 国产精品1区2区 | 久久人人爽人人爽人人片av软件 | 久久久久久久国产精品 | 欧美一区二区三区在线 | 少妇色欲网 | 超碰天天| 久久毛片 | 国产精品久久一区二区三区 | 亚洲欧洲精品成人久久奇米网 | 免费在线看a | 欧美一区二区三区在线观看视频 | 久久精品1| 中字一区| 成人理论片 | 九一精品国产 | 国产精品久久久久久久久久大牛 | 天天插天天操天天干 | 欧美性一区二区三区 | 亚洲欧美精品一区 | 成人久久久久爱 | 国产在线专区 | 国产高清亚洲 | 久久久久久久久99精品 | 亚洲精品国产精品国自产 | 一区二区三区不卡视频 | 精品国产欧美 | 欧美精品成人 | 中文字幕一区二区三区乱码图片 | 亚洲国产精品99久久久久久久久 | 亚洲另类视频 | 中文字幕在线第一页 | 中文字幕亚洲欧美日韩在线不卡 | 国产在线激情 | 正在播放国产一区 | 日精品| 久久久久久极品 | 欧美成人影院在线 | 午夜精品久久久久久久 | 日韩精品一区二区在线观看视频 | 国产精品国产三级国产aⅴ 精品91 | 久久性色 | 超碰一区二区三区 | 成人毛片在线观看视频 | 正在播放国产精品 | 亚洲国产精品18久久 | 成人av综合 | 国产视频一区二区三区四区 | 亚洲高清在线 | 精品国产一区一区二区三亚瑟 | 在线观看国产 | 欧美一区二区视频 | 国产精品久久久久久久久久久久久久 | 精品国产三级 | 欧美精品成人一区二区三区四区 | 色黄网站 | 黄色91在线 | 欧美电影一区 | 伊人色综合久久天天五月婷 | 久久久久久国产 | 久久久久久av | 国产欧美视频在线 | 999精品视频 | 91久久久久久久久 | 欧美色性 | 日本 欧美 三级 高清 视频 | 中文视频在线 | 久草免费在线视频 | 国产成人av一区二区三区 | 国产一区二区三区视频在线观看 | 最新免费av网站 | 高清不卡一区 | 午夜爱视频 | 天天干夜夜操 | 一二三四区视频在线观看 | 黄色片网站视频 | 亚洲视频一区 | 久久99深爱久久99精品 | 精品视频在线免费观看 | 国产日韩视频在线观看 | 日本三级中国三级99人妇网站 | 欧美在线播放一区 | 一区二区免费在线播放 | 精品国产一区在线 | 久久蜜桃av | 在线观看第一页 | 精品一区二区久久 | a级在线观看 | 国产在线观看一区二区三区 | 国产乱码精品一区二区三区av | 综合久久久久久久 | 一区二区三区福利视频 | 久久久久久久久一区 | 亚洲精品久久久久久久久久 | 国产精品二区一区 | 中文字幕免费看 | 在线视频中文字幕 | 在线日韩 | 久久精品中文 | 国产精品久久视频 | 一区二区三区视频 | 一级大毛片| 国产高清一区二区三区 | 国产区福利 | 四虎新网站| 亚洲一区二区三区四区五区中文 | 日韩在线观看 | 色婷婷综合在线 | 午夜电影网址 | 国产精品美女久久久久久免费 | 中文字幕视频在线 | 亚洲一区观看 | 最新中文字幕在线 | 国产精品视频 | 黄桃av | 久久久精品一区二区 | а_天堂中文最新版地址 | 成人精品视频一区二区三区 | 亚洲欧美在线一区二区 | 精品久久亚洲 | 中文字幕在线播放一区 | 真人女人一级毛片免费播放 | 黄色一级毛片 | 日韩成人免费视频 | 久久狠狠 | 亚洲一区二区三区 | av网站网址| 韩国电影久久 | 国产日韩欧美精品 | 国产一级片a | 欧美一级在线观看 | 久久国产精品免费一区二区三区 | 亚洲一区精品在线 | 欧美电影一区 | 二区三区在线观看 | 在线一区 | 亚洲欧美日韩国产综合精品二区 | 国产欧美在线观看 | www久| 精品视频一区二区三区 | 精品乱子伦一区二区三区 | 日本成人片网站 | 欧美综合一区二区 | 久草美女 | 成人免费观看49www在线观看 | 操人视频网站 | 在线观看中文 | 亚洲一区二区三区四区 | 日韩色综合| 四虎永久网址 | 亚洲第一av | 一级黄色毛片a | 成人高清视频在线观看 | 国产精品伦理 | 久久国产精品99国产 | 久久免费在线观看 | 一级特黄色大片 | 欧洲妇女成人淫片aaa视频 | 在线欧美日韩 | 中国电影黄色一级片免费观看 | 成人欧美一区二区三区白人 | 亚洲一区二区三区免费视频 | 夜夜骑av | 欧美一级成人欧美性视频播放 | 国产日韩欧美 | 国产aⅴ | 亚洲午夜电影 | 亚洲国产中文字幕 | 日本一区二区不卡 | 国产精品久久久一区二区三区 | 伊人免费观看视频 | 超碰香蕉 | 久久久久久国产免费视网址 | 日本三级电影天堂 | 91在线免费看 | 久久视频一区 | 成人激情视频在线观看 | 日韩城人网站 | 狠狠综合久久av一区二区老牛 | 成人免费视频网址 | 毛片免费在线观看 | 一区二区日韩 | 九九精品视频在线 | 国产一级一级国产 | 日韩精品一区二区三区视频播放 | 久久综合热| 午夜电影 | 91丝袜 | 国产精品久久久久毛片软件 | 狠狠狠| 国产成人在线视频 | 女同videos另类 | 99久久婷婷国产精品综合 | 黄色网页在线观看 | 亚洲欧美高清 | 999精品嫩草久久久久久99 | 亚洲成人免费 | 国产精品一区二区三区在线 | 国产特一级黄色片 | 国产精品一区二区无线 | 国产精品久久久久久久久久 | 91精品国产福利在线观看 | 午夜久久久久 | 亚洲精品亚洲人成人网 | 国产亚洲欧美在线 | 久久99久久久久久 | av最新在线| 国产精品国产成人国产三级 | 欧美不卡 | 日韩午夜激情 | 欧美一级免费看 | 久久久久无码国产精品一区 | 久久资源av| 欧美一区二区三区精品 | 国产美女在线观看 | a级片网站 | 日韩欧美一二三区 | 久久久亚洲精品视频 | 2019亚洲日韩新视频 | 国产浪潮av色综合久久超碰 | 1204国产成人精品视频 | 免费看国产一级特黄aaaa大片 | 亚洲一区二区三区久久 | 日韩精品成人 | 一区二区精品视频 | a一级黄| 国产在线观看高清 | 国产不卡在线 | 2018天天操夜夜操 | 国产在线拍揄自揄拍视频 | 午夜午夜精品一区二区三区文 | 国产女人爽到高潮免费视频 | 欧美日韩中文字幕在线播放 | 国精品一区二区三区 | 丝袜+亚洲+另类+欧美+变态 | 一区二区三区观看视频 | 午夜免费高清视频 | 国产99在线播放 | 国产精品免费观看 | 久久久免费 | 97色在线观看免费视频 | a视频在线 | 国产精品久久久久久 | 国产乱码精品一区二区三区手机版 | 黄色高清视频在线观看 | 欧美在线播放一区二区三区 | 久久99国产伦子精品免费 | 亚洲精品中文字幕在线观看 | 久久免费视频在线 | 午夜男人免费视频 | 美女操网站 | 国产精品久久片 | 欧美日韩中文字幕在线 | 欧美精品福利视频 | 男人天堂中文字幕 | 国产一级视频 | 亚洲电影在线观看 | 成人国产精品视频 | 久久se精品一区精品二区 | 成年人在线观看 | 国产精品第一国产精品 | 91久久久久久 | 日批免费视频 | 国产伦精品一区二区三区照片91 | 久久久资源 | 在线观看亚洲免费 | 人人看超碰 | 成人免费视频观看视频 | 欧美在线一区二区 | 日韩在线| 99精品久久久久久久免费 | 久草免费在线视频 | 日韩久久久| 中文字幕久久精品 | 啊v视频 | 精品久久久久久国产 | 欧美日韩大陆 | 国产精品一区二区在线观看 | 日本久久久久 | 羞羞视频免费在线观看 | 91大神xh98hx在线播放 | 婷婷激情综合 | 国产精品久久久久久久久福交 | 亚洲福利一区二区 | 2019中文字幕在线观看 | 日韩精品久久久久久 | 在线视频成人 | 五月在线视频 | 国产成人一级毛片 | 黄色激情网站 | 欧美九九| 亚洲网站色 | 亚洲成人免费影院 | 亚洲精品乱码久久久久久按摩观 | 色欧美视频 | a免费视频 | 亚洲 中文 欧美 日韩 在线观看 | 国产高清av在线一区二区三区 | 亚洲成av人乱码色午夜 | 夜夜草天天干 | 黄色一级在线播放 | 久久一精品 | 中文字幕免费在线 | 欧美激情在线精品一区二区三区 | 国产一级片 | 亚洲欧美一区二区三区在线 | 精品自拍网 | 国产精品毛片无码 | 婷婷激情五月 | 亚洲精品在线免费观看视频 | 午夜欧美精品久久久久 | 美女超碰 | 一区二区三区在线免费 | 精品香蕉一区二区三区 | 久久久美女 | 久久99精品久久久久久噜噜 | 99精品视频在线观看 | 99热在线播放 | 华丽的挑战在线观看 | 岛国精品| 97色免费视频 | 亚洲国产精品久久久 | 亚洲精选免费视频 | 亚洲国产精品久久久久 | 欧美激情一区二区 | 亚洲一区欧美 | 免费国产黄网站在线观看视频 | 欧美日韩二区三区 | 黄色一级网站 | 波多野结衣一区三区 | 久久综合九色综合欧美狠狠 | 欧美日韩高清在线一区 | 国产精品久久久久久久久 | 在线免费视频一区二区 | 一区二区三区四区免费观看 | 国产精品二区一区 | 亚洲激情av| 在线中文字幕观看 | 欧美夜夜骑 | 亚洲欧美另类在线观看 | 国产精品爱久久久久久久 | 欧美a v在线播放 | 中文字幕 国产精品 | 在线欧美日韩 | 欧美精品中文字幕久久二区 | 国产高潮呻吟久久渣男片 | 九色一区二区 | 麻豆国产一区二区三区四区 | www.99久久久 | 欧美福利专区 | 久久精品国产一区 | 中文字幕日韩一区二区不卡 | 久久精品a一级国产免视看成人 | 中文字幕在线导航 | 精品国产髙清在线看国产毛片 | 欧美精品一区二区三区在线播放 | 99re热精品视频 | 黄色一级网站 | 91精品国产91综合久久蜜臀 | 免费成人在线观看视频 | 国产精品一区av | 中文在线一区 | 成年人在线视频播放 | 超碰在线国产 | 中国一级毛片 | 在线观看亚洲 | a国产精品| 91av官网| 国产精品一区久久久 | 在线国产欧美 | 国产精品视频一区二区三区 | www.99久久久| 国产综合久久久久久鬼色 | 成人免费视频网站在线观看 | 蜜臀91精品国产高清在线观看 | 精品乱子伦一区二区三区 | 欧美中文 | 久久99精品国产麻豆婷婷洗澡 | 日本黄色激情片 | 成人免费aaa | 久久久久久国产精品久久 | 日韩久久久久久 | 在线观看毛片视频 | 日本亚洲精品一区二区三区 | 国产九色视频 | 亚洲欧洲一区二区三区 | 三级黄色片在线 | 欧美日韩亚洲另类 | 精品中出| 亚洲午夜在线 | 日韩资源 | 91av在 |