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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis序列化、RedisTemplate序列化方式大解读,介绍Genericjackson2jsonredisserializer序列化器的坑

發布時間:2025/3/21 数据库 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis序列化、RedisTemplate序列化方式大解读,介绍Genericjackson2jsonredisserializer序列化器的坑 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

上一篇已經介紹了優雅的操作Redis:

【小家Spring】Spring Boot中使用RedisTemplate優雅的操作Redis,并且解決RedisTemplate泛型注入的問題。本篇著重介紹一

下幾種常用的序列化方式

最近在做一個項目,由于并發量大,大量使用到了RedisTemplate來操作Redis。但使用過程中,遇到了不少的坑,各種翻看源碼

來跟蹤,也總結出了不少的經驗。

因此今天專門做一篇專文來記錄這些坑,也具體說說RedisTemplate的各種序列化方式的差異性。希望對大家也能有所幫助,幫

助大家解決一些疑惑

序列化問題

RedisTemplate在遇到復雜類型的返序列化時,即使加了泛型,獲取到的實際類型為LinedHashMap,需要得到結果后再次反序列

化,不然會報類型轉換異常。

如下:這樣處理才是安全的:

在執行序列化的時候,操作的如果是Bean,必須有默認構造器,否則報錯

redis集群問題(關于集群的這幾個問題,后續在專門演示和解釋)

如果連接的為Redis集群,則不能用管道的方法,除非改寫管道的類

模糊查詢的時候需要獲取到所有的node信息,依次查詢

Spring提供的序列化方式

從源碼里看:

我們可以很清晰的看到,Spring為我們提供了6種不同的序列化方式。

特別說明一下:如果你是在Spring Boot1.5.x環境下使用,你可能看到是9種實現或者是7種實現,如下圖所示

解釋:

關于前面兩個,并非Spring官方提供,而是由alibaba的FastJson自己實現的。我們看看FastJson的包結構,發現它很友好的提供了一些常用的轉化器:

因此此處暫時不做過多描述,后面再說。

另外還有一個JacksonJsonRedisSerializer類,被標記為過期。而這個類在SpringBoot2.0就直接被移除掉了,因此以后的版本不用理會了。

下面主要介紹一下,Spring官方現在還存在的6大序列化器:

Generic單詞意思:一般的; 通用的;類的,屬性的;

  • OxmSerializer

以xml格式存儲(但還是String類型~),解析起來也比較復雜,效率也比較低。因此幾乎沒有人再使用此方式了

  • JdkSerializationRedisSerializer

從源碼里可以看出,這是RestTemplate類默認的序列化方式。若你沒有自定義,那就是它了。

