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

Python操作Redis大全

開發 后端 其他數據庫 Redis
Python操作Redis主要利用了redis模塊來實現,list表操作函數主要模擬了Redis操作命令LPUSH,LRANGE,LINDEX,BLPOP,BRPOP。

[[348737]]

一、字符串 strings

Python操作Redis的redis模塊對字符串(string)的主要操作函數包括:SET、GET、GETSET、SETEX、SETNX、MSET、MSETNX、INCR(INCRBY,DECR,DECRBY在python中庸同一個函數incr實現)、APPEND、SETRANGE、STRLEN。函數說明如下:

    1.  SET:為指定的鍵(key)設置值(value), set(self, name, value, **kwargs)。

    2.  GET:獲取指定鍵(key)綁定的值(value),get(self, name)。

    3.  GETSET:為指定的鍵(key)設置新的值(value),并返回舊的值(old Value),getset(self, name, value)

    4.  SETEX:為指定的鍵(key)設置過期以秒(second)計的過期時間,setex(self, name, value, time)

    5.  SETNX:鍵(key)不存在時,為鍵(key)指定值(value),setnx(self, name, value)

    6.  MSET:一次性設置多個鍵-值(key-value)對,函數設置的鍵-值對(即mapping所指內容)數據要以Python字典數據類型傳入,mset(self, mapping)

    7.  MSETNX:鍵-值(key-value)對不存在時,設置鍵-值(key-value)對,msetnx(self, mapping),mapping值參考6

    8.  INCR:自增函數,默認步長為1,通過對步長(amount)大小以及字符的控制實現了INCRBY(amount>=1)、DECR(amount=-1)、DECRBY(amount<=-1)等函數功能,incr(self, name, amount=1)

    9.  APPEND:為指定的字符串追加值,若不存在則直接創建,append(self, key, value)

   10.  SETRANGE:用 value 參數覆寫給定 key 所儲存的字符串值,從偏移量 offset 開始,setrange(self, name, offset, value)

    11.  STRLEN:返回字符串的長度,當name不存在時返回0,strlen(self, name)

