日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

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

数据库

第三章 Redis/SSDB+Twemproxy安装与使用

發布時間:2024/9/20 数据库 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第三章 Redis/SSDB+Twemproxy安装与使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目前對于互聯網公司不使用Redis的很少,Redis不僅僅可以作為key-value緩存,而且提供了豐富的數據結果如set、list、map等,可以實現很多復雜的功能;但是Redis本身主要用作內存緩存,不適合做持久化存儲,因此目前有如SSDB、ARDB等,還有如京東的JIMDB,它們都支持Redis協議,可以支持Redis客戶端直接訪問;而這些持久化存儲大多數使用了如LevelDB、RocksDB、LMDB持久化引擎來實現數據的持久化存儲;京東的JIMDB主要分為兩個版本:LevelDB和LMDB,而我們看到的京東商品詳情頁就是使用LMDB引擎作為存儲的,可以實現海量KV存儲;當然SSDB在京東內部也有些部門在使用;另外調研過得如豆瓣的beansDB也是很不錯的。具體這些持久化引擎之間的區別可以自行查找資料學習。

?

Twemproxy是一個Redis/Memcached代理中間件,可以實現諸如分片邏輯、HashTag、減少連接數等功能;尤其在有大量應用服務器的場景下Twemproxy的角色就凸顯了,能有效減少連接數。

?

Redis安裝與使用?

1、下載redis并安裝