?? ?@Overridepublic void afterPropertiesSet() {super.afterPropertiesSet();boolean defaultUsed = false;if (defaultSerializer == null) {defaultSerializer = new JdkSerializationRedisSerializer(classLoader != null ? classLoader : this.getClass().getClassLoader());}...

使用JDK自帶的序列化方式,有明顯的缺點:

首先它要求存儲的對象都必須實現java.io.Serializable接口,比較笨重

其次,他存儲的為二進制數據,這對開發者是不友好的

再次,因為他存儲的為二進制。但是有時候,我們的Redis會在一個項目的多個project中共用,這樣如果同一個可以緩存的對象

在不同的project中要使用兩個不同的key來分別緩存,既麻煩,又浪費。

使用JDK提供的序列化功能。 優點是反序列化時不需要提供(傳入)類型信息(class),但缺點是需要實現Serializable接口,還有

序列化后的結果非常龐大,是JSON格式的5倍左右,這樣就會消耗redis服務器的大量內存。

? ? @Autowiredprivate RedisTemplate redisTemplate;@Testpublic void contextLoads() {ValueOperations<String, Person> valueOperations = redisTemplate.opsForValue();valueOperations.set("aaa", new Person("fsx", 24));Person p = valueOperations.get("aaa"); //Person(name=fsx, age=24)System.out.println(p);}

存儲的為二進制,根本開不出來是什么,對開發者調試也很不友好

  • StringRedisSerializer

也是StringRedisTemplate默認的序列化方式,key和value都會采用此方式進行序列化,是被推薦使用的,對開發者友好,輕量

級,效率也比較高。

(例子略)

  • GenericToStringSerializer

他需要調用者給傳一個對象到字符串互轉的Converter(相當于轉換為字符串的操作交給轉換器去做),個人覺得使用起來其比較麻煩,還不如直接用字符串呢。所以不太推薦使用

后面兩種序列化方式是重點

  • Jackson2JsonRedisSerializer

從名字可以看出來,這是把一個對象以Json的形式存儲,效率高且對調用者友好

優點是速度快,序列化后的字符串短小精悍,不需要實現Serializable接口。

但缺點也非常致命:那就是此類的構造函數中有一個類型參數,必須提供要序列化對象的類型信息(.class對象)。 通過查看源代

碼,發現其在反序列化過程中用到了類型信息(必須根據此類型信息完成反序列化)。

  • GenericJackson2JsonRedisSerializer

基本和上面的Jackson2JsonRedisSerializer功能差不多,使用方式也差不多,**但是是推薦使用的**

需要注意:(使用區別)

? ? @Testpublic void contextLoads() {redisTemplate.setKeySerializer(new StringRedisSerializer());redisTemplate.setValueSerializer(new StringRedisSerializer());//ValueOperations<String, String> valueOperations = stringRedisTemplate.opsForValue();//此處泛型 因為編譯器無法校驗 ?所以如果value序列化方式是字符串 下面就會報錯了ValueOperations<String, Person> valueOperations = redisTemplate.opsForValue();valueOperations.set("key", new Person("fsx", 24)); //java.lang.ClassCastException: com.fsx.run2.bean.Person cannot be cast to java.lang.StringPerson value = valueOperations.get("key");System.out.println(value);}

如上,假如我value的序列化方式設置為String序列化器。但是set值的時候放對象了。這個時候就直接報錯了,并不會自動調用

toString()方法,此處一定要注意。還需要特別是初始化RestTemplate的時候,value的序列化方式禁止使用有類型偏向的

StringRedisSerializer。若有需要,你直接使用StringRedisTemplate操作即可

Jackson2JsonRedisSerializer和GenericJackson2JsonRedisSerializer的異同

Jackson2JsonRedisSerializer:為我們提供了兩個構造方法,一個需要傳入序列化對象Class,一個需要傳入對象的JavaType:

?? ?public Jackson2JsonRedisSerializer(Class<T> type) {this.javaType = getJavaType(type);}public Jackson2JsonRedisSerializer(JavaType javaType) {this.javaType = javaType;}

這種的壞處,很顯然,我們就不能全局使用統一的序列化方式了,而是每次調用RedisTemplate前,都需要類似這么處理:

redisTemplate.setKeySerializer(RedisSerializerType.StringSerializer.getRedisSerializer());redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(Person.class));

但因為redisTemplate我們都是單例的,所以這樣設置顯然是非常不可取的行為。雖然它有好處~~~~~~~~~~

這種序列化方式的好處:他能實現不同的Project之間數據互通(因為沒有@class信息,所以只要字段名相同即可),因為其實就

是Json的返序列化,只要你指定了類型,就能反序列化成功(因為它和包名無關)

使用這種Json序列化方式果然是可以成功的在不同project中進行序列化和反序列化的。但是,但是,但是:在實際的使用中,我們希望職責單一和高內聚的,所以并不希望我們存在的對象,其它服務可以直接訪問,那樣就非常不好控制了,因此此種方式也不建議使用~

GenericJackson2JsonRedisSerializer:這種序列化方式不用自己手動指定對象的Class。所以其實我們就可以使用一個全局通用

的序列化方式了。使用起來和JdkSerializationRedisSerializer基本一樣。

同樣的JdkSerializationRedisSerializer不能序列化和反序列化不同包路徑對象的毛病它也有。因為它序列化之后的內容,是存儲

了對象的class信息的:

========> Jackson2JsonRedisSerializer的坑:

存儲普通對象的時候沒有問題,但是當我們存儲帶泛型的List的時候,反序化就會報錯了:

? ? @Testpublic void contextLoads() {redisTemplate.setKeySerializer(new StringRedisSerializer());redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(List.class));ValueOperations<String, List<Person>> valueOperations = redisTemplate.opsForValue();valueOperations.set("aaa", Arrays.asList(new Person("fsx", 24), new Person("fff", 30)));List<Person> p = valueOperations.get("aaa");System.out.println(p); //[{name=fsx, age=24}, {name=fff, age=30}]List<Person> aaa = (List<Person>) redisTemplate.opsForValue().get("aaa");System.out.println(aaa); //[{name=fsx, age=24}, {name=fff, age=30}]}

結論:網上很多帖子都說這樣會出問題,但我實驗過后發現不會有問題。時間有限,我這個是基于Spring Boot2.1進行測試的,

若你們測試的版本有問題,歡迎告知我,我再做進一步的驗證,多謝。

========> GenericJackson2JsonRedisSerializer的坑:

? ? @Testpublic void contextLoads() {redisTemplate.setKeySerializer(new StringRedisSerializer());redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());ValueOperations<String, Long> valueOperations = redisTemplate.opsForValue();valueOperations.set("aaa", 1L);//Long p = valueOperations.get("aaa"); //轉換異常 java.lang.Integer cannot be cast to java.lang.LongObject p = valueOperations.get("aaa");System.out.println(p);}

**坑1:**泛型里明明返回的就是Long類型,但你用Long接,就直接拋出轉換異常了

從上圖中我們可以清晰的看見,get出來返回的真實類型竟然是Integer類型,所以強轉肯定報錯啊

再看一例:set類型

? ? @Testpublic void contextLoads() {redisTemplate.setKeySerializer(new StringRedisSerializer());redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());SetOperations<String, Long> setOperations = redisTemplate.opsForSet();setOperations.add("bbb", 1L);setOperations.add("bbb", 2L);Set<Long> p = setOperations.members("bbb");System.out.println(p);}

我們發現,里面裝的竟然,竟然是Integer類型。這種Java泛型的bug我們在之前的博文里有講述過,特別坑。這個時候這個變量

就是個地雷,只要一碰,就報錯

另外,就算你獲取的并不是List類型,而是一個值,也必須要轉換一下,否則類型轉換異常。像下面這么操作才是安全的:

? ? ? ? ? ? Object teaIdObj = setOperLong.pop(teaCategoryKey);if (teaIdObj != null) {log.info("從redis老師倉庫{}里拿到了一個老師{}", teaCategoryKey, teaIdObj);teacherIds.add(Long.parseLong(teaIdObj.toString()));}

類型轉換異常原因分析

因為GenericJackson2JsonRedisSerializer這種序列化方式實在是太通用了,所以我還是希望找出原因,解決這個問題的。因此

我就跟蹤源碼,看看到底是哪里出了問題:

執行setOperations.members("bbb")這句最終都到了RedisTemplate的execute方法:

public <T> T execute(RedisCallback<T> action, boolean exposeConnection, boolean pipeline) {...}

方法體的這一行,解析了返回的value值:

T result = action.doInRedis(connToExpose);

tips:Spring Boot1.x此處connToExpose使用的是jedis的,而Boot2.x使用的是Lettuce的了。但是對調用者是透明的,可謂非常友好

繼續跟蹤發現,最終會調用我們配置好的序列化器進行序列化:

?? ?V deserializeValue(byte[] value) {if (valueSerializer() == null) {return (V) value;}return (V) valueSerializer().deserialize(value);}

因此啥都不說了,到GenericJackson2JsonRedisSerializer去看看它的deserialize方法吧,就在這一句話:

// 調用了jackson的ObjectMapper方法進行返序列化 ?但是type為Object.class return mapper.readValue(source, type);

為何我的泛型類型丟失了呢?向上追溯一步,我們發現:

?? ?static <T extends Collection<?>> T deserializeValues(@Nullable Collection<byte[]> rawValues, Class<T> type,@Nullable RedisSerializer<?> redisSerializer) {// connection in pipeline/multi modeif (rawValues == null) {return (T) CollectionFactory.createCollection(type, 0);}Collection<Object> values = (List.class.isAssignableFrom(type) ? new ArrayList<>(rawValues.size()): new LinkedHashSet<>(rawValues.size()));for (byte[] bs : rawValues) {values.add(redisSerializer.deserialize(bs));}return (T) values;}

我們的類型全部變成了Collection里面的Object類型,我們的泛型就這樣丟失了。所以在序列化的時候,只要遇到數字(或者泛

型),自然就是當作Integer來處理了,因此就出現了我們看到的詭異現象。

因為GenericJackson2JsonRedisSerializer本來處理序列化的都是與類型無關的,所以都轉換為Object進行處理。因此出現此種

現象也是在情理之中的。

解決方案

既然你需要GenericJackson2JsonRedisSerializer它的通用性,那么你就得接受他只能處理Object類型。

因此在使用的時候遇上這種情況,需要稍加注意了。我們可以先用Object接收,然后轉成字符串再調用Long.valueOf()方法去間

接實現。。。或者你在使用前手動指定序列化類型,但十分、十分不建議這么去做

它處理List、Set、Long類型等都會有類似的問題。使用的時候稍加注意即可(因為Java中默認數字類型是Integer、Double等)

當然還有一種方案是自定義序列化器:如自定義String序列化器,接受一切類型(官方的泛型限制了只接受String類型。這么一

來,@Cacheable等注解的key支持不僅僅是String類型了):

/*** 必須重寫序列化器,否則@Cacheable注解的key會報類型轉換錯誤*/ public class StringRedisSerializer implements RedisSerializer<Object> {private final Charset charset;private final String target = "\"";private final String replacement = "";public StringRedisSerializer() {this(Charset.forName("UTF8"));}public StringRedisSerializer(Charset charset) {Assert.notNull(charset, "Charset must not be null!");this.charset = charset;}@Overridepublic String deserialize(byte[] bytes) {return (bytes == null ? null : new String(bytes, charset));}@Overridepublic byte[] serialize(Object object) {//底層還是調用的fastjson的工具來操作的String string = JSON.toJSONString(object);if (string == null) {return null;}string = string.replace(target, replacement);return string.getBytes(charset);} }

順便提一句:單元測試的時候可能碰上這個異常:WRONGTYPE Operation against a key holding the wrong kind of value,不

要慌。這個是因為key的類型不一致導致,一般只有在測試情況下才會發生**。比如之前這個key用用作k-v的形式,現在把這個

key當作set數據類型來用,就會報這個錯,換給key就行。**

說明:Jackson2JsonRedisSerializer的效率稍微優于GenericJackson2JsonRedisSerializer,但是使用起來遠沒有Generic方便。

各位看官可以根據自己業務的實際情況,酌情選擇吧~~~~

第三方序列化器:FastJsonRedisSerializer、KryoRedisSerializer

由于Redis的流行,很多第三方組件都提供了對應的序列化器。比較著名的有阿里巴巴的FastJsonRedisSerializer

還好ali默認已經幫我們實現了基于fastjson的序列化方式,我們都不用自己動手了。

FastJsonRedisSerializer和GenericFastJsonRedisSerializer

和上面一樣講述的一樣,FastJsonRedisSerializer需要指定反序列化類型,而GenericFastJsonRedisSerializer則比較通用。但同

樣的Generic系列存在上面我說的同樣的問題,大家使用時需要多加注意。

KryoRedisSerializer:它就沒有這么這么友好了,但自己實現一個也是輕而易舉的事:

public class KryoRedisSerializer<T> implements RedisSerializer<T> {private Kryo kryo = new Kryo();@Overridepublic byte[] serialize(T t) throws SerializationException {System.out.println("[serialize]" + t);byte[] buffer = new byte[2048];Output output = new Output(buffer);kryo.writeClassAndObject(output, t);return output.toBytes();}@Overridepublic T deserialize(byte[] bytes) throws SerializationException {System.out.println("[deserialize]" + Arrays.toString(bytes));Input input = new Input(bytes);@SuppressWarnings("unchecked")T t = (T) kryo.readClassAndObject(input);return t;}}

指定RedisTemplate的序列化方式

這個就比較簡單了,可以在注冊Bean的時候就set(推薦),也可以使用的時候再做(非常非常不推薦,會有并發安全問題)

? ? @Beanpublic RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();redisTemplate.setConnectionFactory(redisConnectionFactory);// 使用Jackson2JsonRedisSerialize 替換默認序列化(備注,此處我用Object為例,各位看官請換成自己的類型哦~)Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);ObjectMapper objectMapper = new ObjectMapper();objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);jackson2JsonRedisSerializer.setObjectMapper(objectMapper);// 設置value的序列化規則和 key的序列化規則redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);redisTemplate.setKeySerializer(new StringRedisSerializer());// 最好是調用一下這個方法redisTemplate.afterPropertiesSet();return redisTemplate;}

java源生序列化的效率已經非常高了,但是kryo是java原生序列化性能十幾倍(kryo只針對java語言,不跨語言。跨語言的序列化

方式有:Protostuff、Thrift等。 所以如果你想自定義序列化器的話,個人建議可以導入kryo包,然后自己書寫一個序列化器注冊

進去~~~)

---------------------?

作者:_YourBatman?

來源:CSDN?

原文:https://blog.csdn.net/f641385712/article/details/84679456?

版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

總結

以上是生活随笔為你收集整理的Redis序列化、RedisTemplate序列化方式大解读,介绍Genericjackson2jsonredisserializer序列化器的坑的全部內容,希望文章能夠幫你解決所遇到的問題。

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

亚洲 成人 欧美 | 五月天六月婷 | 三级av中文字幕 | 99这里只有精品99 | 黄色中文字幕 | 日韩在线免费视频观看 | 99热手机在线 | 日本午夜在线亚洲.国产 | 久久久亚洲国产精品麻豆综合天堂 | 天天操天天综合网 | 蜜臀aⅴ国产精品久久久国产 | 五月激情丁香婷婷 | 国产精品 日韩 | 网站免费黄色 | 久久免费99精品久久久久久 | 在线电影a | 色视频网页 | 精品久久1| 欧美日韩aaaa | 国产福利网站 | 免费a级观看 | 成人在线电影观看 | 久草在线视频首页 | 日韩精品欧美精品 | 国产成人精品在线观看 | 日韩午夜剧场 | 精品自拍sae8—视频 | 午夜性生活片 | 91香蕉视频污在线 | 日韩av在线高清 | 欧美日韩在线电影 | 欧美激情视频一区二区三区免费 | 高清国产一区 | 久久久久久久久久久久久久电影 | 91大神免费视频 | 色国产精品一区在线观看 | 国产色视频一区二区三区qq号 | 免费成人在线观看视频 | 日韩欧美aaa | 欧美日韩视频免费 | 免费黄av | 久久毛片高清国产 | 天天射射天天 | 国产精品123 | 欧美日韩精| 国产成人精品av久久 | 久久99精品久久久久久三级 | 好看av在线| 17婷婷久久www | 日韩成人免费观看 | 国产亚洲精品久久久久久久久久 | 国产99久久 | 精品福利网 | 色资源网免费观看视频 | 日韩av免费在线看 | 国产a免费 | 九九视频免费在线观看 | 亚洲黄色在线观看 | 91成人精品一区在线播放69 | 另类五月激情 | 丁香国产视频 | www.色五月.com | 99婷婷狠狠成为人免费视频 | 久久激情婷婷 | 超碰97人人射妻 | 国产精品女教师 | 99精品视频网| 国产精品一区二区在线免费观看 | 在线视频 影院 | wwwwww黄| 一区二区三区国产精品 | 亚洲最大激情中文字幕 | 国产精品久久久久永久免费看 | 欧美a级在线免费观看 | 国产伦理精品一区二区 | 91久久国产露脸精品国产闺蜜 | 91桃色国产在线播放 | 久久国产精品一区二区三区 | wwwav视频 | 一区二区三区在线视频观看58 | 国产精品久久久久一区 | 国产一区在线观看视频 | 精品女同一区二区三区在线观看 | 久久艹在线 | 狠狠网站 | 欧美va在线观看 | 国产群p视频 | 丁香av在线 | 精品在线免费观看 | 免费电影一区二区三区 | 亚洲涩涩网站 | 国产精品久久久影视 | 天天综合人人 | 欧美 日韩 国产 成人 在线 | 福利片视频区 | 色综合久久久久综合体桃花网 | 国产xvideos免费视频播放 | 粉嫩一二三区 | 中文字幕免费久久 | 亚洲天堂va | 欧美性色综合网站 | av中文在线观看 | 夜夜视频 | 国产在线观看网站 | 久热av在线 | 丁香5月婷婷 | 欧美性黑人 | 久青草视频 | 亚洲精品视频免费在线 | 在线观看黄网站 | 精品久久久久久国产偷窥 | 丁香婷婷久久久综合精品国产 | 国产区免费| 日韩av中文字幕在线免费观看 | 久久久久久久久久久成人 | 国产日韩精品在线观看 | 人人模人人爽 | 一区二区三区四区五区六区 | 国内精品视频久久 | 久久99久久99精品免观看粉嫩 | 国产在线超碰 | 摸bbb搡bbb搡bbbb | 国产日产欧美在线观看 | 亚洲精品国产麻豆 | 久久爱影视i | 午夜性生活片 | 国产成人精品午夜在线播放 | 精品久久1| 在线免费观看黄色 | 国产手机在线播放 | 亚洲精品一区二区三区在线观看 | 91精品在线播放 | 欧美日韩亚洲在线观看 | 久草视频视频在线播放 | 日韩成人免费电影 | 成年人电影免费在线观看 | 色婷婷视频 | 国产精品一区二区在线观看 | 美女福利视频一区二区 | 国精产品一二三线999 | 国产精品美乳一区二区免费 | 国产第一页在线播放 | 午夜影院先 | 91av网址| 人人爽人人搞 | 91精品国产高清自在线观看 | 日本久久成人中文字幕电影 | 日韩和的一区二在线 | 久久欧洲视频 | 国产午夜三级一二三区 | 亚洲 欧洲 国产 日本 综合 | 91精品一区国产高清在线gif | 在线探花| 亚洲欧美观看 | 在线免费黄色毛片 | 日韩午夜一级片 | 国产手机视频精品 | 免费h精品视频在线播放 | 亚洲精品免费在线播放 | av中文字幕在线播放 | 奇米网网址 | 欧美二区在线播放 | 亚洲成人在线免费 | 久久国产精品一国产精品 | 久久er99热精品一区二区 | 亚洲欧美视频在线播放 | 日韩动态视频 | 免费色av| www免费| 欧美激情精品久久久久久 | 中文字幕电影高清在线观看 | 久久午夜精品 | 人人干在线观看 | 蜜桃视频日韩 | 日本69hd | 国产精品综合久久久久 | 日韩免费av在线 | 成人国产精品久久久春色 | 美女网站在线播放 | 亚州精品国产 | 免费观看成年人视频 | 免费看国产曰批40分钟 | 日韩av成人在线观看 | 国产亚洲一级高清 | 一区精品在线 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 色噜噜狠狠狠狠色综合 | 国产.精品.日韩.另类.中文.在线.播放 | se婷婷| 久久久久久久免费观看 | 亚洲综合一区二区精品导航 | 一区二区三区在线观看免费 | 在线免费视频一区 | 99资源网 | 伊人永久| 黄色小说在线免费观看 | 婷婷五月色综合 | 久精品视频在线观看 | 黄色片免费看 | 国产久草在线 | av在线日韩 | 91精品国产乱码 | h文在线观看免费 | 91黄色在线视频 | 伊人久久精品久久亚洲一区 | 91在线色 | 国产精品永久免费视频 | 美女网站视频免费黄 | 亚洲国产无| 精品麻豆| 天天拍天天操 | 亚洲国产成人精品在线观看 | 成人黄色在线电影 | 欧美视频日韩视频 | 亚洲国产影院av久久久久 | 国产伦理精品一区二区 | 国产免费看| 美女久久99 | 一二区电影 | 欧美视频18 | 国产一区影院 | 日本最新中文字幕 | 国产精品欧美日韩在线观看 | 91精品视频免费观看 | 日韩欧美国产成人 | 亚洲精品永久免费视频 | 黄色av电影 | 在线观看中文字幕av | 国产三级久久久 | 日韩电影一区二区在线观看 | 国产精品久久99精品毛片三a | 国产免费观看久久 | www.香蕉| 婷婷六月天丁香 | 在线成人免费 | 玖玖精品在线 | 91专区在线观看 | 四虎影视国产精品免费久久 | www.夜夜操.com | 国产视频在线免费观看 | 日韩在线电影一区 | 亚洲一二视频 | 久久久黄色av | 国产成人一区三区 | 久久99亚洲热视 | 91大神电影 | 日韩视频一区二区在线 | 国产一区二区在线观看视频 | 在线观看日本高清mv视频 | 亚洲人成人99网站 | 国内精品久久久久久久 | 波多野结衣在线播放视频 | 国产日韩在线观看一区 | 亚洲精品免费观看 | 天天天天天天天操 | 视频一区二区视频 | 欧美日韩99 | 亚洲成人资源在线 | 国产精品一区二区av日韩在线 | 国产.精品.日韩.另类.中文.在线.播放 | 蜜桃视频在线视频 | 久久草精品 | 色婷婷激情网 | 亚洲天天看 | 国产色婷婷在线 | 999热线在线观看 | 日韩视频在线一区 | 亚洲国产日韩av | 天天操天天射天天插 | 亚洲视频 视频在线 | 久久久麻豆精品一区二区 | 97超碰精品| 亚洲国产精久久久久久久 | 亚洲成人av一区 | 99国产精品一区二区 | 91精品在线观看入口 | 久草在线手机视频 | 在线观看国产区 | 夜夜躁天天躁很躁波 | 91一区啪爱嗯打偷拍欧美 | 久久任你操 | 日韩理论片 | 久久精品视频网站 | 91亚洲欧美| 日韩高清一区 | 国产手机在线播放 | 九九九九九九精品任你躁 | 国产特级毛片aaaaaa高清 | 91黄色影视 | 中文字幕刺激在线 | 伊人日日干| 中文字幕日韩精品有码视频 | 国产成人一区二 | 日韩二级毛片 | 免费在线观看国产黄 | 综合网色 | 色婷婷综合久久久 | 久久最新| 国产成人免费在线观看 | 国内精品久久天天躁人人爽 | 欧美日韩免费视频 | www.久久色.com | 国产精品美女视频网站 | 国产免费中文字幕 | 日韩高清在线一区二区 | 国产特黄色片 | 99热精品视| 久久网站最新地址 | 亚洲精品乱码白浆高清久久久久久 | 免费在线观看成人 | 成人av免费在线 | 日韩女同一区二区三区在线观看 | 超碰人人超 | 成人精品99| 日韩欧美一区二区三区在线 | 日韩精品一区二区三区免费观看视频 | 久久成熟 | 麻豆国产精品永久免费视频 | 精品国产乱码久久久久 | 久久这里只有精品1 | 亚洲在线成人精品 | 日韩精品1区2区 | 久久成人高清视频 | 一区二区三区动漫 | 亚洲国产精品传媒在线观看 | 91av免费看| 亚洲做受高潮欧美裸体 | 日韩av视屏 | 亚洲精品88欧美一区二区 | 日韩在线欧美在线 | 在线国产不卡 | 色婷婷视频 | 成人h动漫在线看 | 中文字幕五区 | 韩国精品一区二区三区六区色诱 | 97精品一区| 国产黄色特级片 | 亚洲免费不卡 | 亚洲,国产成人av | 天天操综合网站 | 欧美日韩国产一区 | 国内精品久久久久影院优 | 国产日韩精品一区二区三区 | 亚洲综合在线五月 | 日韩精品高清不卡 | 亚洲精品在线观看视频 | 日韩激情综合 | 波多野结衣亚洲一区二区 | 欧美另类xxx | 成年人免费观看在线视频 | 国产一区电影在线观看 | 91免费高清在线观看 | 99九九热只有国产精品 | 国产精品久久久久免费观看 | 免费网站在线观看人 | 91在线视频网址 | 深夜成人av | 国产四虎在线 | 久久深夜 | 国产精品va在线播放 | av中文字幕亚洲 | 日韩精品2区| av黄色一级片 | 最近中文字幕高清字幕在线视频 | 亚洲精品国产免费 | 伊人宗合| 韩国av一区二区三区在线观看 | 丝袜美腿av | 成人黄色在线看 | 久久久久久欧美二区电影网 | 久久精品国产一区 | 韩国视频一区二区三区 | 免费成人黄色av | 99久久国产免费免费 | 日韩黄色免费在线观看 | 91精品夜夜 | 黄色.com| 免费看污片 | av高清一区二区三区 | 五月开心六月伊人色婷婷 | 国产精品一区二区电影 | 成人亚洲精品国产www | www免费看| 特级西西444www高清大视频 | 国内99视频| 欧美日韩不卡一区二区三区 | 西西444www大胆高清图片 | 色人久久 | 亚洲国产精品99久久久久久久久 | 欧美日韩免费网站 | 国产美女视频一区 | 国产精品99久久久久久武松影视 | 亚洲春色奇米影视 | 欧美激情视频一区二区三区免费 | 欧美日韩视频一区二区 | 色婷婷视频网 | 九九色网 | 天天操夜夜操夜夜操 | 国产小视频在线 | 久久一久久 | 在线观看你懂的网址 | 中文字幕一区二区三区在线播放 | 色激情五月 | 69久久久 | 一区二区三区在线免费观看 | 午夜精品一区二区三区免费视频 | 日韩a级黄色片 | 蜜臀久久99精品久久久酒店新书 | www国产一区 | 天天做天天射 | 九色视频网站 | 精品久久久久一区二区国产 | 欧美一级免费 | 日韩综合一区二区三区 | www.色婷婷 | 激情视频91 | 日韩 国产 | 日韩av成人在线 | 欧美有色 | 欧美日韩在线免费视频 | 日本中文字幕在线一区 | 去干成人网 | 日韩精品一区二区三区不卡 | 亚洲专区欧美 | 91精品国产综合久久福利不卡 | 成年人网站免费在线观看 | 亚洲国产精品成人综合 | 国产在线观看一 | 999抗病毒口服液 | 婷婷丁香色| 国产精品激情在线观看 | 91看片网址 | 天天干天天天天 | 欧美高清成人 | 伊人www22综合色 | 亚洲乱码久久 | 亚洲欧美激情精品一区二区 | 精品国产伦一区二区三区观看体验 | 亚洲精品在线观看视频 | 98福利在线 | av网站有哪些 | 久久久久久久久久久久亚洲 | 天天操人人要 | 久草视频手机在线 | 色综合久久88色综合天天人守婷 | 中文av字幕在线观看 | 国产第一页在线观看 | 黄色动态图xx| 日韩色在线观看 | 国产精品久久久区三区天天噜 | 精品国产伦一区二区三区观看说明 | 婷婷在线播放 | 日本精品久久久久中文字幕5 | 日日操天天射 | 国产精品二区在线观看 | 国产粉嫩在线 | 久久精品免费 | 久久久亚洲国产精品麻豆综合天堂 | 黄色国产成人 | 一区二区三区日韩在线观看 | 午夜美女网站 | 国产喷水在线 | 婷婷激情小说网 | 亚洲免费精品视频 | 天天操天天综合网 | 国产一区二区在线看 | 国产69精品久久久久9999apgf | 成人av电影免费在线播放 | 亚洲人av免费网站 | 日韩大陆欧美高清视频区 | 精品国产精品久久一区免费式 | 欧美极度另类 | 国产一区二区精品久久91 | 久久影院中文字幕 | 999超碰| 日本中文在线播放 | 国产欧美日韩精品一区二区免费 | 九九精品久久 | 久久精品韩国 | 日韩动态视频 | 日韩欧美精品在线 | 亚洲视频免费在线观看 | 99 国产精品 | 婷婷六月色| 久久久久久久久久久久亚洲 | 国产69久久久 | 欧美二区视频 | 欧美网址在线观看 | 欧美日韩亚洲精品在线 | 青春草免费在线视频 | 91豆花在线观看 | 日韩va欧美va亚洲va久久 | 国产精品www | 精品亚洲视频在线 | 一区二区三区在线免费 | 久久久影院一区二区三区 | 夜夜爱av | 久久久久免费网站 | 在线亚洲欧美视频 | 国产精品久久99综合免费观看尤物 | 91人人澡人人爽人人精品 | 欧美日韩另类视频 | 激情伊人| 国产成在线观看免费视频 | 六月婷婷网 | 国产喷水在线 | 国产在线精品观看 | 嫩小bbbb摸bbb摸bbb | 播五月综合 | 高清不卡一区二区三区 | 国产不卡高清 | 最近的中文字幕大全免费版 | 天天综合色 | 三级免费黄色 | 精品国产欧美一区二区三区不卡 | 欧美在线视频一区二区 | 久久精品系列 | 亚洲一级电影 | 国产在线一区二区 | 免费特级黄毛片 | 国产福利小视频在线 | 激情久久婷婷 | 国产中文字幕在线视频 | 精品久久久精品 | 九九欧美| 久久婷婷精品视频 | 四虎成人精品永久免费av | 亚洲国产av精品毛片鲁大师 | 久草在线在线视频 | 夜夜夜夜操 | 国产一级91 | 日本三级中文字幕在线观看 | 精品亚洲免费 | 精品国产乱码久久久久久久 | 婷婷色在线资源 | 日韩在线免费视频 | 最新高清无码专区 | 国产电影黄色av | 国内久久精品 | 国产精品6| 成人av在线观 | 精品一区精品二区 | 亚洲精品国产精品国自产 | 一区三区视频 | 一本一本久久a久久 | 免费人成在线观看网站 | 欧美一区免费观看 | 日本久久久久久久久久久 | 日韩久久精品一区二区三区 | 中文字幕日韩精品有码视频 | 久视频在线 | 成人h在线观看 | 激情久久婷婷 | 国产视频九色蝌蚪 | 二区中文字幕 | 色婷婷 亚洲 | 欧美在线视频一区二区三区 | 日韩av伦理片| av高清网站在线观看 | 中文字幕久久久精品 | 黄色特级一级片 | 五月开心网 | 午夜精品久久久久久久久久久久久久 | 久久综合九色综合久久久精品综合 | 精品亚洲欧美无人区乱码 | 东方av在 | 99久久精品国产一区二区成人 | 国产精品久久久久久久久久久久午夜 | 精品婷婷 | 欧美日韩免费观看一区=区三区 | 日本在线成人 | 999久久国产精品免费观看网站 | 国语自产偷拍精品视频偷 | 日韩精品免费在线播放 | 精品人人爽 | 黄色av电影在线观看 | 中文字幕在线观看一区 | 国产乱码精品一区二区三区介绍 | 午夜国产在线观看 | 亚洲国产日韩精品 | 三级黄色片在线观看 | 天天操夜夜想 | 天天拍天天爽 | 99爱在线| 国产成人精品免高潮在线观看 | 成人亚洲欧美 | 国产乱老熟视频网88av | a视频在线观看免费 | 久久99久 | 男女啪啪网站 | 久草视频视频在线播放 | 国产精品mm | 国产极品尤物在线 | 国产精品小视频网站 | www.色五月| 久久久www成人免费精品张筱雨 | 日韩中文字幕免费 | 亚洲婷婷综合色高清在线 | 成人av一区二区兰花在线播放 | 久久看片网站 | 一本一本久久a久久精品综合小说 | 亚洲最新在线视频 | 日本久久视频 | 国产精品原创在线 | 最近中文字幕视频完整版 | 国产99久久久国产精品免费看 | 欧美一级视频在线观看 | 久久精品3 | 国产999视频在线观看 | 亚洲 欧美 日韩 综合 | 日本特黄特色aaa大片免费 | 91久久国产露脸精品国产闺蜜 | 国产成人久久久久 | www.狠狠插.com | 色综合激情久久 | 久草在线资源免费 | 久久这里只有精品视频99 | 婷婷色网站 | av丁香花 | 三级免费黄色 | 日韩欧美视频在线 | 久久久精品免费观看 | 黄av免费在线观看 | 99r在线精品| .国产精品成人自产拍在线观看6 | 日韩久久精品一区二区三区 | 久草视频免费看 | 超碰在线观看97 | 亚洲黄色区 | 青青河边草免费观看完整版高清 | 日韩videos | 人人艹视频 | 成年人网站免费观看 | 成人在线播放免费观看 | 中文字幕在线乱 | 国产午夜在线观看视频 | 亚洲综合色视频在线观看 | 三级黄色免费 | 日韩精品字幕 | 99热手机在线 | 手机在线看片日韩 | 久久久久久久久久久久久久电影 | 99国产在线 | 久久亚洲欧美 | 日韩一区二区三区视频在线 | 在线一区二区三区 | 亚洲综合在线五月 | 日韩精品免费一区二区三区 | 国产精品九九九九九九 | 国产欧美精品在线观看 | 国产一区二区视频在线 | 日本精品视频一区 | 日韩在线视频免费观看 | av专区在线 | 99热最新在线 | 免费在线观看黄网站 | 婷婷丁香导航 | 天天综合网 天天综合色 | 91天堂在线观看 | 国产精品成人av在线 | 成人97视频一区二区 | 在线观看视频99 | 99视| 亚洲视频 一区 | 91桃色在线播放 | 色综合天天综合网国产成人网 | 天天摸天天操天天舔 | 成人久久18免费网站麻豆 | 日韩av影视 | 黄色精品在线看 | 中文字幕乱码日本亚洲一区二区 | 九九一级片| 韩国精品福利一区二区三区 | 欧美日韩精品在线视频 | 亚洲午夜精品一区二区三区电影院 | 在线国产片| 欧美99精品 | 天天色天天上天天操 | 99免费精品 | 偷拍视频一区 | 天堂网av 在线 | 美女网站黄在线观看 | 国产精品9区 | 日韩高清免费无专码区 | 亚洲第一成网站 | 欧洲视频一区 | 97在线资源 | 中文字幕亚洲五码 | 国产精品视频大全 | 色爱区综合激月婷婷 | 亚洲日韩中文字幕 | 91插插视频| 国产九色视频在线观看 | 美女精品在线 | 四虎成人在线 | av网站免费在线 | 狠狠操狠狠干2017 | 日日夜夜天天久久 | 911精品美国片911久久久 | 一区二区三区高清不卡 | 成人一级在线观看 | 蜜臀aⅴ国产精品久久久国产 | 日韩av高清 | 日日噜噜噜噜夜夜爽亚洲精品 | 国产资源在线观看 | 午夜精品久久一牛影视 | 黄色大片网 | 欧美一级片免费在线观看 | 91在线区| 亚洲精品国产精品99久久 | 69精品视频 | 在线观看日本高清mv视频 | 国产理论一区二区三区 | 欧美性粗大hdvideo | 在线精品观看国产 | 超碰97人人射妻 | 久久久久久久免费看 | 午夜美女视频 | 日韩二区三区 | 久久久久久亚洲精品 | 日韩专区 在线 | 欧美在线一二区 | 国产在线资源 | 天堂网一区 | 最新免费av在线 | 一区二区国产精品 | 美女视频黄色免费 | 国产精品久久久久久久妇 | 日本精品视频在线观看 | 亚洲理论影院 | 亚洲丝袜一区 | 久草在线观 | 色偷偷97 | 亚洲精品免费在线播放 | 亚洲最新av在线网站 | 国产 在线 高清 精品 | av电影一区 | 亚洲乱亚洲乱妇 | 在线日韩| 91精品一区国产高清在线gif | 深爱激情综合 | 色网av | 国产精久久久久久妇女av | 伊人成人久久 | 激情欧美日韩一区二区 | 欧美怡红院视频 | 欧美国产亚洲精品久久久8v | 欧美中文字幕第一页 | 国产在线美女 | 一区二区视频在线看 | 久久热首页| 91在线免费播放视频 | 久久久久久国产一区二区三区 | 2022久久国产露脸精品国产 | 91九色porny蝌蚪视频 | 美女啪啪图片 | 97人人人 | 伊人黄色网 | 国产91精品久久久久 | 青青河边草观看完整版高清 | 日韩首页| 在线免费看黄色 | 午夜体验区 | 在线视频你懂得 | 欧美一级片免费观看 | 青青草国产在线 | 国产1区2| 国产在线精品二区 | 国产一二区视频 | 97综合网| 亚洲精品国产综合久久 | av女优中文字幕在线观看 | 国产精品中文字幕在线观看 | 亚洲一区动漫 | 中中文字幕av | 欧美少妇xxx | 精品国产一区二区三区四 | 成人试看120秒 | 激情自拍av | 91亚洲精品久久久蜜桃网站 | 欧美成年网站 | 国产成人精品av久久 | 亚洲视频第一页 | 日韩中文字幕在线 | 狠狠狠色丁香婷婷综合激情 | 亚洲精品动漫久久久久 | 婷婷丁香色 | a黄在线观看 | 欧美亚洲国产日韩 | 在线成人高清电影 | 中文字幕在线电影 | 黄色一级大片在线免费看国产一 | 久久理论片| 午夜精品久久久久久久99婷婷 | 日韩av中文字幕在线免费观看 | 国产专区日韩专区 | 久久久亚洲精华液 | 色播激情五月 | 久久免费公开视频 | 久久在线精品视频 | 久久免费视频5 | 911精品视频 | 成人av在线电影 | 亚洲精品高清在线观看 | 国产福利小视频在线 | 91精品啪在线观看国产 | 婷色在线 | 久久官网| 爱爱av网| 欧美精品天堂 | 五月婷影院 | 久久久久99精品成人片三人毛片 | 精品99在线视频 | 黄色特级毛片 | 免费色黄| 日韩av电影一区 | 久久久久久久福利 | 日本公妇在线观看高清 | 色噜噜在线观看视频 | 涩涩爱夜夜爱 | 久久国产二区 | 婷色在线| 国产精品 中文字幕 亚洲 欧美 | 国产成本人视频在线观看 | 日韩肉感妇bbwbbwbbw | 国产视频在线一区二区 | 视色网站 | 久草网在线视频 | 国产精品伦一区二区三区视频 | av手机版 | www.天天综合 | 国产精品综合在线观看 | 亚洲国产精品久久 | av在线短片| av中文字幕在线免费观看 | 日本久久久久久久久久 | 日本黄色免费在线观看 | 深爱五月网 | 在线免费观看黄色大片 | 国产精品美女网站 | 国产黑丝一区二区 | 四虎最新域名 | 久久久亚洲国产精品麻豆综合天堂 | 亚洲人成人天堂h久久 | 色综合久久网 | 亚洲一区日韩在线 | 久久夜靖品 | 亚洲精品综合一二三区在线观看 | 99精品视频免费 | 日日夜夜人人精品 | 中文字幕在线免费播放 | 中文在线最新版天堂 | 九九日九九操 | 色吊丝在线永久观看最新版本 | 伊人午夜| 四虎影视4hu4虎成人 | 射综合网 | 天天干夜夜擦 | 日本精品视频一区二区 | 日韩av资源在线观看 | 久久黄色网 | 在线观看视频h | 中文字幕在线免费观看 | 91香蕉视频黄色 | 91视频91色 | 在线亚洲人成电影网站色www | 99在线视频网站 | 久久综合狠狠综合 | 美女黄濒 | 日本69hd | 欧美性色xo影院 | 成人av网站在线播放 | 国产特黄色片 | 最新av观看 | 婷婷综合导航 | 91综合视频在线观看 | www.香蕉视频| av在线官网 | 久久久久久久亚洲精品 | 久久精品五月 | 99在线精品视频在线观看 | 国产精品系列在线观看 | 久草影视在线 | 91久久国产露脸精品国产闺蜜 | 久久国产网站 | 国产淫片免费看 | 免费三级骚 | 人人澡人摸人人添学生av | 精品亚洲男同gayvideo网站 | 中文字幕日韩有码 | 免费日韩在线 | av一区二区三区在线 | 免费看黄20分钟 | 国产一区二区综合 | 日韩精品你懂的 | 国产中文在线观看 | 国产精品九九热 | 夜色成人av| 天堂在线v| 日韩极品在线 | 国产又粗又长的视频 | 综合天天色 | 91免费观看视频网站 | 国产成人在线看 | www久| 天天综合五月天 | 日本爱爱免费 | 久久草在线精品 | 黄色大全在线观看 | 看v片 | 天堂av网在线 | 日韩区视频 | 亚洲欧美成人网 | 超碰九九 | 日本精品一区二区三区在线观看 | 九九热久久久 | 久久久精品国产免费观看同学 | 一本大道久久精品懂色aⅴ 五月婷社区 | 黄色软件在线看 | 四虎影视8848aamm | 亚洲精品tv久久久久久久久久 | 国产精品免费在线播放 | 肉色欧美久久久久久久免费看 | 亚洲激情 欧美激情 | 欧美日韩亚洲在线观看 | 日韩天堂在线观看 | 人人插人人玩 | 欧美日韩视频精品 | 成人免费色 | av在线网站免费观看 | 午夜 久久 tv | 黄色精品一区 | 91大神精品视频在线观看 | 一区二区日韩av | 日韩久久精品一区二区三区下载 | 免费的国产精品 | 免费观看性生交 | 中午字幕在线观看 | 91视频啪 | 丁香综合 | 日韩av成人免费看 | 亚洲狠狠 | 五月开心激情 | 国产成人福利在线观看 | 精品美女国产在线 | 国产精品成人久久久久久久 | 96在线| 免费看三级 | 二区三区av | 国产小视频国产精品 | 日韩欧美在线视频一区二区 | 人人干人人干人人干 | 久久久久激情 | 尤物九九久久国产精品的分类 | 国产一区免费看 | 欧美精品一区二区三区一线天视频 | 搡bbbb搡bbb视频 | 91av视频在线播放 | 久久在现视频 | 狠狠操导航 | 天天干天天摸 | 亚洲天堂网视频在线观看 | 在线日本看片免费人成视久网 | 国产剧情在线一区 | 91视频免费看片 | www狠狠| 日韩a欧美| 久久久久久国产精品 | 九九热精品在线 | 美女免费黄网站 | 日韩免费 | 日本中文字幕在线视频 | 婷婷激情综合五月天 | 免费成人在线观看视频 | 久久久久麻豆v国产 | 九九视频网站 | 成人午夜电影在线观看 | 亚洲国产成人久久综合 | 中文字幕在线看视频 | 免费一级特黄录像 | 日韩一二区在线观看 | 九九久久国产 | 亚洲午夜久久久影院 | 久久不射电影院 | 国产美腿白丝袜足在线av | 亚洲一片黄 | av中文字幕日韩 | 免费高清在线一区 | 日韩欧美在线观看一区二区 | 国产一区二区免费 | 天天躁天天狠天天透 | 一级黄色片在线免费看 | 久久久不卡影院 | 激情欧美丁香 | 在线看av网址 | 婷婷六月天天 | 欧美一级高清片 | 国产精品久久久久久久久费观看 |