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

歡迎訪問 生活随笔!

生活随笔

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

数据库

Redis从入门到入土

發布時間:2024/3/26 数据库 60 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis从入门到入土 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Redis從入門到入土

      • 概述
      • 應用場景
      • redis相關知識
      • 常用五大數據類型
        • Redis-key
        • String
        • List
          • list數據結構
        • Set
          • Set數據結構
        • Zset
          • 命令
          • Zset數據結構
      • Redis的發布和訂閱
        • 概述
        • 發布和訂閱
      • Redis新數據類型
        • Bitmaps
        • HyperLogLog
        • Geospatial
      • Redis事務處理
        • Multi、Exec、discard
        • 事務的錯誤處理
        • 為什么要做成事務
        • 事務沖突的問題
          • 悲觀鎖
          • 樂觀鎖
        • Redis事務三特性
      • Redis持久化之RDB
        • RDB介紹
        • 備份是如何執行的
        • Fork
        • RDB持久化流程
        • RDB配置信息
        • RDB優點
        • RDB缺點
        • 停止RDB
        • RDB總結
      • Redis持久化之AOF
        • AOF介紹
        • AOF持久化流程
        • AOF模式
          • AOF默認不開啟
          • AOF和RDB同時開啟,redis會執行誰
          • AOF啟動/修復/恢復
        • AOF優點
        • AOF缺點
        • AOF總結
      • AOF和RDB的選擇使用
        • 官方建議
      • Redis主從復制
        • 介紹
        • 作用
        • 主從復制操作
      • Redis哨兵機制
        • 主從復制的缺陷
        • 概念
        • 作用
        • 多哨兵模式
          • 概念
          • 故障切換的過程
        • 操作步驟
        • 故障恢復
      • Redis集群
        • 問題
        • 什么是集群
        • 部署redis集群
        • slots
        • Redis集群的不足
      • Redis應用問題解決
        • 緩存穿透
        • 緩存擊穿
        • 緩存雪崩

概述

Redis是一個開源的key-value存儲系統。

和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。

這些數據類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。

在此基礎上,Redis支持各種不同方式的排序。

與memcached一樣,為了保證效率,數據都是緩存在內存中。

區別的是Redis會周期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件。

并且在此基礎上實現了master-slave(主從)同步。

應用場景

1.配合關系型數據庫做高速緩存

? 高頻次,熱門訪問的數據,降低數據庫IO

? 分布式架構,做session共享

2.多樣的數據結構儲存持久化數據

redis相關知識

端口6379

默認16個數據庫,類似數組下標從零開始,初始默認使用0號庫

使用命令 select 來切換數據庫。如: select 8

統一密碼管理,所有庫同樣密碼。

dbsize查看當前數據庫的key的數量

flushdb清空當前庫

flushall通殺全部庫

127.0.0.1:6379> config get databases #命令行查看數據庫數量 1) "databases" 2) "16" 127.0.0.1:6379> select 0 #切換數據庫 db 0 (integer) 0 127.0.0.1:6379> dbsize #查看數據庫大小 OK

Redis是單線程+多路IO復用技術

多路復用是指使用一個線程來檢查多個文件描述符(Socket)的就緒狀態,比如調用select和poll函數,傳入多個文件描述符,如果有一個文件描述符就緒,則返回,否則阻塞直到超時。得到就緒狀態后進行真正的操作可以在同一個線程里執行,也可以啟動線程執行(比如使用線程池)

常用五大數據類型

Redis-key

127.0.0.1:6379> set name liutianzhu #set key OK 127.0.0.1:6379> get name #獲取當前key的值 "liutianzhu" 127.0.0.1:6379> keys * #查看所有的key 1) "name" 127.0.0.1:6379> set age 20 OK 127.0.0.1:6379> keys * 1) "name" 2) "age" 127.0.0.1:6379> Exists name #判斷當前的key是否存在 存在則返回1,不存在則返回0 (integer) 1 127.0.0.1:6379> Exists name1 (integer) 0 127.0.0.1:6379> move name 1 #將該鍵從當前庫移動到另外一個數據庫 (integer) 1 127.0.0.1:6379> expire name 20 #設置key的過期時間,單位是秒 (integer) 1 127.0.0.1:6379> ttl name #查看當前key的剩余時間 (integer) 14 127.0.0.1:6379> ttl name (integer) (nil) 127.0.0.1:6379> type name #查看當前key類型 string 127.0.0.1:6379> del age #刪除鍵值對 (integer) 1 #刪除個數

關于ttl命令