示例代碼如下: 

  1. #!/usr/bin/python  
  2. # -*- coding:utf-8 -*-  
  3. __author__ = 'Jack'  
  4. pool = redis.ConnectionPool(host='127.0.0.1'port=6379 
  5. r = redis.Redis(connection_pool=pool)  
  6. r.flushall()  # 清空Redis  
  7. r.setex('name', value='liaogx'time=2)  # 設置新值,過期時間為3s  
  8. r.mset(k1 = 'v1'k2 = 'v2'k3 = 'v3')  # 批量設置新值  
  9. print(r.mget('k1', 'k2', 'k3', 'k4'))  # 批量獲取新值  
  10. print(r.getset('name', 'liaogaoxiang'))  # 設置新值并獲取原來的值  
  11. print(r.getrange('name', 0, 1))  # 獲取子序列 0 <= x <= 1  
  12. r.setrange('name', 0, 'LIAO')  # 修改字符串內容,從指定字符串索引開始向后替換(新值太長時,則向后添加),返回值的長度  
  13. i = 0  
  14. while i < 4:  
  15.     print(r.get('name'))  
  16.     time.sleep(1)  
  17.     i += 1  
  18. source = 'foo'  
  19. r.set('n1', source)  
  20. r.setbit('n1', 7, 1)  
  21. '''  
  22. 注:如果在Redis中有一個對應:n1 = "foo",  
  23.     那么字符串foo的二進制表示為:01100110 01101111 01101111  
  24.     所以,如果執行 setbit('n1', 7, 1),則就會將第7位設置為1,  
  25.     那么最終二進制則變成 01100111 01101111 01101111,即:"goo" 
  26. '''  
  27. print(r.get('n1'))  
  28. print(r.getbit('n1', 7))  # 獲取n1對應的值的二進制表示中的某位的值 (0或1) 
  29. r.set('n2', '廖高祥')  
  30. print(r.strlen('n2'))  # 返回對應的字節長度(一個漢字3個字節)  
  31. r.set('num', 1)  
  32. r.incr('num', amount=10 
  33. r.decr('num', amount=1 
  34. print(r.get('num'))  # 自增num對應的值,當name不存在時,則創建name=amount,否則,則自增。 
  35. r.append('num', 111)  
  36. print(r.get('num'))  # 在redis num對應的值后面追加內容 

輸出結果如下: 

  1. [b'v1', b'v2', b'v3', None]  
  2. b'liaogx' 
  3. b'li'  
  4. b'LIAOgaoxiang' 
  5. b'LIAOgaoxiang'  
  6. b'LIAOgaoxiang'  
  7. b'LIAOgaoxiang'  
  8. b'goo'  
  9.  
  10.  
  11. b'10'  
  12. b'10111' 

二、列表 lists

Python操作Redis主要利用了redis模塊來實現,list表操作函數主要模擬了Redis操作命令LPUSH,LRANGE,LINDEX,BLPOP,BRPOP。函數說明如下:

  1.  lpush函數實現了從向指定redis列表頭部壓入數據功能,lpush key value
  2.  lrange獲取列表指定范圍的函數,lrange key start end
  3.  lindex根據列表下標量獲取列表元素值, lindex key index
  4.  blpop從列表頭部取出第一個元素,返回該元素值并從列表刪除(l代表left,左邊)
  5.  brpop從列表尾部取出第一個元素,返回該元素值并從列表刪除(r代表right,右邊)
  6.  LPUSHX、RPUSHX以及其他一些Redis列表(List)函數目前版本無法實現,如有可實現方法博客代碼事例將會得到更新。

示例代碼如下: 

  1. #!/usr/bin/python  
  2. # -*- coding:utf-8 -*-  
  3. __author__ = 'Jack'  
  4. pool = redis.ConnectionPool(host='127.0.0.1'port=6379 
  5. r = redis.Redis(connection_pool=pool)  
  6. r.flushall()  # 清空Redis  
  7. r.lpush('oo', 11)  # 保存順序為: 33,22,11  
  8. r.lpushx('oo', 00)  # 在name對應的list中添加元素,只有name已經存在時,值添加到列表的最左邊  
  9. print(r.llen('oo'))  # name對應的list元素的個數  
  10. r.linsert('oo', 'before', 11, 99)  # 在11之前插入值99  
  11. r.lset('oo', 1, 88)  # 對name對應的list中的某一個索引位置重新賦值  
  12. print(r.lrange('oo', 0, -1))  # 在name對應的列表分片獲取數據   
  13. r.lrem('oo', 88, num=1)  # 在name對應的list中刪除指定的值.num=0,刪除列表中所有的指定值;num=2,從前到后,刪除2個;num=-2,從后向前,刪除2個 
  14.  print(r.lrange('oo', 0, -1))  
  15. print(r.lpop('oo'))  # 在name對應的列表的左側獲取第一個元素并在列表中移除,返回值則是第一個元素  
  16. print(r.lindex('oo', 0))  # 在name對應的列表中根據索引獲取列表元素  
  17. r.lpush('l1', 11)  # index為0  
  18. r.rpush('l1', 22)  
  19. r.rpush('l1', 33)  
  20. r.rpush('l1', 44)  
  21. r.rpush('l1', 55)  # index為4  
  22. r.ltrim('l1', 1, 3)  # 在name對應的列表中移除沒有在[start-end]索引之間的值  
  23. print(r.lrange('l1', 0, -1))  
  24. r.rpoplpush('l1', 'l1')  # 從一個列表取出最右邊的元素,同時將其添加至另一個列表的最左邊;src要取數據的列表的name, dst要添加數據的列表的name  
  25. print(r.lrange('l1', 0, -1))  
  26. r.brpoplpush('l1', 'l1', timeout=3)  # # timeout,當src對應的列表中沒有數據時,阻塞等待其有數據的超時時間(秒),0 表示永遠阻塞  
  27. print(r.lrange('l1', 0, -1))  
  28. print(r.blpop('l1', 3))  # 從列表頭部取出第一個元素,返回該元素值并從列表刪除(l代表left,左邊)  
  29. print(r.lrange('l1', 0, -1))  
  30. '''  
  31.     # 由于redis類庫中沒有提供對列表元素的增量迭代,如果想要循環name對應的列表的所有元素,那么就需要:  
  32.     # 1、獲取name對應的所有列表  
  33.     # 2、循環列表  
  34.     # 但是,如果列表非常大,那么就有可能在第一步時就將程序的內容撐爆,所有有必要自定義一個增量迭代的功能:  
  35. '''  
  36. print('自定義增量迭代:')  
  37. r.flushall()  
  38. r.lpush('l1', 11)  # index為0  
  39. r.rpush('l1', 22)  
  40. r.rpush('l1', 33)  
  41. r.rpush('l1', 44)  
  42. r.rpush('l1', 55)  # index為4 
  43. def list_iter(name):  
  44.     list_count = r.llen(name)  
  45.     for index in range(list_count):  
  46.         yield r.lindex(name, index)  
  47. for item in list_iter('l1'):  
  48.     print(item) 

輸出結果如下: 

  1.  
  2. [b'0', b'88', b'11']  
  3. [b'0', b'11']  
  4. b'0'  
  5. b'11'  
  6. [b'22', b'33', b'44']  
  7. [b'44', b'22', b'33']  
  8. [b'33', b'44', b'22']  
  9. (b'l1', b'33')  
  10. [b'44', b'22']  
  11. 自定義增量迭代:  
  12. b'11'  
  13. b'22'  
  14. b'33'  
  15. b'44'  
  16. b'55' 

三、集合 sets

Redis 數據庫集合對象(set object)是由string類型的無重復元素的無需集合,底層編碼可以是intset或者hashtable。intset編碼的集合對象用整數集合最為底層實現,所有對象元素保存在整數集合中。Python的redis模塊實現了 SADD、SCARD 、SDIFF 、SDIFFSTORE、SINTER 、SINTERSTORE、SISMEMBER 、SMEMBERS 、SMOVE、SPOP、SRANDMEMBER、SREM、SUNION、SUNIONSTORE操作命令的基本用法。函數說明如下:

    1.  SADD:向集合對象添加成員,sadd(self, name, value)

    2.  SCARD:獲取集合元素個數,scard(self, name)

    3.  SDIFF:返回給定多個集合對象的差集(set key1-set key2..-set keyn),從左到右計算集合差集,sdiff(self, keys, *args)

    4.  SDIFFSTORE:返回給定給定多個集合對象的差集并存儲在目標(dest)集合中,sdiffstore(self, dest, keys, *args)

    5.  SINTER:返回給定所有集合(keys, args)的交集, sinter(self, keys, args)

    6.  SINTERSTORE:返回給定所有集合(keys, args)的交集并存儲在 集合(dest) 中, sinterstore(self, dest, keys, args)

    7.  SISMEMBER:判斷 value元素是否是集合 name 的成員,返回布爾邏輯值True或者False,sismember(self, name, value)

    8.  SMEMBERS:返回集合中所元素值的Python集合類型數據,smembers(self, name)

    9.  SMOVE:將元素value從集合src移動到 集合 dest。若元素value在集合src中不存在,則集合dest中不會添加元素value, smove(self, src, dest, value)

   10. SPOP:移除并返回集合中的一個隨機元素, spop(self, name)

   11.  SRANDMEMBER:返回集合中一個隨機數,但是不做移除操作, srandmember(self, name)。從Redis 2.6 版本開始, 在命令行下Srandmember 命令接受可選返回元素數量的參數 redis>SRANDMEMBER name count

   12.  SREM:移除集合中一個元素,srem(self, name, value),redis模塊任然沿用Redis 2.4 版本以前的只接受單個元素的用法。

   13.  SUNION:返回所有給定集合的并集中所有元素,sunion(self, keys, *args)

   14.  SUNIONSTORE:所有給定集合的并集存儲在集合dest 中, sunionstore(self, dest, keys, *args)

   15.  SSCAN:迭代集合中的元素,sscan(self, name, cursor=0, match=None, count=None)

示例代碼如下: 

  1. #!/usr/bin/python  
  2. # -*- coding:utf-8 -*-  
  3. __author__ = 'Jack'  
  4. pool = redis.ConnectionPool(host='127.0.0.1'port=6379 
  5. r = redis.Redis(connection_pool=pool)  
  6. r.flushall()  # 清空Redis  
  7. r.sadd('s1', 'v1', 'v1', 'v2', 'v3')  # name對應的集合中添加元素  
  8. r.sadd('s2', 'v2', 'v4')  # name對應的集合中添加元素  
  9. print(r.scard('s1'))  # 獲取name對應的集合中元素個數  
  10. print(r.sdiff('s1', 's2'))  #在第一個name對應的集合中且不在其他name對應的集合的元素集合  
  11. r.sdiffstore('s3', 's1', 's2')  # 獲取第一個name對應的集合中且不在其他name對應的集合,再將其新加入到dest對應的集合中  
  12. print(r.smembers('s3'))  # 獲取s3對應的集合的所有成員  
  13. print(r.sinter('s1', 's2'))  # 獲取s1, s2對應集合的交集  
  14. r.sinterstore('s4', 's1', 's2')  # 獲取s1, s2對應集合的交集,并將其存放到集合是s4中  
  15. print(r.smembers('s4'))  
  16. print(r.sunion('s1', 's2'))  # 獲取s1, s2對應集合的并集  
  17. r.sunionstore('s5', 's1', 's2')  # 獲取s1, s2對應集合的交集,并將其存放到集合是s5中  
  18. print(r.smembers('s5'))  
  19. print(r.sismember('s4', 'v4'))  # 檢查value是否是name對應的集合的成員  
  20. r.smove('s2', 's1', 'v4')  # 將集合s2中成員v4移至集合s1中  
  21. print(r.smembers('s1'))  
  22. r.srem('s1', 'v1')  # 在name對應的集合中刪除某些值  
  23. print(r.spop('s1'))  # 從集合的右側(尾部)移除一個成員,并將其返回 注意:集合是無序的,故結果隨機!  
  24. print(r.srandmember('s1'))  # 從name對應的集合中隨機獲取 numbers 個元素(Redis 2.6+) 

輸出結果如下: 

  1.  
  2. {b'v3', b'v1'}  
  3. {b'v3', b'v1'}  
  4. {b'v2'}  
  5. {b'v2'}  
  6. {b'v3', b'v2', b'v4', b'v1'}  
  7. {b'v3', b'v2', b'v4', b'v1'}  
  8. False  
  9. {b'v3', b'v2', b'v4', b'v1'}  
  10. b'v2'  
  11. b'v3' 

四、有序集合 sorted sets

命令 描述
Redis Zadd 命令 向有序集合添加一個或多個成員,或者更新已存在成員的分數
Redis Zcard 命令 獲取有序集合的成員數
Redis Zcount 命令 計算在有序集合中指定區間分數的成員數
Redis Zincrby 命令 有序集合中對指定成員的分數加上增量 increment
Redis Zinterstore 命令 計算給定的一個或多個有序集的交集并將結果集存儲在新的有序集合 key 中
Redis Zlexcount 命令 在有序集合中計算指定字典區間內成員數量
Redis Zrange 命令 通過索引區間返回有序集合成指定區間內的成員
Redis Zrangebylex 命令 通過字典區間返回有序集合的成員
Redis Zrangebyscore 命令 通過分數返回有序集合指定區間內的成員
Redis Zrank 命令 返回有序集合中指定成員的索引
Redis Zrem 命令 移除有序集合中的一個或多個成員
Redis Zremrangebylex 命令 移除有序集合中給定的字典區間的所有成員
Redis Zremrangebyrank 命令 移除有序集合中給定的排名區間的所有成員
Redis Zremrangebyscore 命令 移除有序集合中給定的分數區間的所有成員
Redis Zrevrange 命令 返回有序集中指定區間內的成員,通過索引,分數從高到底
Redis Zrevrangebyscore 命令 返回有序集中指定分數區間內的成員,分數從高到低排序
Redis Zrevrank 命令 返回有序集合中指定成員的排名,有序集成員按分數值遞減(從大到小)排序
Redis Zscore 命令 返回有序集中,成員的分數值
Redis Zunionstore 命令 計算給定的一個或多個有序集的并集,并存儲在新的 key 中
Redis Zscan 命令 迭代有序集合中的元素(包括元素成員和元素分值)

示例代碼如下: 

  1. #!/usr/bin/python  
  2. # -*- coding:utf-8 -*-  
  3. __author__ = 'Jack'  
  4. pool = redis.ConnectionPool(host='127.0.0.1'port=6379 
  5. r = redis.Redis(connection_pool=pool)  
  6. r.flushall()  # 清空Redis  
  7. r.zadd('z1', '11', 1, '22', 2, '33', 3, '44', 4, '55', 5, '66', 6, '66', 7)  # 在name對應的有序集合中添加元素  
  8. print(r.zcard('z1'))  # 獲取name對應的有序集合元素的數量  
  9. print(r.zcount('z1', 1, 2))  # 獲取name對應的有序集合中分數 在 [min,max] 之間的個數  
  10. r.zincrby('z1', '11', amount=5)  # 自增name對應的有序集合的 name 對應的分數 
  11. print(r.zrange('z1', 0, -1, desc=Falsewithscores=True))  # 值11被排序到最后;此處表示按元素的值升序排列  
  12. print(r.zrank('z1', 33))  # 獲取某個值在 name對應的有序集合中的排行(從 0 開始)  
  13. r.zrem('z1', '66')  # 刪除name對應的有序集合中值是values的成員  
  14. print(r.zrange('z1', 0, -1, desc=Falsewithscores=True))  
  15. r.zremrangebyrank('z1', 0, 1)  # 根據排行范圍刪除  
  16. print(r.zrange('z1', 0, -1, desc=Falsewithscores=True))  
  17. r.zremrangebyscore('z1', 4.5, 5.5)  # 根據分數范圍刪除  
  18. print(r.zrange('z1', 0, -1, desc=Falsewithscores=True))  
  19. print(r.zscore('z1', 11))  # 獲取name對應有序集合中 value 對應的分數  
  20. r.zadd("zset_name", "a1", 6, "a2", 2, "a3", 5)  
  21. r.zadd('zset_name1', a1=7b1=10b2=5
  22. '''  
  23.     獲取兩個有序集合的交集并放入dest集合,如果遇到相同值不同分數,則按照aggregate進行操作  
  24.     aggregate的值為: SUM  MIN  MAX  
  25. '''  
  26. r.zinterstore('zset_name2', ('zset_name', 'zset_name1'), aggregate='Sum'
  27. print(r.zrange('zset_name2', 0, -1, desc=Falsewithscores=True)) 

輸出結果如下: 

  1.  
  2.  
  3. [(b'22', 2.0), (b'33', 3.0), (b'44', 4.0), (b'55', 5.0), (b'11', 6.0), (b'66', 6.0)]  
  4.  
  5. [(b'22', 2.0), (b'33', 3.0), (b'44', 4.0), (b'55', 5.0), (b'11', 6.0)]  
  6. [(b'44', 4.0), (b'55', 5.0), (b'11', 6.0)]  
  7. [(b'44', 4.0), (b'11', 6.0)]  
  8. 6.0  
  9. [(b'a1', 13.0)] 

五、哈希 hashes

Redis 數據庫hash數據類型是一個string類型的key和value的映射表,適用于存儲對象。redis 中每個hash可以存儲鍵值對多達40億。Python的redis模塊實現了Redis哈希(Hash)命令行操作的幾乎全部命令,包括HDEL、HEXISTS、HGET、HGETALL、HINCRBY、HKEYS、HLEN 、HMGET 、HMSET 、HSET 、HSETNX 、HVALS 、HINCRBYFLOAT等命令。函數說明如下:

    1.  HDEL:刪除對應哈希(Hash)表的指定鍵(key)的字段,hdel(self, name, key)

    2.  HEXISTS:檢測哈希(Hash)表對應鍵(key)字段是否存在,返回布爾邏輯,hexists(self, name, key)

    3.  HGET:獲取哈希(Hash)指定鍵(key)對應的值,hget(self, name, key)

    4.  HGETALL:獲取哈希(Hash)表的鍵-值對(key-value pairs),返回python字典類型數據,hgetall(self, name)

    5.  HINCRBY:為哈希表(Hash)指定鍵(key)對應的值(key)加上指定的整數數值(int,可為負值)hincrby(self>, name, key, amount=1),Redis 中本操作的值被限制在 64 位(bit)有符號數字。

    6.  HKEYS:返回哈希表(Hash)對應鍵(key)的數組(Python稱之為列表List),hkeys(self, name)

    7.  HLEN:獲取哈希表(Hash)中鍵-值對(key-value pairs)個數,hlen(self, name)

    8.  HMGET:獲取哈希表(Hash)中一個或多個給點字段的值,不存在返回nil(Redis命令行)/None(Python),hmget(self, name, keys),其中keys可以為列表(list)

    9.  HMSET:設置對個鍵-值對(key-value pairs)到哈希表(Hash)中,python輸入值(mapping)為字典(dictionary)類型,hmset(self, name, mapping)

   10. HSET:為哈希表(Hash)賦值,若鍵(key)存在值(value)則覆蓋,不存在則創建,hset(self, name, key, value)

   11.  HSETNX:為哈希表(Hash)不存值(value)的鍵(key)賦值,存在操作無效,對應值(value)無變化,hsetnx(self, name, key, value)

   12.  HVALS:返回哈希表(Hash)對應值(value)的列表,hvals(self, name)

   13.  HINCRBYFLOAT:為哈希表 key 中的指定字段的浮點數值加上增量 increment ,hincrbyfloat(self, name, key, amount=1.0)

示例代碼如下: 

  1. #!/usr/bin/python  
  2. # -*- coding:utf-8 -*-  
  3. __author__ = 'Jack'  
  4. pool = redis.ConnectionPool(host='127.0.0.1'port=6379 
  5. r = redis.Redis(connection_pool=pool)  
  6. r.flushall()  # 清空Redis  
  7. r.hset('n1', 'k1', 'v1')  # hset(name, key, value),name對應的hash中設置一個鍵值對(不存在,則創建;否則,修改)  
  8. print(r.hget('n1', 'k1'))  
  9. r.hmset('n2', {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'})  # hmset(name, mapping),在name對應的hash中批量設置鍵值對  
  10. print(r.hmget('n2', 'k2'))  
  11. print(r.hgetall('n2'))  # 獲取name對應hash的所有鍵值  
  12. print(r.hlen('n2'))  # 獲取name對應的hash中鍵值對的個數  
  13. print(r.hkeys('n2'))  # 獲取name對應的hash中所有的key的值  
  14. print(r.hvals('n2'))  # 獲取name對應的hash中所有的value的值  
  15. print(r.hexists('n2', 'k4')) # 檢查name對應的hash是否存在當前傳入的key  
  16. r.hdel('n2', 'k3')  # 將name對應的hash中指定key的鍵值對刪除  
  17. r.hset('n3', 'k1', 1)  
  18. r.hincrby('n3', 'k1', amount=1)  # hincrby(name, key, amount=1),自增name對應的hash中的指定key的value的值,不存在則創建key=amount  
  19. print(r.hgetall('n3')) 

輸出結果如下: 

  1. b'v1'  
  2. [b'v2']  
  3. {b'k1': b'v1', b'k2': b'v2', b'k3': b'v3'}  
  4.  
  5. [b'k1', b'k2', b'k3']  
  6. [b'v1', b'v2', b'v3']  
  7. False  
  8. {b'k1': b'2'}  

 

責任編輯:龐桂玉 來源: 馬哥Linux運維
相關推薦

2010-07-19 11:00:24

Perl操作符

2011-01-20 10:57:46

Postfix

2024-02-20 08:25:41

Redis內存數據庫Python

2016-06-14 14:50:17

Python性能

2018-10-31 11:30:28

Redis數據分布式鎖

2019-02-21 15:01:45

PythonWeb部署

2018-12-29 15:50:06

Python基礎知識編程語言

2009-08-10 18:05:19

C#數據庫查詢

2024-05-16 12:51:15

WinForms線程UI

2022-09-02 14:56:24

Python界面開發庫框架

2018-11-09 10:37:29

Redis面試存儲

2023-11-06 16:08:24

JavaList開發

2010-05-20 12:31:37

MyEclipse6.

2017-12-26 15:10:30

數據庫Oracle操作語句

2011-01-14 08:46:01

2022-03-22 10:52:02

Redis變慢服務器

2023-02-26 23:41:37

2023-02-24 07:40:11

2010-06-01 13:20:45

2024-01-10 14:45:46

Redis數據庫存儲
點贊
收藏

51CTO技術棧公眾號

亚洲 小说 欧美 激情 另类| 国产一区二区色| 亚洲欧美日韩爽爽影院| 欧美黑人在线观看| 亚洲三级黄色片| 美女免费视频一区| 欧美乱大交xxxxx| 手机在线成人av| 国产69精品久久久久按摩| 亚洲精品美国一| 欧美成人一区二区在线| 91美女精品网站| 一本色道久久综合一区| 中文字幕日韩有码| 亚洲av成人片色在线观看高潮| 主播大秀视频在线观看一区二区| 亚洲欧美偷拍三级| 欧美国产视频在线观看| 99在线观看免费| 久久字幕精品一区| 欧美人在线视频| 超碰人人干人人| 国偷自产视频一区二区久| 欧美日韩一区国产| 伊人成色综合网| 99自拍视频在线观看| 久久久欧美精品sm网站| 3d精品h动漫啪啪一区二区| 亚洲天堂五月天| 亚洲成人中文| 欧美精品在线免费| 中日韩一级黄色片| 精品国产一区二区三区四区| 亚洲国产成人精品久久| 午夜影院免费观看视频| 国语自产精品视频在线看抢先版结局 | 欧美精品在线播放| 国产精品一区二区亚洲| 国产欧美高清视频在线| 亚洲欧美国产一本综合首页| 熟妇高潮一区二区| 在这里有精品| 日韩视频一区二区| 欧美精品色视频| 日韩午夜视频在线| 欧美性做爰猛烈叫床潮| 红桃av在线播放| 少妇淫片在线影院| 天天色天天操综合| 日韩av综合在线观看| av福利导福航大全在线| 亚洲超丰满肉感bbw| 欧美黑人在线观看| 91白丝在线| 亚洲成人免费在线| 青青草视频在线免费播放| 草草影院在线| 欧美日韩另类在线| 成人免费在线小视频| 三级中文字幕在线观看| 色综合天天综合网天天看片| 国产淫片av片久久久久久| 日韩精品专区| 91精品办公室少妇高潮对白| 激情网站五月天| 97久久网站| 欧美精品v国产精品v日韩精品 | 99久久婷婷国产综合精品首页| 欧美午夜女人视频在线| 动漫av免费观看| 国产成+人+综合+亚洲欧美| 欧美日韩的一区二区| 中文字幕国产高清| 一区二区在线免费播放| 日韩精品视频免费| 这里只有久久精品| 97精品国产福利一区二区三区| 精品激情国产视频| 久久久全国免费视频| 亚洲三级视频| 国产精品h在线观看| 亚洲天堂中文字幕在线| 国产不卡视频一区| 免费成人深夜夜行视频| 在线观看麻豆| 亚洲图片欧美色图| 无码人妻丰满熟妇区毛片| 日本久久久久| 精品国产自在久精品国产| 中文字幕在线永久| 日韩av免费大片| 欧美国产极速在线| 高清乱码免费看污| 国产毛片精品国产一区二区三区| 国产麻豆日韩| 国产在线视频网| 亚洲综合精品久久| 国产一线二线三线在线观看| 91成人短视频在线观看| 亚洲精品动漫100p| 久久精品在线观看视频| 亚洲国产三级| 国产精品午夜一区二区欲梦| 亚洲黄色小说网址| 欧美高清在线一区| 少妇高潮毛片色欲ava片| 国外成人福利视频| 亚洲精品suv精品一区二区| 影音先锋男人看片资源| 国产日韩亚洲| 999在线观看免费大全电视剧| 国产综合在线观看| 亚洲成人1区2区| 中文字幕国产高清| 精品美女久久久| 性欧美xxxx交| jizz国产视频| 欧美激情一区不卡| 欧美国产亚洲一区| 成人av动漫| 久久久极品av| 中文字幕a级片| 久久中文娱乐网| 国内少妇毛片视频| 国产精品免费精品自在线观看| 亚洲图片在区色| 日本一级一片免费视频| 成人一区二区三区| 男女裸体影院高潮| 欧美网站免费| 自拍偷拍亚洲区| 成年人视频免费| 久久婷婷成人综合色| 少妇高潮毛片色欲ava片| 日韩精品视频在线看| zzijzzij亚洲日本成熟少妇| 成人一二三四区| 久久九九久精品国产免费直播| 亚洲熟妇无码一区二区三区导航| 久久久久九九精品影院| 大胆欧美人体视频| 亚洲永久精品视频| 日本一区二区在线不卡| 欧美亚洲日本在线观看| 精品国产精品国产偷麻豆| 日本午夜在线亚洲.国产| 日本国产在线观看| 五月激情综合网| 日本一区二区三区网站| 午夜影院日韩| 欧美午夜欧美| 成人国产精品| 日韩一区二区久久久| 国产又大又长又粗| 亚洲日本在线天堂| 日本少妇一级片| 精久久久久久| 久久久久久九九九九| www.日韩| 中文字幕在线看视频国产欧美在线看完整 | 国产中文字幕日韩| av在线下载| 亚洲成人在线视频播放| 日韩毛片一区二区三区| 久久九九久久九九| 91 在线视频观看| 欧美久久一区| 久久99精品久久久久久秒播放器 | 国产精品久久久久久福利| 欧美一区二区在线看| 国产一级免费av| 91欧美一区二区| 美女网站免费观看视频| 91成人免费| 国产精品免费区二区三区观看| 精品丝袜在线| 怡红院精品视频| 国产深喉视频一区二区| 亚洲高清中文字幕| 国产视频三区四区| 国产精品资源在线看| 免费av手机在线观看| 国产99精品一区| 91精品视频播放| 免费在线国产视频| 亚洲一级黄色av| 精品人妻aV中文字幕乱码色欲| 黄色成人av网| www.99re6| av一区二区久久| 在线观看免费av网址| 夜久久久久久| 致1999电视剧免费观看策驰影院| а√中文在线天堂精品| 国产精品久久久久久网站| 中文字幕中文字幕在线中高清免费版| 日韩av综合网站| 91国内精品视频| 色偷偷一区二区三区| 男人与禽猛交狂配| 国产三级精品三级在线专区| 国产成人av免费观看| 日本v片在线高清不卡在线观看| 男人的天堂视频在线| 国产一区二区三区四区| 官网99热精品| 欧美少妇激情| 日韩av免费在线播放| 毛片在线网址| 久久这里只有精品99| 国产小视频免费在线网址| 日韩午夜中文字幕| 中文字幕91爱爱| 欧美日韩国产中文精品字幕自在自线 | 国产精品剧情在线亚洲| 国产精品无码一区二区三区免费 | 国内精品视频在线播放| 亚洲日本免费电影| 国产精品久久久久久久久| 国产精品一二三产区| 美女国内精品自产拍在线播放| 91网在线播放| 亚洲男人的天堂在线播放| 亚洲精品久久久狠狠狠爱 | 欧美a级在线| 亚洲欧美精品| 成人激情电影在线| 欧美精品123| 久久男人av| 国产精品成人观看视频免费| 精品91福利视频| 成人激情视频网| 伊人久久大香线蕉综合影院首页| 国产精品爱啪在线线免费观看| 成人美女黄网站| 国产91|九色| 在线女人免费视频| 97av在线视频| 欧美伦理91| 国内精品久久久久久影视8| 日韩成人伦理| 欧美精品成人91久久久久久久| 成人在线直播| 欧美精品在线免费观看| 色噜噜狠狠狠综合欧洲色8| 欧美xxxx综合视频| a级毛片免费观看在线| 九九热最新视频//这里只有精品| 亚洲妇熟xxxx妇色黄| 欧美黑人极品猛少妇色xxxxx| 性欧美1819sex性高清大胸| 久久不射电影网| 伦理在线一区| 97成人超碰免| 亚州一区二区三区| 国产日韩欧美视频| 欧美a级大片在线| 成人免费在线一区二区三区| xxxx日韩| 日本一区高清不卡| 日韩av密桃| 青青草综合在线| 国产视频一区在线观看一区免费| 少妇高潮喷水在线观看| 天堂在线亚洲视频| 污污网站免费观看| 国产激情精品久久久第一区二区| 国产精品果冻传媒| 91麻豆精品视频| 欧美美女性生活视频| 亚洲另类春色国产| 九一国产在线观看| 欧美日韩在线播| 丰满人妻av一区二区三区| 亚洲电影成人av99爱色| 国产黄色片在线播放| 日韩中文字幕视频在线观看| 伊人在我在线看导航| 91av福利视频| 精品国产黄a∨片高清在线| 国产精品二区二区三区| 欧美码中文字幕在线| 日韩a级黄色片| 久久久久久9| 在线成人免费av| 91丨porny丨中文| 少妇高潮一区二区三区喷水| 亚洲国产成人tv| 中文字幕制服诱惑| 亚洲成人aaa| 幼a在线观看| 51ⅴ精品国产91久久久久久| 综合欧美精品| 欧美日韩综合久久| 欧美视频二区| 国产三级三级看三级| 成人av综合一区| а天堂中文在线资源| 天天做天天摸天天爽国产一区| 一级全黄少妇性色生活片| 亚洲国产成人一区| 日本视频在线| 国产成人短视频| 国产香蕉精品| 国产又粗又大又爽的视频| 日精品一区二区三区| 无码国产精品一区二区免费式直播| 中文在线一区二区| 日韩精品在线免费视频| 日韩三级在线观看| 日本三级在线视频| 日本中文字幕久久看| 九色丨蝌蚪丨成人| 国产精品美女在线播放| 性一交一乱一区二区洋洋av| 在线精品视频播放| 亚洲色图.com| 伊人亚洲综合网| 亚洲天堂成人在线| 极品在线视频| 成人av免费看| 自拍欧美日韩| 亚洲一区二区三区观看| 国产精品网曝门| 男操女视频网站| 国产手机视频精品| 是的av在线| 国产一区喷水| 在线观看视频日韩| 91精品国产高清91久久久久久| 国产精品国产三级国产aⅴ中文 | 色乱码一区二区三在线看| 日韩午夜免费| 久久精品老司机| 午夜精品久久久| 色一情一乱一区二区三区| 久久久免费精品视频| 亚洲国产中文在线二区三区免| 裸体裸乳免费看| 国产在线视视频有精品| 日韩欧美综合视频| 7799精品视频| 在线观看操人| 国产精品区一区| 亚洲黄色毛片| av网页在线观看| 欧美日韩精品中文字幕| 亚洲色图 校园春色| 情事1991在线| 国产精品一区高清| 九色porny自拍| 亚洲欧美在线视频观看| 国产激情视频在线播放| 久久成人国产精品| 91蜜桃臀久久一区二区| 99久久国产综合精品五月天喷水| eeuss国产一区二区三区| 国产99久久久| 亚洲天堂免费观看| 狂野欧美性猛交xxxx| 小说区视频区图片区| 国产高清视频一区| 日本少妇激情舌吻| 亚洲人成啪啪网站| 男人亚洲天堂| 99热这里只有精品免费| 99在线精品视频| 免费黄色一级大片| 久久精品视频亚洲| 成功精品影院| www.日本xxxx| 亚洲精品欧美二区三区中文字幕| jlzzjlzzjlzz亚洲人| 欧美激情奇米色| 精品在线99| 又黄又爽又色的视频| 精品成人乱色一区二区| a天堂中文在线88| 2014亚洲精品| 丝瓜av网站精品一区二区 | 欧美大片一区| 欧美深性狂猛ⅹxxx深喉| 欧美影院一区二区三区| av免费看在线| 日韩电影天堂视频一区二区| 韩国精品在线观看 | 欧美日韩免费在线视频| 日本在线视频网址| 日韩欧美精品一区二区三区经典| 激情综合网最新| 五月激情六月丁香| 另类少妇人与禽zozz0性伦| 日本在线中文字幕一区| 国产无色aaa| 色呦呦一区二区三区| 国内在线免费视频| 亚洲欧美精品| 久久久久久免费网| 国精产品一品二品国精品69xx| 国产精品日韩在线观看|