Java代碼??
  • cd?/usr/servers/??
  • wget?https://github.com/antirez/redis/archive/2.8.19.tar.gz??
  • tar?-xvf?2.8.19.tar.gz??
  • cd?redis-2.8.19/??
  • make???
  • 通過如上步驟構建完畢。

    ?

    2、后臺啟動Redis服務器

    Java代碼??
  • nohup?/usr/servers/redis-2.8.19/src/redis-server??/usr/servers/redis-2.8.19/redis.conf?&??
  • ?

    3、查看是否啟動成功

    Java代碼??
  • ps?-aux?|?grep?redis??
  • ?

    4、進入客戶端

    Java代碼??
  • /usr/servers/redis-2.8.19/src/redis-cli??-p?6379??
  • ?

    5、執行如下命令??

    Java代碼??
  • 127.0.0.1:6379>?set?i?1??
  • OK??
  • 127.0.0.1:6379>?get?i??
  • "1"???
  • 通過如上命令可以看到我們的Redis安裝成功。更多細節請參考http://redis.io/。

    ?

    SSDB安裝與使用

    1、下載SSDB并安裝

    Java代碼??
  • #首先確保安裝了g++,如果沒有安裝,如ubuntu可以使用如下命令安裝??
  • apt-get?install?g++??
  • cd?/usr/servers??
  • wget?https://github.com/ideawu/ssdb/archive/1.8.0.tar.gz??
  • tar?-xvf?1.8.0.tar.gz??
  • make???
  • ?

    2、后臺啟動SSDB服務器

    Java代碼??
  • nohup?/usr/servers/ssdb-1.8.0/ssdb-server??/usr/servers/ssdb-1.8.0/ssdb.conf?&??
  • ?

    3、查看是否啟動成功? ?

    Java代碼??
  • ps?-aux?|?grep?ssdb??
  • ?

    4、進入客戶端

    Java代碼??
  • /usr/servers/ssdb-1.8.0/tools/ssdb-cli?-p?8888??
  • /usr/servers/redis-2.8.19/src/redis-cli??-p?888???
  • 因為SSDB支持Redis協議,所以用Redis客戶端也可以訪問?

    ?

    5、執行如下命令

    Java代碼??
  • 127.0.0.1:8888>?set?i?1??
  • OK??
  • 127.0.0.1:8888>?get?i??
  • "1"??
  • 安裝過程中遇到錯誤請參考http://ssdb.io/docs/zh_cn/install.html;對于SSDB的配置請參考官方文檔https://github.com/ideawu/ssdb。

    ?

    Twemproxy安裝與使用

    首先需要安裝autoconf、automake、libtool工具,比如ubuntu可以使用如下命令安裝

    Java代碼??
  • apt-get?install?autoconf?automake??
  • apt-get?install?libtool??
  • ??

    1、下載Twemproxy并安裝

    Java代碼??
  • cd?/usr/servers??
  • wget?https://github.com/twitter/twemproxy/archive/v0.4.0.tar.gz??
  • tar?-xvf?v0.4.0.tar.gz????
  • cd?twemproxy-0.4.0/??
  • autoreconf?-fvi??
  • ./configure?&&?make???
  • 此處根據要注意,如上安裝方式在有些服務器上可能在大量如mset時可能導致Twemproxy崩潰,需要使用如?CFLAGS="-O1" ./configure && make或CFLAGS="-O3 -fno-strict-aliasing" ./configure && make安裝。

    ?

    2、配置

    Java代碼??
  • vim?/usr/servers/twemproxy-0.4.0/conf/nutcracker.yml??
  • ?

    Java代碼??
  • server1:??
  • ??listen:?127.0.0.1:1111??
  • ??hash:?fnv1a_64??
  • ??distribution:?ketama??
  • ??redis:?true??
  • ??servers:??
  • ???-?127.0.0.1:6379:1??
  • ?

    3、啟動Twemproxy代理

    Java代碼??
  • /usr/servers/twemproxy-0.4.0/src/nutcracker??-d?-c?/usr/servers/twemproxy-0.4.0/conf/nutcracker.yml??
  • -d指定后臺啟動? -c指定配置文件;此處我們指定了代理端口為1111,其他配置的含義后續介紹。

    ?

    4、查看是否啟動成功??

    Java代碼??
  • ps?-aux?|?grep?nutcracker??
  • ?

    5、進入客戶端

    Java代碼??
  • /usr/servers/redis-2.8.19/src/redis-cli??-p?1111??
  • ?

    6、執行如下命令?

    Java代碼??
  • 127.0.0.1:1111>?set?i?1??
  • OK??
  • 127.0.0.1:1111>?get?i??
  • "1"???
  • Twemproxy文檔請參考https://github.com/twitter/twemproxy。

    ?

    到此基本的安裝就完成了。接下來做一些介紹。

    ?

    Redis設置

    基本設置

    Java代碼??
  • #端口設置,默認6379??
  • port?6379??
  • #日志文件,默認/dev/null??
  • logfile?""???
  • ?

    Redis內存?

    Java代碼??
  • 內存大小對應關系??
  • #?1k?=>?1000?bytes??
  • #?1kb?=>?1024?bytes??
  • #?1m?=>?1000000?bytes??
  • #?1mb?=>?1024*1024?bytes??
  • #?1g?=>?1000000000?bytes??
  • #?1gb?=>?1024*1024*1024?bytes??
  • ??
  • #設置Redis占用100mb的大小??
  • maxmemory??100mb??
  • ??
  • #如果內存滿了就需要按照如相應算法進行刪除過期的/最老的??
  • #volatile-lru?根據LRU算法移除設置了過期的key??
  • #allkeys-lru??根據LRU算法移除任何key(包含那些未設置過期時間的key)??
  • #volatile-random/allkeys->random?使用隨機算法而不是LRU進行刪除??
  • #volatile-ttl?根據Time-To-Live移除即將過期的key???
  • #noeviction???永不過期,而是報錯??
  • maxmemory-policy?volatile-lru??
  • ??
  • #Redis并不是真正的LRU/TTL,而是基于采樣進行移除的,即如采樣10個數據移除其中最老的/即將過期的??
  • maxmemory-samples?10???
  • ?

    而如Memcached是真正的LRU,此處要根據實際情況設置緩存策略,如緩存用戶數據時可能帶上了過期時間,此時采用volatile-lru即可;而假設我們的數據未設置過期時間,此時可以考慮使用allkeys-lru/allkeys->random;假設我們的數據不允許從內存刪除那就使用noeviction。

    ?

    內存大小盡量在系統內存的60%~80%之間,因為如客戶端、主從時復制時都需要緩存區的,這些也是耗費系統內存的。

    ?

    Redis本身是單線程的,因此我們可以設置每個實例在6-8GB之間,通過啟動更多的實例提高吞吐量。如128GB的我們可以開啟8GB * 10個實例,充分利用多核CPU。

    ?

    Redis主從

    實際項目時,為了提高吞吐量,我們使用主從策略,即數據寫到主Redis,讀的時候從從Redis上讀,這樣可以通過掛載更多的從來提高吞吐量。而且可以通過主從機制,在葉子節點開啟持久化方式防止數據丟失。

    Java代碼??
  • #在配置文件中掛載主從,不推薦這種方式,我們實際應用時Redis可能是會宕機的??
  • slaveof?masterIP?masterPort??
  • #從是否只讀,默認yes??
  • slave-read-only?yes??
  • #當從失去與主的連接或者復制正在進行時,從是響應客戶端(可能返回過期的數據)還是返回“SYNC?with?master?in?progress”錯誤,默認yes響應客戶端??
  • slave-serve-stale-data?yes??
  • #從庫按照默認10s的周期向主庫發送PING測試連通性??
  • repl-ping-slave-period?10??
  • #設置復制超時時間(SYNC期間批量I/O傳輸、PING的超時時間),確保此值大于repl-ping-slave-period??
  • #repl-timeout?60??
  • #當從斷開與主的連接時的復制緩存區,僅當第一個從斷開時創建一個,緩存區越大從斷開的時間可以持續越長??
  • #?repl-backlog-size?1mb??
  • #當從與主斷開持續多久時清空復制緩存區,此時從就需要全量復制了,如果設置為0將永不清空????
  • #?repl-backlog-ttl?3600??
  • #slave客戶端緩存區,如果緩存區超過256mb將直接斷開與從的連接,如果持續60秒超過64mb也會斷開與從的連接??
  • client-output-buffer-limit?slave?256mb?64mb?60???
  • 此處需要根據實際情況設置client-output-buffer-limit slave和 repl-backlog-size;比如如果網絡環境不好,從與主經常斷開,而每次設置的數據都特別大而且速度特別快(大量設置html片段)那么就需要加大repl-backlog-size。?

    ?

    主從示例

    Java代碼??
  • cd?/usr/servers/redis-2.8.19??
  • cp?redis.conf?redis_6660.conf??
  • cp?redis.conf?redis_6661.conf??
  • vim?redis_6660.conf??
  • vim?redis_6661.conf???
  • ?

    將端口分別改為port 6660和port 6661,然后啟動

    Java代碼??
  • nohup?/usr/servers/redis-2.8.19/src/redis-server??/usr/servers/redis-2.8.19/redis_6660.conf?&??
  • nohup?/usr/servers/redis-2.8.19/src/redis-server??/usr/servers/redis-2.8.19/redis_6661.conf?&????
  • ?

    查看是否啟動

    Java代碼??
  • ps?-aux?|?grep?redis??
  • ?

    進入從客戶端,掛主

    Java代碼??
  • /usr/servers/redis-2.8.19/src/redis-cli??-p?6661??
  • Java代碼??
  • 127.0.0.1:6661>?slaveof?127.0.0.1?6660??
  • OK??
  • 127.0.0.1:6661>?info?replication??
  • #?Replication??
  • role:slave??
  • master_host:127.0.0.1??
  • master_port:6660??
  • master_link_status:up??
  • master_last_io_seconds_ago:3??
  • master_sync_in_progress:0??
  • slave_repl_offset:57??
  • slave_priority:100??
  • slave_read_only:1??
  • connected_slaves:0??
  • master_repl_offset:0??
  • repl_backlog_active:0??
  • repl_backlog_size:1048576??
  • repl_backlog_first_byte_offset:0??
  • repl_backlog_histlen:0??
  • ?進入主

    Java代碼??
  • /usr/servers/redis-2.8.19#?/usr/servers/redis-2.8.19/src/redis-cli??-p?6660??
  • Java代碼??
  • 127.0.0.1:6660>?info?replication??
  • #?Replication??
  • role:master??
  • connected_slaves:1??
  • slave0:ip=127.0.0.1,port=6661,state=online,offset=85,lag=1??
  • master_repl_offset:85??
  • repl_backlog_active:1??
  • repl_backlog_size:1048576??
  • repl_backlog_first_byte_offset:2??
  • repl_backlog_histlen:84??
  • 127.0.0.1:6660>?set?i?1??
  • OK???
  • ?

    進入從???

    ?

    Java代碼??
  • /usr/servers/redis-2.8.19/src/redis-cli??-p?6661??
  • Java代碼??
  • 127.0.0.1:6661>?get?i??
  • "1"???
  • 此時可以看到主從掛載成功,可以進行主從復制了。使用slaveof no one斷開主從。

    ?

    Redis持久化

    Redis雖然不適合做持久化存儲,但是為了防止數據丟失有時需要進行持久化存儲,此時可以掛載一個從(葉子節點)只進行持久化存儲工作,這樣假設其他服務器掛了,我們可以通過這個節點進行數據恢復。

    Redis持久化有RDB快照模式和AOF追加模式,根據自己需求進行選擇。

    ?

    RDB持久化

    Java代碼??
  • #格式save?seconds?changes?即N秒變更N次則保存,從如下默認配置可以看到丟失數據的周期很長,通過save?“”?配置可以完全禁用此持久化??
  • save?900?1????
  • save?300?10????
  • save?60?10000???
  • #RDB是否進行壓縮,壓縮耗CPU但是可以減少存儲大小??
  • rdbcompression?yes??
  • #RDB保存的位置,默認當前位置????
  • dir?./??
  • #RDB保存的數據庫名稱??
  • dbfilename?dump.rdb????
  • #不使用AOF模式,即RDB模式??
  • appendonly?no???
  • 可以通過set一個數據,然后很快的kill掉redis進程然后再啟動會發現數據丟失了。

    ?

    AOF持久化???

    AOF(append only file)即文件追加模式,即把每一個用戶操作的命令保存下來,這樣就會存在好多重復的命令導致恢復時間過長,那么可以通過相應的配置定期進行AOF重寫來減少重復。

    Java代碼??
  • #開啟AOF??
  • appendonly?yes??
  • #AOF保存的位置,默認當前位置????
  • dir?./??
  • #AOF保存的數據庫名稱??
  • appendfilename?appendonly.aof??
  • #持久化策略,默認每秒fsync一次,也可以選擇always即每次操作都進行持久化,或者no表示不進行持久化而是借助操作系統的同步將緩存區數據寫到磁盤??
  • appendfsync?everysec??
  • ??
  • #AOF重寫策略(同時滿足如下兩個策略進行重寫)??
  • #當AOF文件大小占到初始文件大小的多少百分比時進行重寫??
  • auto-aof-rewrite-percentage?100??
  • #觸發重寫的最小文件大小??
  • auto-aof-rewrite-min-size?64mb??
  • ??
  • #為減少磁盤操作,暫緩重寫階段的磁盤同步??
  • no-appendfsync-on-rewrite?no???
  • 此處的appendfsync?everysec可以認為是RDB和AOF的一個折中方案。

    ?

    #當bgsave出錯時停止寫(MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk.),遇到該錯誤可以暫時改為no,當寫成功后再改回yes

    stop-writes-on-bgsave-error yes

    ?

    更多Redis持久化請參考http://redis.readthedocs.org/en/latest/topic/persistence.html。

    ?

    Redis動態調整配置

    獲取maxmemory(10mb)?

    Java代碼??
  • 127.0.0.1:6660>?config?get?maxmemory??
  • 1)?"maxmemory"??
  • 2)?"10485760"???
  • ?

    設置新的maxmemory(20mb)

    Java代碼??
  • 127.0.0.1:6660>?config?set?maxmemory?20971520??
  • OK??
  • ??

    但是此時重啟redis后該配置會丟失,可以執行如下命令重寫配置文件

    Java代碼??
  • 127.0.0.1:6660>?config?rewrite??
  • OK???
  • 注意:此時所以配置包括主從配置都會重寫。

    ?

    Redis執行Lua腳本

    Redis客戶端支持解析和處理lua腳本,因為Redis的單線程機制,我們可以借助Lua腳本實現一些原子操作,如扣減庫存/紅包之類的。此處不建議使用EVAL直接發送lua腳本到客戶端,因為其每次都會進行Lua腳本的解析,而是使用SCRIPT LOAD+?EVALSHA進行操作。未來不知道是否會用luajit來代替lua,讓redis lua腳本性能更強。

    ?

    到此基本的Redis知識就講完了。

    ?

    Twemproxy設置

    一旦涉及到一臺物理機無法存儲的情況就需要考慮使用分片機制將數據存儲到多臺服務器,可以說是Redis集群;如果客戶端都是如Java沒什么問題,但是如果有多種類型客戶端(如PHP、C)等也要使用那么需要保證它們的分片邏輯是一樣的;另外隨著客戶端的增加,連接數也會隨之增多,發展到一定地步肯定會出現連接數不夠用的;此時Twemproxy就可以上場了。主要作用:分片、減少連接數。另外還提供了Hash Tag機制來幫助我們將相似的數據存儲到同一個分片。另外也可以參考豌豆莢的https://github.com/wandoulabs/codis。

    ?

    基本配置

    其使用YML語法,如

    Java代碼??
  • server1:??
  • ??listen:?127.0.0.1:1111??
  • ??hash:?fnv1a_64??
  • ??distribution:?ketama??
  • ??timeout:1000??
  • ??redis:?true??
  • ??servers:??
  • ???-?127.0.0.1:6660:1??
  • ???-?127.0.0.1:6661:1??
  • server1:是給當前分片配置起的名字,一個配置文件可以有多個分片配置;

    listen?:?監聽的ip和端口;

    hash:散列算法;

    distribution:分片算法,比如一致性Hash/取模;

    timeout:連接后端Redis或接收響應的超時時間;

    redis:是否是redis代理,如果是false則是memcached代理;

    servers:代理的服務器列表,該列表會使用distribution配置的分片算法進行分片;

    ?

    分片算法

    ? hash算法:?

    ??? one_at_a_time

    ??? md5

    ??? crc16

    ??? crc32 (crc32 implementation compatible with?libmemcached)

    ??? crc32a (correct crc32 implementation as per the spec)

    ??? fnv1_64

    ??? fnv1a_64

    ??? fnv1_32

    ??? fnv1a_32

    ??? hsieh

    ??? murmur

    ??? jenkins

    ??分片算法:

    ??? ketama(一致性Hash算法)

    ??? modula(取模)

    ??? random(隨機算法)

    ?

    服務器列表

    ? servers:

    ?? - ip:port:weight alias

    ? servers:

    ?? - 127.0.0.1:6660:1

    ? ?- 127.0.0.1:6661:1

    或者

    ? servers:

    ?? - 127.0.0.1:6660:1 server1

    ?

    ? ?- 127.0.0.1:6661:1 server2

    推薦使用后一種方式,默認情況下使用ip:port:weight進行散列并分片,這樣假設服務器宕機換上新的服務器,那么此時得到的散列值就不一樣了,因此建議給每個配置起一個別名來保證映射到自己想要的服務器。即如果不使用一致性Hash算法來作緩存服務器,而是作持久化存儲服務器時就更有必要了(即不存在服務器下線的情況,即使服務器ip:port不一樣但仍然要得到一樣的分片結果)。

    ?

    HashTag

    比如一個商品有:商品基本信息(p:id:)、商品介紹(d:id:)、顏色尺碼(c:id:)等,假設我們存儲時不采用HashTag將會導致這些數據不會存儲到一個分片,而是分散到多個分片,這樣獲取時將需要從多個分片獲取數據進行合并,無法進行mget;那么如果有了HashTag,那么可以使用“::”中間的數據做分片邏輯,這樣id一樣的將會分到一個分片。

    ?

    nutcracker.yml配置如下

    Java代碼??
  • server1:??
  • ??listen:?127.0.0.1:1111??
  • ??hash:?fnv1a_64??
  • ??distribution:?ketama??
  • ??redis:?true??
  • ??hash_tag:?"::"??
  • ??servers:??
  • ???-?127.0.0.1:6660:1?server1??
  • ???-?127.0.0.1:6661:1?server2??
  • ?

    連接Twemproxy

    Java代碼??
  • /usr/servers/redis-2.8.19/src/redis-cli??-p?1111??
  • Java代碼??
  • 127.0.0.1:1111>?set?p:12:?1??
  • OK??
  • 127.0.0.1:1111>?set?d:12:?1??
  • OK??
  • 127.0.0.1:1111>?set?c:12:?1??
  • OK??
  • ?

    在我的服務器上可以連接6660端口?

    Java代碼??
  • /usr/servers/redis-2.8.19/src/redis-cli??-p?6660??
  • 127.0.0.1:6660>?get?p:12:???
  • "1"??
  • 127.0.0.1:6660>?get?d:12:???
  • "1"??
  • 127.0.0.1:6660>?get?c:12:???
  • "1"??
  • ?

    一致性Hash與服務器宕機

    如果我們把Redis服務器作為緩存服務器并使用一致性Hash進行分片,當有服務器宕機時需要自動從一致性Hash環上摘掉,或者其上線后自動加上,此時就需要如下配置:

    ?

    #是否在節點故障無法響應時自動摘除該節點,如果作為存儲需要設置為為false

    auto_eject_hosts: true

    #重試時間(毫秒),重新連接一個臨時摘掉的故障節點的間隔,如果判斷節點正常會自動加到一致性Hash環上

    server_retry_timeout: 30000

    #節點故障無法響應多少次從一致性Hash環臨時摘掉它,默認是2

    server_failure_limit: 2

    ?

    支持的Redis命令

    不是所有Redis命令都支持,請參考https://github.com/twitter/twemproxy/blob/master/notes/redis.md。

    ?

    因為我們所有的Twemproxy配置文件規則都是一樣的,因此我們應該將其移到我們項目中。

    Java代碼??
  • cp?/usr/servers/twemproxy-0.4.0/conf/nutcracker.yml??/usr/example/??
  • 另外Twemproxy提供了啟動/重啟/停止腳本方便操作,但是需要修改配置文件位置為/usr/example/nutcracker.yml。

    Java代碼??
  • chmod?+x?/usr/servers/twemproxy-0.4.0/scripts/nutcracker.init???
  • vim?/usr/servers/twemproxy-0.4.0/scripts/nutcracker.init???
  • 將OPTIONS改為

    OPTIONS="-d -c /usr/example/nutcracker.yml"

    ?

    另外注釋掉. /etc/rc.d/init.d/functions;將daemon --user ${USER} ${prog} $OPTIONS改為${prog} $OPTIONS;將killproc改為killall。

    ?

    這樣就可以使用如下腳本進行啟動、重啟、停止了。

    /usr/servers/twemproxy-0.4.0/scripts/nutcracker.init {start|stop|status|restart|reload|condrestart}

    ?

    對于擴容最簡單的辦法是:

    1、創建新的集群;

    2、雙寫兩個集群;

    3、把數據從老集群遷移到新集群(不存在才設置值,防止覆蓋新的值);

    4、復制速度要根據實際情況調整,不能影響老集群的性能;

    5、切換到新集群即可,如果使用Twemproxy代理層的話,可以做到遷移對讀的應用透明。


    來源:http://jinnianshilongnian.iteye.com/blog/2186787

    總結

    以上是生活随笔為你收集整理的第三章 Redis/SSDB+Twemproxy安装与使用的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 亚洲欧美综合另类自拍 | 美国三级a三级18 | 久久影音 | 自拍偷拍三级 | 福利第一页 | 越南性xxxx精品hd | 特级做a爰片毛片免费69 | 黄色一级免费视频 | 久久躁日日躁aaaaxxxx | 国产在线一区视频 | 免费av观看 | 91九色蝌蚪 | 蜜臀久久99精品久久一区二区 | 亚洲成人av免费 | 99视频免费| 国内精品免费视频 | 日韩女优一区二区 | 中文在线字幕免费观看 | jizzjizz国产 | 国产成人精品在线播放 | 91网站免费 | av在哪里看 | 禁漫天堂下载18 | 亚洲国产果冻传媒av在线观看 | 欧美亚洲精品天堂 | 国精品人妻无码一区二区三区喝尿 | 熊猫电影yy8y全部免费观看 | 黄视频免费看在线 | 免费国产一区二区三区 | 永久免费看片在线观看 | 91青青草| 毛片毛片| 欧美日韩一级大片 | 日产欧产va高清 | 俄罗斯毛片 | 噜噜噜色| 国产在线日韩 | 制服诱惑一区 | 精品国产99一区二区乱码综合 | 黄色在线一区 | 亚洲欧美在线不卡 | 午夜国产福利在线 | 中文亚洲av片不卡在线观看 | 激情久久中文字幕 | 午夜在线小视频 | 亚洲三级视频 | 黄色一级视频网站 | 黄色一级视频网站 | 成人午夜视频免费观看 | 性欧美高清 | 久在线播放 | 婷婷激情社区 | 日本高清www | 亚洲专区一区二区三区 | 狠狠97 | 啪啪短视频 | 亚洲免费观看高清完整版在线 | 日本女人一级片 | 黄片毛片av | 欧美阿v | 意大利性荡欲xxxxxx | 中国一级大黄大黄大色毛片 | 最近中文字幕免费 | 男女毛片视频 | 97自拍网 | 日韩高清三区 | 高清18麻豆 | 超碰久草 | 欧美大胆a视频 | 中文一区视频 | 天堂va欧美ⅴa亚洲va一国产 | 国产欧美一区二区精品性色 | 中文人妻熟妇乱又伦精品 | 日韩福利视频一区 | 视频在线91 | 日日摸夜夜添夜夜添高潮喷水 | 久久性爱视频网站 | 天堂资源中文在线 | 91久操| 在线视频欧美亚洲 | 在线观看网页视频 | 一级片麻豆 | 亚洲一本之道 | 欧美日韩一二 | 午夜天堂影院 | 亚洲欧美高清视频 | 草草影院在线观看视频 | 一级片欧美| 中文字幕精品国产 | 九九热精品在线视频 | 黄色天堂网| 麻豆精品视频免费观看 | 成人午夜影院在线观看 | 巨物撞击尤物少妇呻吟 | 久久五月视频 | 欧美aaaaaaaaa | 游戏涩涩免费网站 | 吻胸摸激情床激烈视频大胸 | 精品国产户外野外 |