Redis的key,通過TTL命令返回key的過期時間,一般來說有3種:

  • 當前key沒有設置過期時間,所以會返回-1.
  • 當前key有設置過期時間,而且key已經過期,所以會返回-2.
  • 當前key有設置過期時間,且key還沒有過期,故會返回key的正常剩余時間.
  • 關于重命名rename 和 renamenx

    127.0.0.1:6379> rename name stuname #修改key的名稱 OK 127.0.0.1:6379> renamenx stuname name #僅當 newkey 不存在時,將 key 改名為 newkey (integer) 1

    更多詳細命令請看官方文檔:https://www.redis.net.cn/order/

    String

    127.0.0.1:6379> set key1 v1 #設置值 OK 127.0.0.1:6379> get key1 #獲得值 "v1" 127.0.0.1:6379> exists key1 #判斷某一個key是否存在 (integer) 1 127.0.0.1:6379> append key1 "hello" #追加字符串,如果當前key不存在,就相當于setkey (integer) 7 127.0.0.1:6379> get key1 "v1hello" 127.0.0.1:6379> strlen key1 #獲取字符串長度 (integer) 7 127.0.0.1:6379> append key1 ",liuzhicheng" (integer) 19 127.0.0.1:6379> get key1 "v1hello,liuzhicheng" 127.0.0.1:6379> strlen key1 (integer) 19 127.0.0.1:6379> setnx phone 13930618486 #只有在key不存在時,設置key的值 (integer) 1 127.0.0.1:6379> set k2 100 OK 127.0.0.1:6379> incr k2 #將 key 中儲存的數字值增1,只能對數字值操作,如果為空,新增值為1 (integer) 101 127.0.0.1:6379> decr k2 #將 key 中儲存的數字值減1,只能對數字值操作,如果為空,新增值為-1 (integer) 100 127.0.0.1:6379> incrby k2 20 #將 key 中儲存的數字值增。自定義步長。 (integer) 121 127.0.0.1:6379> decrby k2 20 #將 key 中儲存的數字值減。自定義步長。 (integer) 101 127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3 #同時設置一個或多個鍵值對 OK 127.0.0.1:6379> keys * 1) "k1" 2) "k2" 3) "k3" 127.0.0.1:6379> mget k1 k2 k3 #同時獲取一個或多個值 1) "v1" 2) "v2" 3) "v3" 127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3 OK 127.0.0.1:6379> keys * 1) "k1" 2) "k2" 3) "k3" 127.0.0.1:6379> mget k1 k2 k3 1) "v1" 2) "v2" 3) "v3" #同時設置一個或多個 key-value 對,當且僅當所有給定 key 都不存在。 127.0.0.1:6379> msetnx a1 v1 a2 v2 (integer) 1 127.0.0.1:6379> set name lucymary OK 127.0.0.1:6379> getrange name 0 2 #獲得值的范圍,類似java中的substring,前包,后包 "luc" 127.0.0.1:6379> set name 10 20 #設置鍵值的同時,設置過期時間,單位秒 OK 127.0.0.1:6379> ttl name (integer) -2 127.0.0.1:6379> getset name 50 #以新換舊,設置了新值同時獲得舊值 "30"

    List

    lpush/rpush <key><value1><value2><value3> .... 從左邊/右邊插入一個或多個值。 lpop/rpop <key>從左邊/右邊吐出一個值。值在鍵在,值光鍵亡。 rpoplpush <key1><key2><key1>列表右邊吐出一個值,插到<key2>列表左邊。 lrange <key><start><stop> 按照索引下標獲得元素(從左到右)lrange mylist 0 -1 0左邊第一個,-1右邊第一個,(0-1表示獲取所有) lindex <key><index>按照索引下標獲得元素(從左到右) llen <key>獲得列表長度 linsert <key> before <value><newvalue><value>的后面插入<newvalue>插入值 lrem <key><n><value>從左邊刪除n個value(從左到右) lset<key><index><value>將列表key下標為index的值替換成value
    list數據結構

    首先在列表元素較少的情況下會使用一塊連續的內存存儲,這個結構是ziplist,也即是壓縮列表。

    它將所有的元素緊挨著一起存儲,分配的是一塊連續的內存。

    當數據量比較多的時候才會改成quicklist。

    因為普通的鏈表需要的附加指針空間太大,會比較浪費空間。比如這個列表里存的只是int類型的數據,結構上還需要兩個額外的指針prev和next。

    Redis將鏈表和ziplist結合起來組成了quicklist。也就是將多個ziplist使用雙向指針串起來使用。這樣既滿足了快速的插入刪除性能,又不會出現太大的空間冗余。

    Set

    Redis set對外提供的功能與list類似是一個列表的功能,特殊之處在于set是可以自動排重的,當你需要存儲一個列表數據,又不希望出現重復數據時,set是一個很好的選擇,并且set提供了判斷某個成員是否在一個set集合內的重要接口,這個也是list所不能提供的。

    Redis的Set是string類型的無序集合。它底層其實是一個value為null的hash表,所以添加,刪除,查找的復雜度都是O(1)

    一個算法,隨著數據的增加,執行時間的長短,如果是O(1),數據增加,查找數據的時間不變

    sadd <key><value1><value2> ..... 將一個或多個 member 元素加入到集合 key 中,已經存在的 member 元素將被忽略smembers <key>取出該集合的所有值。sismember <key><value>判斷集合<key>是否為含有該<value>值,有1,沒有0scard<key>返回該集合的元素個數。srem <key><value1><value2> .... 刪除集合中的某個元素。spop <key>***\*隨機從該集合中吐出一個值。\****srandmember <key><n>隨機從該集合中取出n個值。不會從集合中刪除 。smove <source><destination>value把集合中一個值從一個集合移動到另一個集合sinter <key1><key2>返回兩個集合的交集元素。sunion <key1><key2>返回兩個集合的并集元素。sdiff <key1><key2>返回兩個集合的***\*差集\****元素(key1中的,不包含key2中的)
    Set數據結構

    Set數據結構是dict字典,字典是用哈希表實現的。

    Java中HashSet的內部實現使用的是HashMap,只不過所有的value都指向同一個對象。Redis的set結構也是一樣,它的內部也使用hash結構,所有的value都指向同一個內部值

    Redis hash 是一個鍵值對集合。

    Redis hash是一個string類型的field和value的映射表,hash特別適合用于存儲對象。

    類似Java里面的Map<String,Object>

    用戶ID為查找的key,存儲的value用戶對象包含姓名,年齡,生日等信息,如果用普通的key/value結構來存儲

    主要有以下2種存儲方式:


    每次修改用戶的某個屬性需要,先反序列化改好后再序列化回去。開銷較大。 |
    用戶ID數據冗余

    通過key(用戶ID) + field(屬性標簽就可以操作對應屬性數據了,既不需要重復存儲數據,也不會帶來序列化和并發修改控制的問題

    Zset

    Redis有序集合zset與普通集合set非常相似,是一個沒有重復元素的字符串集合。

    不同之處是有序集合的每個成員都關聯了一個評分(score),這個評分(score)被用來按照從最低分到最高分的方式排序集合中的成員。集合的成員是唯一的,但是評分可以是重復了 。

    因為元素是有序的, 所以你也可以很快的根據評分(score)或者次序(position)來獲取一個范圍的元素。

    訪問有序集合的中間元素也是非??斓?因此你能夠使用有序集合作為一個沒有重復成員的智能列表。

    命令
    zadd <key><score1><value1><score2><value2>…將一個或多個 member 元素及其 score 值加入到有序集 key 當中。***\*zrange <key><start><stop> [WITHSCORES]\**** 返回有序集 key 中,下標在<start><stop>之間的元素帶WITHSCORES,可以讓分數一起和值返回到結果集。zrangebyscore key minmax [withscores] [limit offset count]返回有序集 key 中,所有 score 值介于 min 和 max 之間(包括等于 min 或 max )的成員。有序集成員按 score 值遞增(從小到大)次序排列。 zrevrangebyscore key maxmin [withscores] [limit offset count] 同上,改為從大到小排列。 zincrby <key><increment><value> 為元素的score加上增量zrem <key><value>刪除該集合下,指定值的元素 zcount <key><min><max>統計該集合,分數區間內的元素個數 zrank <key><value>返回該值在集合中的排名,從0開始。
    Zset數據結構

    SortedSet(zset)是Redis提供的一個非常特別的數據結構,一方面它等價于Java的數據結構Map<String, Double>,可以給每一個元素value賦予一個權重score,另一方面它又類似于TreeSet,內部的元素會按照權重score進行排序,可以得到每個元素的名次,還可以通過score的范圍來獲取元素的列表。

    zset底層使用了兩個數據結構

    (1)hash,hash的作用就是關聯元素value和權重score,保障元素value的唯一性,可以通過元素value找到相應的score值。

    (2)跳躍表,跳躍表的目的在于給元素value排序,根據score的范圍獲取元素列表。

    Redis的發布和訂閱

    概述

    Redis 發布訂閱 (pub/sub) 是一種消息通信模式:發送者 (pub) 發送消息,訂閱者 (sub) 接收消息。

    Redis 客戶端可以訂閱任意數量的頻道。

    發布和訂閱

    1.客戶端可以 訂閱頻道

    2.當給這個頻道發布消息后,消息就會發送給訂閱的客戶端

    發布訂閱命令實現

    1).

    ? 打開一個客戶端訂閱channel1

    127.0.0.1:6379> subscribe channel1 Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "channel1" 3) (integer) 1 1) "message" 2) "channel1"

    2).打開另一個客戶端

    127.0.0.1:6379> publish channel1 hello (integer) 1

    3).打開第一個客戶端可以看到發送的消息

    127.0.0.1:6379> subscribe channel1 Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "channel1" 3) (integer) 1 1) "message" 2) "channel1" 3) "hello"

    注:發布的消息沒有持久化。如果在訂閱的客戶端收不到hello,只能收到訂閱后發布的消息

    Redis新數據類型

    Bitmaps

    現代計算機用二進制(位) 作為信息的基礎單位, 1個字節等于8位, 例如“abc”字符串是由3個字節組成, 但實際在計算機存儲時將其用二進制表示, “abc”分別對應的ASCII碼分別是97、 98、 99, 對應的二進制分別是01100001、 01100010和01100011,如下圖

    合理地使用操作位能夠有效地提高內存使用率和開發效率。

    Redis提供了Bitmaps這個“數據類型”可以實現對位的操作:

    (1) Bitmaps本身不是一種數據類型, 實際上它就是字符串(key-value) , 但是它可以對字符串的位進行操作。

    (2) Bitmaps單獨提供了一套命令, 所以在Redis中使用Bitmaps和使用字符串的方法不太相同。 可以把Bitmaps想象成一個以位為單位的數組, 數組的每個單元只能存儲0和1, 數組的下標在Bitmaps中叫做偏移量。

    命令

    1.setbit

    setbit<key><offset><value> 設置Bitmaps中某個偏移量的值(0或1)*offset:偏移量從0開始

    2.getbit

    getbit<key><offset>獲取Bitmaps中某個偏移量的值

    3.bitcount

    統計字符串被設置為1的bit數。一般情況下,給定的整個字符串都會被進行計數,通過指定額外的 start 或 end 參數,可以讓計數只在特定的位上進行。start 和 end 參數的設置,都可以使用負數值:比如 -1 表示最后一個位,而 -2 表示倒數第二個位,start、end 是指bit組的字節的下標數,二者皆包含。

    bitcount<key>[start end] 統計字符串從start字節到end字節比特值為1的數量

    4.bitop

    bitop and(or/not/xor) <destkey> [key…] bitop是一個復合操作, 它可以做多個Bitmaps的and(交集) 、 or(并集) 、 not(非) 、 xor(異或) 操作并將結果保存在destkey中。

    5.Bitmaps與set對比

    假設網站有1億用戶, 每天獨立訪問的用戶有5千萬, 如果每天用集合類型和Bitmaps分別存儲活躍用戶可以得到表

    ? set和Bitmaps存儲一天活躍用戶對比

    數據類型每個用戶id占用空間需要存儲的用戶量全部內存量
    集合類型64位5000000064位*50000000 = 400MB
    Bitmaps1位1000000001位*100000000 = 12.5MB

    很明顯,這種情況下使用Bitmaps能節省很多的內存空間,尤其隨著時間推移節省的內存還是非??捎^的

    ? set和Bitmaps儲存獨立用戶空間對比

    數據類型一天一個月一年
    集合類型400MB12GB144GB
    Bitmaps12.5MB375MB4.5GB

    但Bitmaps并不是萬金油, 假如該網站每天的獨立訪問用戶很少, 例如只有10萬(大量的僵尸用戶) , 那么兩者的對比如下表所示, 很顯然, 這時候使用Bitmaps就不太合適了, 因為基本上大部分位都是0。

    ? set和Bitmaps存儲一天活躍用戶對比(獨立用戶比較少)

    數據類型每個userid占用空間需要儲存的用戶量全部內存量
    集合類型64位10000064位*100000 = 800KB
    Bitmaps1位1000000001位*100000000 = 12.5MB

    HyperLogLog

    在工作當中,我們經常會遇到與統計相關的功能需求,比如統計網站PV(PageView頁面訪問量),可以使用Redis的incr、incrby輕松實現。

    但像UV(UniqueVisitor,獨立訪客)、獨立IP數、搜索記錄數等需要去重和計數的問題如何解決?這種求集合中不重復元素個數的問題稱為基數問題。

    解決基數問題有很多種方案:

    (1)數據存儲在MySQL表中,使用distinct count計算不重復個數

    (2)使用Redis提供的hash、set、bitmaps等數據結構來處理

    以上的方案結果精確,但隨著數據不斷增加,導致占用空間越來越大,對于非常大的數據集是不切實際的。

    能否能夠降低一定的精度來平衡存儲空間?Redis推出了HyperLogLog

    Redis HyperLogLog 是用來做基數統計的算法,HyperLogLog 的優點是,在輸入元素的數量或者體積非常非常大時,計算基數所需的空間總是固定的、并且是很小的。

    在 Redis 里面,每個 HyperLogLog 鍵只需要花費 12 KB 內存,就可以計算接近 2^64 個不同元素的基數。這和計算基數時,元素越多耗費內存就越多的集合形成鮮明對比。

    但是,因為 HyperLogLog 只會根據輸入元素來計算基數,而不會儲存輸入元素本身,所以 HyperLogLog 不能像集合那樣,返回輸入的各個元素。

    什么是基數?

    比如數據集 {1, 3, 5, 7, 5, 7, 8}, 那么這個數據集的基數集為 {1, 3, 5 ,7, 8}, 基數(不重復元素)為5。 基數估計就是在誤差可接受的范圍內,快速計算基數。

    命令

    1.pfadd

    pfadd <key>< element> [element ...] 添加指定元素到 HyperLogLog 中

    2.pfcount

    pfcount<key> [key ...] 計算HLL的近似基數,可以計算多個HLL

    3.pfmerge

    pfmerge<destkey><sourcekey> [sourcekey ...] 將一個或多個HLL合并后的結果存儲在另一個HLL中

    Geospatial

    redis 3.2 中增加了對GEO類型的支持。GEO,Geographic,地理信息的縮寫。該類型,就是元素的2維坐標,在地圖上就是經緯度。redis基于該類型,提供了經緯度設置,查詢,范圍查詢,距離查詢,經緯度Hash等常見操作。

    命令

    1.geoadd

    geoadd<key>< longitude><latitude><member> [longitude latitude member...] 添加地理位置(經度,緯度,名稱)

    2.geopos

    geopos <key><member> [member...] 獲得指定地區的坐標值

    3.geodist

    geodist<key><member1><member2> [m|km|ft|mi ] 獲取兩個位置之間的直線距離

    4.georadius

    georadius<key>< longitude><latitude>radius m|km|ft|mi 以給定的經緯度為中心,找出某一半徑內的元素

    Redis事務處理

    Redis事務是一個單獨的隔離操作:事務中的所有命令都會序列化、按順序地執行。事務在執行的過程中,不會被其他客戶端發送來的命令請求所打斷。

    Redis事務的主要作用就是串聯多個命令防止別的命令插隊。

    Multi、Exec、discard

    Multi 組隊階段 Exec 執行階段 discard 放棄

    從輸入Multi命令開始,輸入的命令都會依次進入命令隊列中,但不會執行,直到輸入Exec后,Redis會將之前的命令隊列中的命令依次執行。組隊的過程中可以通過discard來放棄組隊。

    事務的錯誤處理

    組隊中某個命令出現了報告錯誤,執行時整個的所有隊列都會被取消。

    如果執行階段某個命令報出了錯誤,則只有報錯的命令不會被執行,而其他的命令都會執行,不會回滾。

    為什么要做成事務

    有很多有你的賬戶,同時去參加618搶購

    事務沖突的問題

    例子: 一個請求想給金額減8000 一個請求想給金額減5000 一個請求想給金額減1000

    悲觀鎖

    悲觀鎖(Pessimistic Lock), 顧名思義,就是很悲觀,每次去拿數據的時候都認為別人會修改,所以每次在拿數據的時候都會上鎖,這樣別人想拿這個數據就會block直到它拿到鎖。傳統的關系型數據庫里邊就用到了很多這種鎖機制,比如行鎖,表鎖等,讀鎖,寫鎖等,都是在做操作之前先上鎖。
    樂觀鎖

    樂觀鎖(Optimistic Lock), 顧名思義,就是很樂觀,每次去拿數據的時候都認為別人不會修改,所以不會上鎖,但是在更新的時候會判斷一下在此期間別人有沒有去更新這個數據,可以使用版本號等機制。樂觀鎖適用于多讀的應用類型,這樣可以提高吞吐量。Redis就是利用這種check-and-set機制實現事務的。

    命令

    WATCH key [key ...] 在執行multi之前,先執行watch key1 [key2],可以監視一個(或多個) key , 如果在事務執行之前這個(或這些) key 被其他命令所改動,那么事務將被打斷。

    unwatch 取消 WATCH 命令對所有 key 的監視。 如果在執行 WATCH 命令之后,EXEC 命令或DISCARD 命令先被執行了的話,那么就不需要再執行UNWATCH 了。

    Redis事務三特性

    • 單獨的隔離操作
      • 事務中的所有命令都會序列化、按順序的執行/事務在執行的過程中,不會被其他客戶端發送來的命令請求所打斷。
    • 沒有隔離級別的概念
      • 隊列中的命令沒有提交之前都不會實際被執行
    • 不保證原子性
      • 事務中如果一條命令執行失敗,其他的命令仍然會被執行,沒有回滾

    Redis持久化之RDB

    Redis提供兩個不同形式的持久化方式

    • RDB(Redis DataBase)
    • AOF(Append Of File)

    RDB介紹

    在指定的時間間隔內將內存中的數據集快照寫入磁盤, 也就是行話講的Snapshot快照,它恢復時是將快照文件直接讀到內存里

    備份是如何執行的

    Redis會單獨創建(fork)一個子進程來進行持久化,會先將數據寫入到 一個臨時文件中,待持久化過程都結束了,再用這個臨時文件替換上次持久化好的文件。 整個過程中,主進程是不進行任何IO操作的,這就確保了極高的性能 如果需要進行大規模數據的恢復,且對于數據恢復的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。RDB的缺點是最后一次持久化后的數據可能丟失。

    Fork

    • Fork的作用是復制一個與當前進程一樣的進程。新進程的所有數據(變量、環境變量、程序計數器等) 數值都和原進程一致,但是是一個全新的進程,并作為原進程的子進程
    • 在Linux程序中,fork()會產生一個和父進程完全相同的子進程,但子進程在此后多會exec系統調用,出于效率考慮,Linux中引入了“寫時復制技術
    • 一般情況父進程和子進程會共用同一段物理內存,只有進程空間的各段的內容要發生變化時,才會將父進程的內容復制一份給子進程。

    RDB持久化流程

    RDB配置信息

    在redis.conf中配置文件名稱,默認為dump.rdb

    rdb文件的保存路徑,也可以修改。默認為Redis啟動時命令行所在的目錄下

    dir "/myredis/"

    配置觸發RDB快照:保持策略

    配置文件中默認的快照設置

    • save和bgsave的區別

      • save:save時只管保存,其它不管,全部阻塞。手動保存。不建議。
      • bgsave:Redis會在后臺異步進行快照操作, 快照同時還可以響應客戶端請求。

      可以通過lastsave 命令獲取最后一次成功執行快照的時間

    • flushall:執行flushall命令,也會產生dump.rdb文件,但里面是空的,無意義

    • Save:格式:save 秒鐘 寫操作次數

      • RDB是整個內存的壓縮過的Snapshot,RDB的數據結構,可以配置復合的快照觸發條件,
        默認是1分鐘內改了1萬次,或5分鐘內改了10次,或15分鐘內改了1次。
        禁用
        不設置save指令,或者給save傳入空字符串
    • stop-writes-on-bgsave-error

      • ? 當Redis無法寫入磁盤的話,直接關掉Redis的寫操作。推薦yes.

    • rdbcompression 壓縮文件

      • 對于存儲到磁盤中的快照,可以設置是否進行壓縮存儲。如果是的話,redis會采用LZF算法進行壓縮。

        如果你不想消耗CPU來進行壓縮的話,可以設置為關閉此功能。推薦yes.

    • rdbchecksum 檢查完整性

      • 在存儲快照后,還可以讓redis使用CRC64算法來進行數據校驗,

        但是這樣做會增加大約10%的性能消耗,如果希望獲取到最大的性能提升,可以關閉此功能

        推薦yes.

    • rdb的備份

      • 先通過config get dir 查詢rdb文件的目錄
      • 將*.rdb的文件拷貝到別的地方
      • rdb的恢復
        • 關閉Redis
        • 先把備份的文件拷貝到工作目錄下 cp dump2.rdb dump.rdb
        • 啟動Redis, 備份數據會直接加載

    RDB優點

    • 適合大規模的數據恢復

    • 對數據完整性和一致性要求不高更適合使用

    • 節省磁盤空間

    • 恢復速度快

    RDB缺點

    • Fork的時候,內存中的數據被克隆了一份,大致2倍的膨脹性需要考慮
    • 雖然Redis在fork時使用了寫時拷貝技術,但是如果數據龐大時還是比較消耗性能。
    • 在備份周期在一定間隔時間做一次備份,所以如果Redis意外down掉的話,就會丟失最后一次快照后的所有修改。

    停止RDB

    動態停止RDB:redis-cli config set save ""#save后給空值,表示禁用保存策略

    RDB總結

    Redis持久化之AOF

    AOF介紹

    ? 以日志的形式來記錄每個寫操作(增量保存),將Redis執行過的所有寫指令記錄下來(讀操作不記錄), 只許追加文件但不可以改寫文件,redis啟動之初會讀取該文件重新構建數據,換言之,redis 重啟的話就根據日志文件的內容將寫指令從前到后執行一次以完成數據的恢復工作。

    AOF持久化流程

    • 客戶端的請求寫命令會被append追加到AOF緩沖區內;
    • AOF緩沖區根據AOF持久化策略[always,everysec,no]將操作sync同步到磁盤的AOF文件中;
    • AOF文件大小超過重寫策略或手動重寫時,會對AOF文件rewrite重寫,壓縮AOF文件容量;
    • Redis服務重啟時,會重新load加載AOF文件中的寫操作達到數據恢復的目的;

    AOF模式

    AOF默認不開啟

    ? 可以在redis.conf中配置文件名稱,默認為 appendonly.aof

    ? AOF文件的保存路徑,同RDB的路徑一致。

    AOF和RDB同時開啟,redis會執行誰

    ? AOF和RDB同時開啟,系統默認取AOF的數據(數據不會存在丟失)

    AOF啟動/修復/恢復
    • AOF的備份機制和性能雖然和RDB不同, 但是備份和恢復的操作同RDB一樣,都是拷貝備份文件,需要恢復時再拷貝到Redis工作目錄下,啟動系統即加載。
    • 正常恢復
      • 修改默認的appendonly no,改為yes
      • 將有數據的aof文件復制一份保存到對應目錄(查看目錄:config get dir)
    • 異?;謴?
      • 修改默認的appendonly no,改為yes
      • 如遇到AOF文件損壞,通過/usr/local/bin/redis-check-aof–fix appendonly.aof進行恢復
      • 備份被寫壞的AOF文件
      • 恢復:重啟redis,然后重新加載

    AOF優點

    • 備份機制更穩健,丟失數據概率更低
    • 可讀的日志文本,通過操作AOF穩健,可以處理誤操作

    AOF缺點

    • 比起RDB占用更多的磁盤空間
    • 恢復備份速度要慢
    • 每次讀寫同步的話,有一定的性能壓力
    • 存在個別Bug,造成恢復不能

    AOF總結

    AOF和RDB的選擇使用

    官方推薦兩個都啟用。

    如果對數據不敏感,可以選單獨用RDB。
    不建議單獨用 AOF,因為可能會出現Bug。
    如果只是做純內存緩存,可以都不用。

    官方建議

    • RDB持久化方式能夠在指定的時間間隔能對你的數據進行快照存儲
    • AOF持久化方式記錄每次對服務器寫的操作,當服務器重啟的時候會重新執行這些命令來恢復原始的數據,AOF命令以redis協議追加保存每次寫的操作到文件末尾.
    • Redis還能對AOF文件進行后臺重寫,使得AOF文件的體積不至于過大
    • 只做緩存:如果你只希望你的數據在服務器運行的時候存在,你也可以不使用任何持久化方式.
    • 同時開啟兩種持久化方式
    • 在這種情況下,當redis重啟的時候會優先載入AOF文件來恢復原始的數據, 因為在通常情況下AOF文件保存的數據集要比RDB文件保存的數據集要完整.
    • RDB的數據不實時,同時使用兩者時服務器重啟也只會找AOF文件。那要不要只使用AOF呢?
    • 建議不要,因為RDB更適合用于備份數據庫(AOF在不斷變化不好備份), 快速重啟,而且不會有AOF可能潛在的bug,留著作為一個萬一的手段。
    • 性能建議
    因為RDB文件只用作后備用途,建議只在Slave上持久化RDB文件,而且只要15分鐘備份一次就夠了,只保留save 900 1這條規則。如果使用AOF,好處是在最惡劣情況下也只會丟失不超過兩秒數據,啟動腳本較簡單只load自己的AOF文件就可以了。 代價,一是帶來了持續的IO,二是AOF rewrite的最后將rewrite過程中產生的新數據寫到新文件造成的阻塞幾乎是不可避免的。只要硬盤許可,應該盡量減少AOF rewrite的頻率,AOF重寫的基礎大小默認值64M太小了,可以設到5G以上。 默認超過原大小100%大小時重寫可以改到適當的數值。

    Redis主從復制

    介紹

    主機數據更新后根據配置和策略, 自動同步到備機的master/slaver機制,Master以寫為主,Slave以讀為主

    作用

    • 讀寫分離,性能擴展

    • 能對數據進行快速恢復

    主從復制操作

    1.準備環境(1)兩臺裝有redis的主機(2)分析 主服務是用于寫的,從服務是用于讀

    2.主服務配置

    ? (1) 打開主服務的conf文件

    Vi /usr/local/redis/etc/redis.conf

    ? (2) 注釋bind掉,讓服務可以遠程訪問

    ? (3) 開啟守護進程

    ? (4)設置密碼

    requirepass 123456

    ? (5)設置客戶端最大連接數(maxclients),根據需求改動,默認10000

    maxclients 10

    ? (6)設置內存(最好不要超過本機的最大內存,默認是不收限制的,超出宿主機內存報錯)

    maxmemory 1048576

    ? (7)設置內存策略如果內存足夠用則不用管,如果內存不夠用,建議設置最近最少使用策略(LRU),默認是內存不夠則報錯

    maxmemory-policy noeviction

    ? (8)重啟redis服務

    3.配置從服務

    ? (1) 關閉redis服務

    ? (2) 配置所屬主機的ip和端口號

    slaveof 192.168.56.110 6379

    ? (3) 配置所屬主服務的密碼

    masterauth 123456

    ? (4) 從服務只讀

    需要注意的是,從服務器通常是只讀,所以要配置只讀(默認是只讀,不要更改即可) slave-serve-stale-data yes

    ? (5)重啟從redis服務

    Redis哨兵機制

    主從復制的缺陷

    當主服務宕機時,redis不能自動切換從服務為主服務,只能通過人工手動的形式,中間會出現服務斷檔

    哨兵模式解決redis主服務切換的問題

    概念

    哨兵模式是一種特殊的模式,首先Redis提供了哨兵的命令,哨兵是一個獨立的進程,作為進程,它會獨立運行。其原理是哨兵通過發送命令,等待Redis服務器響應,從而監控運行的多個Redis實例。

    作用

    • 通過發送命令,讓Redis服務器返回監控其運行狀態,包括主服務器和從服務器。
    • 當哨兵監測到master宕機,會自動將slave切換成master,然后通過發布訂閱模式通知其他的從服務器,修改配置文件,讓它們切換主機。

    多哨兵模式

    概念

    ? 然而一個哨兵進程對Redis服務器進行監控,可能會出現問題,為此,我們可以使用多個哨兵進行監控。各個哨兵之間還會進行監控,這樣就形成了多哨兵模式;

    故障切換的過程

    假設主服務器宕機,哨兵1先檢測到這個結果,系統并不會馬上進行failover過程,僅僅是哨兵1主觀的認為主服務器不可用,這個現象成為主觀下線。當后面的哨兵也檢測到主服務器不可用,并且數量達到一定值時,那么哨兵之間就會進行一次投票,投票的結果由一個哨兵發起,進行failover操作。切換成功后,就會通過發布訂閱模式,讓各個哨兵把自己監控的從服務器實現切換主機,這個過程稱為客觀下線。這樣對于客戶端而言,一切都是透明的。

    服務類型是否主服務Ip地址端口操作系統
    Redis192.168.56.1106379Linux
    Redis192.168.56.1106380Linux
    Redis192.168.56.1106381Linux
    Sentinel192.168.56.110Linux
    Sentinel192.168.56.110Linux
    Sentinel192.168.56.110Linux

    操作步驟

    1.調整為一主二仆模式,6379、6380、6381

    2.自定義的/myredis目錄下新建sentinel.conf文件,名字絕不能錯

    3.配置哨兵,填寫內容

    sentinel monitor mymaster 127.0.0.1 6379 1 其中mymaster為監控對象起的服務器名稱, 1 為至少有多少個哨兵同意遷移的數量。

    4.啟動哨兵

    /usr/local/bin redis做壓測可以用自帶的redis-benchmark工具 執行redis-sentinel /myredis/sentinel.conf

    5.當主機掛掉,從機選舉中產生新的主機

    (大概10秒左右可以看到哨兵窗口日志,切換了新的主機) 哪個從機會被選舉為主機呢?根據優先級別:slave-priority 原主機重啟后會變為從機。

    6.復制延時

    ? 由于所有的寫操作都是先在Master上操作,然后同步更新到Slave上,所以從Master同步到Slave機器有一定的延遲,當系統很繁忙的時候,延遲問題會更加嚴重,Slave機器數量的增加也會使這個問題更加嚴重。

    故障恢復

    優先級在redis.conf中默認:slave-priority 100,值越小優先級越高
    偏移量是指獲得原主機數據最全的
    每個redis實例啟動后都會隨機生成一個40位的runid

    Redis集群

    問題

    容量不夠,redis如何進行擴容?

    并發寫操作, redis如何分攤?

    另外,主從模式,薪火相傳模式,主機宕機,導致ip地址發生變化,應用程序中配置需要修改對應的主機地址、端口等信息。

    之前通過代理主機來解決,但是redis3.0中提供了解決方案。就是無中心化集群配置。

    什么是集群

    Redis 集群實現了對Redis的水平擴容,即啟動N個redis節點,將整個數據庫分布存儲在這N個節點中,每個節點存儲總數據的1/N。

    Redis 集群通過分區(partition)來提供一定程度的可用性(availability): 即使集群中有一部分節點失效或者無法進行通訊, 集群也可以繼續處理命令請求。

    部署redis集群

    1.刪除持久化數據 rdb.aof文件刪除

    2.制作6個實例,6379,6380,6381,6389,6390,6391

    3.配置基本信息

    開啟daemonize yes Pid文件名字 指定端口 Log文件名字 Dump.rdb名字 Appendonly 關掉或者換名字

    4.redis cluster配置修改

    cluster-enabled yes 打開集群模式 cluster-config-file nodes-6379.conf 設定節點配置文件名 cluster-node-timeout 15000 設定節點失聯時間,超過該時間(毫秒),集群自動進行主從切換。 include /home/bigdata/redis.conf port 6379 pidfile "/var/run/redis_6379.pid" dbfilename "dump6379.rdb" dir "/home/bigdata/redis_cluster" logfile "/home/bigdata/redis_cluster/redis_err_6379.log" cluster-enabled yes cluster-config-file nodes-6379.conf cluster-node-timeout 15000

    5.修改好redis6379.conf文件,拷貝多個redis.conf文件

    redis6379.conf redis6380.conf redis6381.conf redis6389.conf redis6390.conf redis6391.conf

    6.使用查找替換修改另外5個文件

    7.啟動6個redis服務

    8.將六個節點合成一個集群

    組合之前,請確保所有redis實例啟動后,nodes-xxxx.conf文件都生成正常

    • 合體
    cd /opt/redis-6.2.1/srcredis-cli --cluster create --cluster-replicas 1 192.168.11.101:6379 192.168.11.101:6380 192.168.11.101:6381 192.168.11.101:6389 192.168.11.101:6390 192.168.11.101:6391

    此處不要用127.0.0.1,請用真實地址

    –replicas 1 采用最簡單的方式配置集群,一臺主機,一臺從機,正好三組。

    • 普通方式登錄

    可能直接進入讀主機,存儲數據時,會出現MOVED重定向操作。所以,應該以集群方式登錄。

    • 采用集群策略連接,設置數據會自動切換到相應的寫主機

    • 通過 cluster nodes 命令查看集群信息

    • redis cluster 如何分配這六個節點?

      一個集群至少要有三個主節點。

      選項 --cluster-replicas 1 表示我們希望為集群中的每個主節點創建一個從節點。

      分配原則盡量保證每個主數據庫運行在不同的IP地址,每個從庫和主庫不在一個IP地址上。

    slots

    一個 Redis 集群包含 16384 個插槽(hash slot), 數據庫中的每個鍵都屬于這 16384 個插槽的其中一個,

    集群使用公式 CRC16(key) % 16384 來計算鍵 key 屬于哪個槽, 其中 CRC16(key) 語句用于計算鍵 key 的 CRC16 校驗和 。

    集群中的每個節點負責處理一部分插槽。 舉個例子, 如果一個集群可以有主節點, 其中:

    節點 A 負責處理 0 號至 5460 號插槽。

    節點 B 負責處理 5461 號至 10922 號插槽。

    節點 C 負責處理 10923 號至 16383 號插槽。

    • 在集群中錄入值

      在redis-cli每次錄入、查詢鍵值,redis都會計算出該key應該送往的插槽,如果不是該客戶端對應服務器的插槽,redis會報錯,并告知應前往的redis實例地址和端口。

      redis-cli客戶端提供了 –c 參數實現自動重定向。

      如 redis-cli -c –p 6379 登入后,再錄入、查詢鍵值對可以自動重定向。

      不在一個slot下的鍵值,是不能使用mget,mset等多鍵操作。

    ? 可以通過{}來定義組的概念,從而使key中{}內相同內容的鍵值對放到一個slot中去。

    ?

    • 查詢集群中的值

      CLUSTER GETKEYSINSLOT <slot><count> 返回 count 個 slot 槽中的鍵。

    • 故障恢復

      如果主節點下線?從節點能否自動升為主節點?注意:15秒超時

      主節點恢復后,主從關系會如何?主節點回來變成從機。

      如果所有某一段插槽的主從節點都宕掉,redis服務是否還能繼續?
      如果某一段插槽的主從都掛掉,而cluster-require-full-coverage 為yes ,那么 ,整個集群都掛掉
      如果某一段插槽的主從都掛掉,而cluster-require-full-coverage 為no ,那么,該插槽數據全都不能使用,也無法存儲。
      redis.conf中的參數 cluster-require-full-coverage

    Redis集群的不足

    多鍵操作是不被支持的

    多鍵的Redis事務是不被支持的。lua腳本不被支持

    由于集群方案出現較晚,很多公司已經采用了其他的集群方案,而代理或者客戶端分片的方案想要遷移至redis cluster,需要整體遷移而不是逐步過渡,復雜度較大

    Redis應用問題解決

    緩存穿透

    • 問題描述:

      • key對應的數據在數據源并不存在,每次針對此key的請求從緩存獲取不到,請求都會壓到數據源,從而可能壓垮數據源。比如用一個不存在的用戶id獲取用戶信息,不論緩存還是數據庫都沒有,若黑客利用此漏洞進行攻擊可能壓垮數據庫。

    • 解決方案

      一個一定不存在緩存及查詢不到的數據,由于緩存是不命中時被動寫的,并且出于容錯考慮,如果從存儲層查不到數據則不寫入緩存,這將導致這個不存在的數據每次請求都要到存儲層去查詢,失去了緩存的意義。

      解決方案

      • (1) **對空值緩存:**如果一個查詢返回的數據為空(不管是數據是否不存在),我們仍然把這個空結果(null)進行緩存,設置空結果的過期時間會很短,最長不超過五分鐘

      • (2) 設置可訪問的名單(白名單):

        使用bitmaps類型定義一個可以訪問的名單,名單id作為bitmaps的偏移量,每次訪問和bitmap里面的id進行比較,如果訪問id不在bitmaps里面,進行攔截,不允許訪問。

      • (3) 采用布隆過濾器:(布隆過濾器(Bloom Filter)是1970年由布隆提出的。它實際上是一個很長的二進制向量(位圖)和一系列隨機映射函數(哈希函數)。

        布隆過濾器可以用于檢索一個元素是否在一個集合中。它的優點是空間效率和查詢時間都遠遠超過一般的算法,缺點是有一定的誤識別率和刪除困難。)

        將所有可能存在的數據哈希到一個足夠大的bitmaps中,一個一定不存在的數據會被 這個bitmaps攔截掉,從而避免了對底層存儲系統的查詢壓力。

      • (4) 進行實時監控:當發現Redis的命中率開始急速降低,需要排查訪問對象和訪問的數據,和運維人員配合,可以設置黑名單限制服務

    緩存擊穿

    • 問題描述

      • key對應的數據存在,但在redis中過期,此時若有大量并發請求過來,這些請求發現緩存過期一般都會從后端DB加載數據并回設到緩存,這個時候大并發的請求可能會瞬間把后端DB壓垮。

    • 解決方案

      key可能會在某些時間點被超高并發地訪問,是一種非?!盁狳c”的數據。這個時候,需要考慮一個問題:緩存被“擊穿”的問題。

      解決問題:

      • **(1) 預先設置熱門數據:**在redis高峰訪問之前,把一些熱門數據提前存入到redis里面,加大這些熱門數據key的時長

      • **(2) 實時調整:**現場監控哪些數據熱門,實時調整key的過期時長

      • (3) 使用鎖:

        • 就是在緩存失效的時候(判斷拿出來的值為空),不是立即去load db。
        • 先使用緩存工具的某些帶成功操作返回值的操作(比如Redis的SETNX)去set一個mutex key
        • 當操作返回成功時,再進行load db的操作,并回設緩存,最后刪除mutex key;
        • 當操作返回失敗,證明有線程在load db,當前線程睡眠一段時間再重試整個get緩存的方法。

    緩存雪崩

    • 問題描述

      key對應的數據存在,但在redis中過期,此時若有大量并發請求過來,這些請求發現緩存過期一般都會從后端DB加載數據并回設到緩存,這個時候大并發的請求可能會瞬間把后端DB壓垮。

      緩存雪崩與緩存擊穿的區別在于這里針對很多key緩存,前者是某一個key

    正常訪問

    緩存失效瞬間

    • 解決方案

      緩存失效時的雪崩效應對底層系統的沖擊非??膳?/p>

      方法

      • (1) 構建多級緩存架構: nginx緩存 + redis緩存 +其他緩存(ehcache等)

      • (2) 使用鎖或隊列:

        用加鎖或者隊列的方式保證來保證不會有大量的線程對數據庫一次性進行讀寫,從而避免失效時大量的并發請求落到底層存儲系統上。不適用高并發情況

      • (3) 設置過期標志更新緩存:

        記錄緩存數據是否過期(設置提前量),如果過期會觸發通知另外的線程在后臺去更新實際key的緩存

      • (4) 將緩存失效時間分散開:

        比如我們可以在原有的失效時間基礎上增加一個隨機值,比如1-5分鐘隨機,這樣每一個緩存的過期時間的重復率就會降低,就很難引發集體失效的事件。

    總結

    以上是生活随笔為你收集整理的Redis从入门到入土的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    国产精品久久99综合免费观看尤物 | 亚洲成人精品久久久 | 精品婷婷 | 中文字幕三区 | 在线三级av| 久久久网页 | 免费看的黄色 | av综合在线观看 | 国产精品丝袜久久久久久久不卡 | 久久草av| 国产91丝袜在线播放动漫 | 亚洲国产精品久久久久婷婷884 | 狠狠狠色狠狠色综合 | 国产精品九九久久99视频 | 日本亚洲国产 | 国产精品不卡一区 | av看片在线观看 | 中文字幕日本电影 | 亚洲视频在线视频 | 国产精品18久久久久久久网站 | 福利视频一区二区 | 免费精品视频在线 | 久久久久亚洲精品中文字幕 | 99在线视频观看 | 国内精品久久久久影院日本资源 | 欧美巨大荫蒂茸毛毛人妖 | 亚洲日本韩国一区二区 | 亚洲资源在线 | 日韩欧美xxxx | jizzjizzjizz亚洲| 五月天综合色激情 | 日韩在线免费视频 | 久久久影视| 中文字幕精品在线 | 日日夜夜综合 | 中文字幕在线观看完整版 | 国产日产精品一区二区三区四区 | 欧美日韩免费视频 | 日韩久久一区 | 97热久久免费频精品99 | 久久久99国产精品免费 | 91大神免费视频 | 在线视频日韩一区 | 在线高清一区 | 在线免费观看一区二区三区 | 去干成人网 | 久久久久久久久久久久久久电影 | 久久亚洲影院 | 国产黄色在线网站 | 伊人在线视频 | 97高清视频 | 粉嫩av一区二区三区四区 | 亚洲视频在线免费看 | 欧美日本高清视频 | 丝袜美腿在线播放 | 久草视频在线资源站 | 成人国产精品一区二区 | 99爱在线观看 | 婷婷亚洲激情 | 久久毛片高清国产 | 91精品一区二区三区久久久久久 | 91亚·色 | 免费在线观看黄色网 | 午夜精品视频免费在线观看 | 啪啪激情网 | 精品成人a区在线观看 | 亚洲男男gaygayxxxgv | 69久久久久久久 | 成人av在线看| 91欧美日韩国产 | 国产美女精品 | 日韩精品免费一区二区 | 欧美国产一区在线 | 欧美在线视频不卡 | 最近更新中文字幕 | 国产成人一区二区啪在线观看 | 97色在线观看免费视频 | 精品国产电影一区 | 国产免费又爽又刺激在线观看 | 国产精品女人久久久久久 | 久久婷婷精品视频 | 精品国产一区二区三区久久 | 欧美午夜精品久久久久久孕妇 | 精品国产一区二区三区久久久蜜月 | 亚洲精品综合欧美二区变态 | 国产激情小视频在线观看 | 亚洲视频一区二区三区在线观看 | 亚洲乱码久久久 | 在线欧美最极品的av | 伊人电影在线观看 | 国内久久久久久 | 91porny九色在线播放 | 日韩中文字幕在线 | 99中文字幕在线观看 | 在线播放日韩 | 欧美一级黄色网 | 日韩精品 在线视频 | 夜夜躁日日躁狠狠久久av | 日韩欧美一区二区三区在线观看 | 又爽又黄在线观看 | 国产精品久久久久久久久大全 | 婷婷激情欧美 | 久草国产精品 | 99这里精品 | 免费观看午夜视频 | 97在线视频免费看 | 色狠狠婷婷 | 国产精品女主播一区二区三区 | 日韩美精品视频 | 国产成人61精品免费看片 | 99久久99久久免费精品蜜臀 | 字幕网在线观看 | 久久精品电影网 | 97精品欧美91久久久久久 | 久久久久夜色 | 狠狠干婷婷色 | 91爱爱网址 | 天堂视频一区 | 在线观看国产高清视频 | 99在线观看视频网站 | 91精品成人 | 免费亚洲精品 | 亚洲精品国产综合久久 | 国产精品在线看 | 午夜久久 | 91麻豆精品国产91久久久无需广告 | 日韩精品高清视频 | 狠狠狠干狠狠 | 国产日韩欧美在线看 | 久av在线 | 人人插人人玩 | 午夜久久久久久久久久久 | 黄色三级网站在线观看 | 麻豆视频在线 | 91色吧| 最新日韩在线观看视频 | 日韩免费观看一区二区 | 久久一区91 | 国产一区二区在线视频观看 | 毛片一区二区 | 6080yy午夜一二三区久久 | 玖玖视频国产 | 成人欧美日韩国产 | 欧美天天射| 国产91免费观看 | 亚洲jizzjizz日本少妇 | 亚洲成av人片一区二区梦乃 | 亚洲天堂精品 | 天天操天天射天天 | 少妇视频一区 | 精品中文字幕视频 | 久久久久久久久免费视频 | 精品一二三四在线 | 奇米影视777四色米奇影院 | 久久av电影| 黄色的网站在线 | 最新的av网站 | 日韩一区在线播放 | 久久精品区 | 亚洲艳情 | 91c网站色版视频 | 亚洲91精品在线观看 | 亚洲人人av | 在线观看aaa | 中文字幕高清免费日韩视频在线 | 国产白浆在线观看 | 日本中文字幕观看 | www91在线观看| 久久福利小视频 | 91毛片视频 | 麻豆观看| 97免费中文视频在线观看 | 婷婷免费视频 | 成人a免费看 | 一级黄色电影网站 | 成人a级黄色片 | 久久精品国产v日韩v亚洲 | 国产精品久久久久久69 | 欧美成年人在线视频 | 香蕉久久久久久av成人 | 精品久久久久久久久中文字幕 | 成年人免费在线观看网站 | 成人久久久久久久久 | 成年人网站免费在线观看 | 中文资源在线播放 | 日韩av图片 | 日韩电影在线一区 | 国产精品成人国产乱一区 | 亚洲在线视频网站 | 91丨九色丨高潮 | 青春草视频在线播放 | 欧美色操 | 最新国产精品拍自在线播放 | 成人亚洲欧美 | 免费观看第二部31集 | 国产精品美女999 | 欧美一级视频免费 | 日韩精品免费在线播放 | 久久国产精品99久久久久久老狼 | 黄色app网站在线观看 | 久久96| 一区二区三区在线视频111 | 日韩美女黄色片 | 日韩在线观看网址 | av福利第一导航 | 激情视频91 | 九九免费在线观看视频 | 亚洲在线视频网站 | 99热在线网站| 911精品美国片911久久久 | 国产精品福利在线观看 | 成人三级网址 | 欧美日韩精 | 欧美另类亚洲 | 精品一区免费 | 一二三区av | 精品一区二区久久久久久久网站 | 欧美成亚洲 | 亚洲 欧美 综合 在线 精品 | 在线天堂日本 | 成人小视频在线免费观看 | 蜜臀av免费一区二区三区 | 国产成人久久 | 久久视频在线观看中文字幕 | 久久99国产一区二区三区 | 999国内精品永久免费视频 | 在线观看日韩视频 | 天天操天天干天天插 | 久久精品这里热有精品 | 成人小视频免费在线观看 | 国产精品久久婷婷六月丁香 | 天天干夜夜爱 | 久久看片网站 | 久久激情五月激情 | 亚洲91精品在线观看 | 91系列在线 | 国产123av| 久久久久国产精品厨房 | 国产人成一区二区三区影院 | 久久精品国产一区二区电影 | av网站免费在线 | 国产精品女人久久久 | 国产精品久久久久久久久久东京 | 少妇高潮流白浆在线观看 | 午夜三级在线 | 国产亚洲精品久 | 中文字幕在线色 | 99久久国产免费看 | 成人黄色电影在线观看 | 亚洲精品在线视频播放 | 成年人免费在线观看网站 | 亚洲天堂网在线视频观看 | 丁香久久五月 | 欧美极品久久 | 亚洲精品午夜视频 | 国产精品毛片一区二区三区 | 99久久一区| 中文字幕在线第一页 | 人人澡人人爽 | 国产高清av免费在线观看 | 亚洲精品在线观 | 韩国av免费在线 | 九九免费在线视频 | 亚洲在线激情 | 69久久夜色精品国产69 | 国产第一二区 | 乱男乱女www7788 | 久久精品视频在线播放 | 国产黄色精品在线观看 | 欧美精品久久天天躁 | 欧美日韩1区 | 欧美日韩高清在线 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 中文字幕乱码电影 | 九九精品视频在线 | 久久国产热 | 国产精品嫩草影视久久久 | 国产精品ⅴa有声小说 | 在线免费黄 | 99在线观看免费视频精品观看 | 国产在线视频一区二区 | 99精品系列 | 精品免费视频 | 国产日韩欧美在线免费观看 | 五月婷婷导航 | 天天干夜夜想 | 国产一级二级三级在线观看 | 日韩小视频 | 国产原创在线观看 | 中文字幕久久亚洲 | 一区二区三区日韩视频在线观看 | 天天玩天天干天天操 | 97视频一区 | 久久国产精品一区二区三区四区 | 一级黄色大片在线观看 | 国产一二三精品 | 色综合久久综合中文综合网 | 国产精品无av码在线观看 | 免费在线观看一区 | 久久国产精品影视 | 91插插插免费视频 | 中文在线a∨在线 | 美州a亚洲一视本频v色道 | 色婷婷久久久综合中文字幕 | 99国产精品一区二区 | 在线有码中文 | 人人澡人人舔 | av一区二区三区在线 | 九九热免费在线视频 | a极黄色片 | 日韩欧美在线综合网 | 夜夜骑天天操 | 久久综合色综合88 | 成人在线视频免费观看 | 国产日韩高清在线 | 日韩欧美国产精品 | 国际av在线 | 91丨九色丨91啦蝌蚪老版 | 久久歪歪 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 久久艹欧美 | 中文字幕在线观看一区二区 | 天天干夜夜爽 | 夜色资源网 | 国产一级电影 | 国产精品视频在线观看 | 手机成人免费视频 | 久久精品高清 | 午夜精品在线看 | 91在线看黄| 成年人看片网站 | 久久久精品小视频 | 热99在线视频 | 亚洲欧美日韩精品久久久 | 亚洲日韩精品欧美一区二区 | 欧美激情精品久久久久久免费印度 | 高清不卡一区二区在线 | 一级一级一片免费 | 爱色av.com| 91成人精品观看 | 黄色视屏免费在线观看 | 国产美女主播精品一区二区三区 | 69久久99精品久久久久婷婷 | 欧美中文字幕第一页 | 天堂中文在线播放 | 在线免费中文字幕 | 久久久久免费精品国产 | 国产精品午夜久久 | 久久精品三 | 日产乱码一二三区别在线 | .精品久久久麻豆国产精品 亚洲va欧美 | 精品在线观看一区二区 | 亚洲精品国产精品99久久 | 精产嫩模国品一二三区 | 免费a v网站 | 中文字幕免费不卡视频 | 久久综合精品国产一区二区三区 | 国产日韩亚洲 | 99爱国产精品 | 免费三级大片 | 国产精品久久久视频 | 91精品国产99久久久久久久 | 色婷婷97| 四虎在线免费 | 中文字幕在线观看视频一区 | 狠狠狠狠狠狠狠干 | 91九色蝌蚪视频网站 | 91久久人澡人人添人人爽欧美 | 97视频免费在线 | 999超碰| 色婷婷综合久久久 | 免费三级a | 久久久久久视频 | 看av免费 | 手机av电影在线观看 | 24小时日本在线www免费的 | 操操操人人人 | 亚洲精品综合在线观看 | 激情综合网天天干 | 免费av在线播放 | 日韩中文在线视频 | 免费看国产曰批40分钟 | 亚洲精品乱码久久久久久按摩 | 在线观看免费福利 | 国产精品一区二区av日韩在线 | 五月天婷亚洲天综合网鲁鲁鲁 | 欧美日韩综合在线观看 | 亚洲精品在线免费播放 | 十八岁以下禁止观看的1000个网站 | 99久久夜色精品国产亚洲96 | 中文字幕影片免费在线观看 | 最新av网站在线观看 | 欧美激情综合五月色丁香 | 91免费高清视频 | 91观看视频 | 亚洲精品高清一区二区三区四区 | 亚洲精品大片www | 久久综合九色综合久久久精品综合 | 日本久久电影网 | 在线不卡视频 | 国产精品嫩草69影院 | 亚洲精品乱码久久久久久蜜桃91 | 一区二区毛片 | 国产成人久久精品亚洲 | 中文字幕日本在线 | 日韩久久久久久久久久 | 在线观看精品黄av片免费 | 91精品导航 | 久久不卡国产精品一区二区 | 国产中文字幕在线免费观看 | 日本三级在线观看中文字 | 一级黄色大片 | 免费精品国产va自在自线 | 久久人人爽人人人人片 | 欧美日韩中文字幕在线视频 | 91漂亮少妇露脸在线播放 | 国产精品影音先锋 | 中文字幕在线观看一区二区 | 国产精品不卡一区 | 国产精品久久久视频 | 国产精品视频久久 | 国产乱对白刺激视频在线观看女王 | 国产在线视频一区二区三区 | 一级大片在线观看 | 欧美中文字幕久久 | 国产精品永久久久久久久www | 免费观看视频的网站 | www.色综合.com | 国产网站av | www.伊人色.com | 韩国av永久免费 | 亚洲狠狠婷婷 | 欧美三级在线播放 | 人人爽人人爽人人爽人人爽 | av福利在线导航 | 久久久精品电影 | 久久久精品久久日韩一区综合 | 久久韩国免费视频 | 国产美女无遮挡永久免费 | 国产成人一区二区三区影院在线 | 天天干天天干 | 69中文字幕 | 美女网站免费福利视频 | 欧美整片sss | 99精品国产兔费观看久久99 | 亚洲视频一 | 国产色黄网站 | 国产精品一区二区久久国产 | 午夜精品久久久久久 | 日韩一区二区三区免费电影 | 黄色av网站在线观看 | 色噜噜在线观看视频 | 亚洲色影爱久久精品 | 免费看一级特黄a大片 | 色 中文字幕 | 欧美一进一出抽搐大尺度视频 | 伊色综合久久之综合久久 | 国产精品欧美日韩 | 国产xvideos免费视频播放 | 国产色女人 | 免费看的国产视频网站 | japanesefreesex中国少妇 | a级成人毛片 | 久久国产亚洲精品 | 亚州精品在线视频 | 午夜私人影院久久久久 | 一区二区电影网 | 三级大片网站 | 久久综合99| 国产中文字幕免费 | 免费午夜网站 | 精品视频久久久久久 | 色综合天天色 | 日韩二区三区在线 | 久久精品久久久久 | 久久精品国产亚洲精品2020 | 美女在线观看网站 | 成人小视频在线观看免费 | 97视频在线看 | 中文久草 | 久久久综合精品 | 精品国偷自产国产一区 | 91手机视频 | 欧美亚洲成人免费 | 国产一级电影网 | 综合网伊人 | 久久99精品久久久久久清纯直播 | 99精品视频在线观看免费 | 日韩高清一区 | 91成人短视频在线观看 | avove黑丝| 黄色av三级在线 | 成人资源网| 亚洲一区二区视频在线 | 在线观看中文字幕网站 | 99久久精品日本一区二区免费 | 日韩精品中文字幕在线不卡尤物 | 日韩中文字幕视频在线 | 日韩av中文 | 国产精品99久久久精品免费观看 | 日日夜夜噜 | 精品国产一区二区三区男人吃奶 | 久久久麻豆精品一区二区 | 天天干天天干天天干天天干天天干天天干 | 免费a级大片 | 久日精品 | 久久欧美在线电影 | 日韩av电影网站在线观看 | 色多多污污在线观看 | 亚洲综合小说电影qvod | 精品国产乱码一区二 | 成人国产精品免费观看 | 一本一道久久a久久综合蜜桃 | 亚洲理论在线观看 | 欧美国产日韩一区二区三区 | 夜夜躁日日躁狠狠久久88av | 毛片激情永久免费 | 免费黄色激情视频 | 久久久精品视频网站 | 久草观看 | 999成人精品| 人人澡人人模 | 久久精品久久久精品美女 | 日日干天天操 | 亚洲伦理一区二区 | 91中文字幕在线播放 | 国产黄免费看 | 国产精品久久久久久久久免费 | 亚洲欧洲精品久久 | 91精品久久久久久综合乱菊 | 日韩字幕 | 精久久久久 | 最近能播放的中文字幕 | 久久精品视频日本 | 日韩影视精品 | 久久成人精品电影 | 国产不卡免费av | 久久久久亚洲国产 | 在线观看亚洲视频 | 久久国产精品视频免费看 | 欧美孕妇与黑人孕交 | 亚洲精品欧美成人 | 亚洲精品久久久久久国 | 黄色1级毛片 | 手机在线看片日韩 | 午夜国产一区二区 | 国产精品久久久久久久久岛 | 亚洲最大av网站 | 韩国av免费在线 | 日韩一区二区三区免费电影 | 天天爱天天爽 | 天天做天天看 | av九九 | 日本激情中文字幕 | 中文字幕中文字幕中文字幕 | 97偷拍视频| 久久久久亚洲最大xxxx | 久久国产精品99国产 | 久草在线资源网 | 天天操婷婷 | 国产精品电影在线 | 91麻豆高清视频 | 91成品人影院 | 欧洲激情综合 | 欧美一区成人 | 亚洲网久久 | 色视频在线观看 | 99久久久国产免费 | 国产乱对白刺激视频在线观看女王 | 亚欧日韩av | 久草在线| 伊甸园永久入口www 99热 精品在线 | 男女视频91 | 91av手机在线 | 999日韩| 免费a现在观看 | 欧美夫妻性生活电影 | 福利视频网站 | 国产成人三级三级三级97 | 99久久夜色精品国产亚洲96 | 国产一区欧美一区 | 91视频高清免费 | 欧美精品乱码久久久久久按摩 | av天天草| 日本精品中文字幕在线观看 | 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | 成人午夜在线观看 | 国产精品99久久久久 | 欧美精品日韩 | 欧美婷婷综合 | 成人午夜在线电影 | 在线观看免费一级片 | 啪啪av在线 | 2019中文在线观看 | 国产精彩视频一区二区 | 一级黄网| 五月天天天操 | 久久av在线播放 | 精品视频免费久久久看 | 一级淫片在线观看 | 在线观看午夜av | 国产成人1区 | 91网站在线视频 | 九九热国产视频 | 97人人模人人爽人人喊中文字 | 亚州av成人 | www久久久久 | 少妇高潮冒白浆 | 国产特级毛片aaaaaa | www.综合网.com | 国产精品久久片 | 日韩中文字幕国产精品 | 在线成人免费电影 | 97狠狠操 | 久久极品 | 成年人在线看视频 | 亚洲精品女 | 天天躁天天操 | 日韩在线无 | 麻豆久久精品 | 欧美一级片在线播放 | 亚洲尺码电影av久久 | 亚洲欧美激情插 | 五月婷婷丁香六月 | 黄网站免费大全入口 | 在线观看视频在线 | 婷婷久草 | 深爱综合网 | 国产999精品久久久久久绿帽 | 欧美极品少妇xbxb性爽爽视频 | 999久久久久久 | 免费在线观看视频一区 | 日韩免费成人av | 久久综合狠狠综合久久综合88 | 不卡精品 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 午夜精品久久久久久 | 国内精品福利视频 | 国产色综合天天综合网 | 欧美一区二区日韩一区二区 | 国产黄色免费看 | av在线免费观看网站 | 国产一级免费片 | 欧美精品少妇xxxxx喷水 | 国产精品第一 | 成人在线网站观看 | 久久国产精品影视 | 麻豆传媒在线免费看 | 97香蕉视频 | 成人午夜毛片 | 人人玩人人添人人澡超碰 | 婷婷丁香花 | 精品1区2区3区 | 色婷婷激情电影 | 国产精品6 | 在线看片视频 | 国产亚洲成av人片在线观看桃 | 亚洲精品麻豆视频 | 亚洲高清视频在线观看免费 | 91成人破解版 | 美女国内精品自产拍在线播放 | 久久精品国产免费看久久精品 | 亚洲免费国产视频 | 激情中文字幕 | 一区二区三区在线观看中文字幕 | 手机在线看永久av片免费 | 日韩网站免费观看 | 亚洲区另类春色综合小说校园片 | 久久久91精品国产一区二区三区 | 中文字幕在线色 | 精品 激情 | 最近中文字幕免费av | 91丝袜美腿 | 免费观看www小视频的软件 | 久久成人国产 | 91精品国产高清自在线观看 | 久久精品国产亚洲 | 欧美一级黄色网 | 成人在线免费视频 | 91看片淫黄大片一级在线观看 | 天天射夜夜爽 | 免费观看第二部31集 | 国内丰满少妇猛烈精品播 | 992tv又爽又黄的免费视频 | 一级欧美日韩 | 九9热这里真品2 | 欧美一区在线观看视频 | 丁香花五月 | 在线三级播放 | 午夜999| 国内外成人免费在线视频 | 国产精品系列在线观看 | 一二区av| 激情开心站 | 97视频在线免费 | 久久久久国产视频 | 特黄特黄的视频 | 午夜精品一区二区三区可下载 | 黄色小说在线观看视频 | 欧洲亚洲激情 | 日韩美一区二区三区 | 欧美大香线蕉线伊人久久 | 日日摸日日添夜夜爽97 | 亚洲做受高潮欧美裸体 | 香蕉视频4aa| 国产精品专区h在线观看 | 毛片激情永久免费 | 岛国av在线免费 | 国产福利小视频在线 | 欧美日韩一区二区免费在线观看 | 亚洲乱码久久久 | 久久综合九色综合97_ 久久久 | 天天操天天干天天综合网 | 国产精品久久三 | 三级动态视频在线观看 | 九九在线高清精品视频 | 婷婷激情五月综合 | 日韩精品免费一区 | 久久在线精品 | 日本黄色大片免费看 | 日本丶国产丶欧美色综合 | 97品白浆高清久久久久久 | 国产美女无遮挡永久免费 | 九九九在线 | 亚洲国产日韩av | 日韩免费高清在线 | 久久国产精品99久久久久 | 91在线产啪 | 999精品| 亚洲综合精品视频 | 欧美性色19p | 亚洲精品男人天堂 | www.国产在线观看 | 天天天射 | 香蕉手机在线 | 999视频在线播放 | 99爱视频在线观看 | 精品国产成人av在线免 | 99热精品国产一区二区在线观看 | 99热这里只有精品1 av中文字幕日韩 | 涩涩成人在线 | 激情综合五月 | 国产精品视频999 | 在线免费高清视频 | 亚洲人av免费网站 | 精品国产1区2区 | 九九免费在线观看视频 | 深夜男人影院 | 国产精品麻豆三级一区视频 | 午夜电影 电影 | 亚洲春色成人 | 91字幕| 久久天天躁夜夜躁狠狠躁2022 | a√资源在线 | 69久久99精品久久久久婷婷 | 亚洲电影一区二区 | 国产专区在线 | 婷婷丁香狠狠爱 | 中文字幕在线观看视频网站 | 中文字幕在线观看视频网站 | 国产在线无| 六月色丁香 | 久久99日韩 | 91亚洲精品乱码久久久久久蜜桃 | 黄色福利网 | 久久手机免费观看 | 欧美一级黄大片 | 日日操操操| 超碰av在线播放 | 91丨九色丨丝袜 | 超碰97公开| 日本女人逼 | 激情综合色图 | 成人av手机在线 | 国产黄色免费看 | 免费视频97 | 久久视频中文字幕 | 青青久草在线 | 日韩在线电影一区二区 | 日日夜夜人人精品 | 成年人在线观看视频免费 | 国产中文字幕在线 | 久久久久久久久精 | 欧美日韩在线播放一区 | 中文字幕一区二区三区久久蜜桃 | 日日碰狠狠添天天爽超碰97久久 | 日产乱码一二三区别在线 | 国产日韩欧美在线观看视频 | 人人爽人人乐 | 亚洲一片黄 | 福利一区二区三区四区 | 国内精品国产三级国产aⅴ久 | 日韩大片在线免费观看 | 人人超碰人人 | 黄色在线视频网址 | 欧美日韩国产精品一区 | 97色资源 | 国产精品久久久毛片 | 欧美日本高清视频 | 最新av中文字幕 | 日韩在线小视频 | 九九热在线免费观看 | 激情久久一区二区三区 | 亚洲黄网址 | .国产精品成人自产拍在线观看6 | 免费在线h| 99精品国产成人一区二区 | 久久狠狠一本精品综合网 | 久久99国产精品久久 | 2024av| 精品不卡av | 国产精品破处视频 | 欧美精品免费一区二区 | 天天爽夜夜操 | 日日夜夜添 | 91视频久久久久久 | 51久久成人国产精品麻豆 | 亚洲波多野结衣 | 久草免费在线视频观看 | 美女福利视频在线 | 成人久久久久久久久久 | 超级碰碰免费视频 | 亚洲 综合 激情 | 成年人视频在线免费播放 | 天天操天天色天天 | 久草在线这里只有精品 | 中文字幕色综合网 | 中文字幕无吗 | 亚洲高清在线精品 | 日本在线中文 | 九九九热精品免费视频观看 | 国产精品丝袜久久久久久久不卡 | 欧美性脚交 | 国产99区 | 午夜999| 国产在线观看h | 91在线视频播放 | 日韩精品一区二区三区免费视频观看 | 久久久久久国产精品美女 | www.eeuss影院av撸| 成人h电影在线观看 | 免费观看完整版无人区 | 亚洲国产福利视频 | 婷婷电影在线观看 | 一级黄色片在线 | 久久久久久国产一区二区三区 | 亚洲成人免费观看 | 一级a毛片高清视频 | 97视频资源| 92国产精品久久久久首页 | 亚洲精品中文在线资源 | 综合精品久久 | 午夜精品久久久久久久久久久久久久 | 欧美不卡视频在线 | 97精品电影院| 亚洲国产成人在线观看 | 久久成人国产精品一区二区 | 免费网站看v片在线a | 成人av电影在线观看 | 午夜性生活 | 亚洲 欧美 精品 | 国产精品九九九九九 | 久久久久国产精品视频 | www日韩在线 | 久久成人一区 | 天天爽夜夜爽人人爽一区二区 | 天天想夜夜操 | 色综合久久88色综合天天人守婷 | 亚洲精品电影在线 | 国产精品亚洲综合久久 | 99免费在线视频 | 日韩精品一区二区免费视频 | 欧美精品午夜 | 四虎永久国产精品 | 天天艹 | 久久久高清免费视频 | 婷婷色中文网 | 人人澡人人模 | 亚洲va欧美va人人爽春色影视 | 一区二区视频电影在线观看 | 国产精品一区二区久久国产 | 麻豆免费观看视频 | 国产高清一 | 天天干中文字幕 | 久久99在线观看 | 日韩一区二区三免费高清在线观看 | 天天天综合网 | 成人黄色在线电影 | 五月婷婷综合网 | 在线成人性视频 | 成年人在线免费看片 | 欧美一级片在线观看视频 | 99久久婷婷国产综合亚洲 | 久久 国产一区 | 91亚洲精品国偷拍 | av三级av| 91 在线视频播放 | 国产裸体bbb视频 | 婷婷深爱 | 国产少妇在线观看 | 婷婷在线视频 | 91亚洲精品国产 | 天堂在线成人 | 黄色大全免费观看 | 久久伦理电影网 | 日韩美女黄色片 | 日韩av高清在线观看 | 成人免费观看大片 | 美女在线观看av | 国产精品国产三级国产专区53 | 日韩av快播电影网 | 黄色一级网| 精品国产一二三 | 久久艹艹 | 免费观看一级一片 | 日本中文字幕在线电影 | 国产自产在线视频 | 91在线视频导航 | 天天色天天综合网 | 免费在线国产精品 | 美女久久久久久久久久 | 久久精品资源 | 91精品国产成人 | 69视频网站 | 又黄又爽的免费高潮视频 | 亚洲国产精品推荐 | 综合五月婷婷 | 日韩精品一区二区免费视频 | 久久久久久国产精品999 | 国产欧美精品一区二区三区 | 国产91勾搭技师精品 | 国产在线国偷精品产拍 | 成人黄色在线看 | 久久久免费播放 | 国产午夜一区 | 日韩一区在线免费观看 | 久久久久在线 | 高清av在线免费观看 | 国产成人一二三 | 激情亚洲综合在线 | 色综合久久88色综合天天人守婷 | 探花视频在线版播放免费观看 | 亚洲视频每日更新 | 国产精品一区二区av影院萌芽 | 国产热re99久久6国产精品 | 99在线视频网站 | 免费福利视频导航 | 亚洲激情小视频 | 成年人视频免费在线播放 | 亚洲精品中文字幕视频 | 国产精品igao视频网入口 | 日本性高潮视频 | 黄色天堂在线观看 | 91九色porny蝌蚪主页 | 在线观看中文字幕av | 欧美网址在线观看 | 999抗病毒口服液 | 中文字幕免费在线 | 日韩影视在线 | 久99久中文字幕在线 | 国产色影院| 婷婷丁香花 | 黄色三级久久 | 亚洲国产免费 | 午夜精品久久久久久久久久久久 | 天天干,天天操 | 国产精品 国内视频 | 啪啪免费试看 | 欧美精品v国产精品 | 国产精品一区一区三区 | 一区二区 不卡 | 97在线观看 | 麻豆影视在线观看 | 不卡中文字幕av | 日韩欧美在线免费观看 | 欧美激情综合色综合啪啪五月 | 午夜视频在线网站 | 欧美日韩中文字幕综合视频 | 精品久久精品 | 日韩在线视频在线观看 | 日本精品视频在线观看 | 色婷婷99| 久久精品观看 | 国产精品福利一区 | av免费网| 久久视频一区 | 最近乱久中文字幕 | 亚洲精品五月 | 国产精品久久久久久久久久新婚 | 999ZYZ玖玖资源站永久 | 久久99九九99精品 | 日韩av高清在线观看 | 香蕉视频在线看 | 丰满少妇对白在线偷拍 | 久久影院中文字幕 | 日本性高潮视频 | 一区二区三区四区五区六区 | 日本在线中文在线 |