亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Redis > 正文

Redis安裝配置與常用命令

2020-03-17 12:34:44
字體:
來源:轉載
供稿:網友

Redis簡介

 Redis是一個開源(BSD許可),內存存儲的數據結構服務器,可用作數據庫,高速緩存和消息隊列代理。
 它支持字符串、哈希表、列表、集合、有序集合,位圖,hyperloglogs等數據類型。
 內置復制、Lua腳本、LRU收回、事務以及不同級別磁盤持久化功能,同時通過Redis Sentinel提供高可用,通過Redis Cluster提供自動分區。
   簡言之,Redis是一種面向“鍵/值”對數據類型的內存數據庫,可以滿足我們對海量數據的快速讀寫需求。
   Redis是一款NoSQL產品。
   官網:http://www.redis.io
   或者:http://redis.cn/

Redis的特點

Redis支持數據的持久化,可以將內存中的數據保存在磁盤中,重啟的時候可以再次加載進行使用。
Redis不僅僅支持簡單的k-v類型的數據,同時還提供list,set,zset,hash等數據結構的存儲。
Redis支持數據的備份,即master-slave主從模式的數據備份。

Redis的優勢

性能極高——Redis讀的速度為11w/s,寫的速度為8.1w/s。
豐富的數據類型——Redis支持二進制案例的Strings,Lists,Hashes,Sets即Ordered Sets數據類型操作。
原子性——Redis的所有操作都是原子性的,同時Redis還支持對幾個操作合并后的原子性執行。
豐富的特性——Redis還支持public/subscribe,通知,key過期等特性。

Redis應用

應用在高并發和實時請求的場景,eg新浪微博
hash:關注列表,粉絲列表
string:微博數,粉絲數
(避免使用select count(*) from...)
sorted set:
TopN,熱門微博
還有github,
stackoverflow也
用到了redis

Redis安裝配置

Redis安裝

windows下直接解壓即可使用,主要說明Linux下的安裝方式 :

解壓:
tar -zxvf soft/redis-3.2.0.tar.gz -C app/
重命名:
mv app/redis-3.2.0/ app/redis
編譯:
make
安裝:
make install PREFIX=/home/uplooking/app/redis

Redis配置

初始配置

  修個redis.conf中的配置項
  bind uplooking01
  daemonize yes(后臺運行)
  logfile /opt/redis-3.2.0/logs/redis.log(日志文件,目錄必須存在)

啟動服務

  make完成之后,在redis-3.2.0/src目錄下會出現編譯后的redis服務器程序redis-server,還有用于測試的客戶端程序redis-cli。
  redis-3.2.0]$ src/redis-server redis.conf
  當然,如果再執行了make install則會在指定安裝目錄下生成一個bin目錄,同時也會有相關的命令用于操作Redis.

啟動客戶端

  redis-3.2.0]$ src/redis-cli -h localhost -p 6379

關閉服務

  ps -ef | grep redis
  找到進程id后直接kill -9就可以了。

Redis配置查看

Redis的配置文件位于Redis的安裝目錄之下,文件名為redis.conf??梢酝ㄟ^config命令來查看或設置配置項。

查看
   語法,Redis config命令格式如下:
   redis localost:6379> config get config_set_name
   eg: redis localost:6379> config get loglevel
   1) "loglevel"
   2) "notice"
   使用*號獲取所有配置項:redis localost:6379> config get *

編輯
  可以通過修改redis.conf文件或使用config set命令來修改配置
  基本語法:
  redis localost:6379> config set conf_setting_name new_value
  eg: redis localost:6379> config set loglevel "warning"
      redis localost:6379> config get loglevel
  1) "loglevel"
  2) "warning"  -->對當前服務有效,之后當服務重啟之后,才會失效
Redis操作

string(字符串)

   string是redis最基本的類型,你可以理解成與memcached一模一樣的類型,一個key對應一個value。
   string類型是二進制安全的。意思是redis的string可以包含任何數據。比如jpg圖片或者序列化的對象 。
   string類型是Redis最基本的數據類型,一個鍵最大能存儲512MB。
實例
   redis 127.0.0.1:6379> SET name "redis.net.cn"
OK
   redis 127.0.0.1:6379> GET name
"redis.net.cn"
  在以上實例中我們使用了Redis的SET和GET命令。鍵為name,對應的值為redis.net.cn。
注意:一個鍵最大能存儲512MB。

常見的string操作命令如下:

set key value          設置指定key的值(會覆蓋無視數據類型)                set name yaohuiyingget key             獲取指定key的值                get namegetrange key start end     返回key中字符串值的子字符                getrange name 1 4                注意:字符串索引從0開始,獲取索引片段[start, end],包頭包尾getset key value        將給定key的值設為value,并返回key的舊值(old value)                getset name liuxiangqian                返回值為yaohuiyingmget key1 [key2..]       獲取所有(一個或多個)給定key的值                mget name name1setex key seconds value     將值value關聯到key,并將key的過期時間設為seconds(以秒為單位)setnx key value         只有在key不存在時設置key的值                作用同set,唯一和set的區別在于,只有當key不存在的時候,才進行設置,                而key存在,無法完成覆蓋setrange key offset value    用value參數覆寫給定key所儲存的字符串值,從偏移量offset開始                對key的原先的value進行局部覆蓋,從offset偏移量開始,                value有多長,就覆蓋多長strlen key           返回key所儲存的字符串值的長度mset key value [key value ...]   同時設置一個或多個key-value對MSETNX key value [key value ...]  同時設置一個或多個key-value對,當且僅當所有給定key都不存在psetex key milliseconds value    這個命令和SETEX命令相似,但它以毫秒為單位設置key的生存時間,                  而不是像SETEX命令那樣,以秒為單位incr key              將key中對應儲存的數字值增一                  對key對應的value進行+1,但是value必須是數字類型的字符串INCRBY key increment        將key所儲存的值加上給定的增量值(increment)                  之定義的步長incrbyfloat key increment      將key所儲存的值加上給定的浮點增量值(increment)decr key              將key中儲存的數字值減一decrby key decrement key      所儲存的值減去給定的減量值(decrement)append key value          如果key已經存在并且是一個字符串,                  APPEND命令將value追加到key原來的值的末尾

hash(哈希)

Redis hash 是一個鍵值對集合。Redis hash是一個string類型的field和value的映射表,hash特別適合用于存儲對象。
實例
redis 127.0.0.1:6379> HMSET w3ckey name "redis tutorial" description "redis basic commands for caching" likes 20 visitors 23000
OK
redis 127.0.0.1:6379> HGETALL w3ckey
1) "name"
2) "redis tutorial"
3) "description"
4) "redis basic commands for caching"
5) "likes"
6) "20"
7) "visitors"
8) "23000"
以上實例中 hash 數據類型存儲了一些描述信息(name,description, likes, visitors)到hash的w3ckey中。 使用hgetall 獲取所有的內容。
每個hash可以存儲232-1鍵值對(40多億)。

常用命令操作如下:

hexists key field        查看hash表key中,指定字段是否存在                0表示沒有,1表示有hget key field         獲取hash表中指定字段的值hgetall key           獲取所有的字段和值hincrby key field increment   為指定字段的整數值加上增量incrementhincrbyfloat key field increment  為指定字段的浮點值加上增量incrementhkeys key            獲取所有的字段hlen key            獲取key的字段的數量hdel key field2 [field2]    刪除一個或多個哈是表字段hmget key field1 [field2]    獲取所有給定字段的值hmset key f1 v1 [f2 v2]     同時將多個file-value設置到key中hset key field value      將哈希表key的field設置為valuehsetnx key field value     當在field不存在時,設置相關字段的值hvals key            獲取所有的值hscan key cursor [MATCH pattern] [COUNT count] 迭代哈希表中的鍵值對

list(列表)

   Redis列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)。
實例
redis 127.0.0.1:6379> lpush redis.net.cn redis
(integer) 1
redis 127.0.0.1:6379> lpush redis.net.cn mongodb
(integer) 2
redis 127.0.0.1:6379> lpush redis.net.cn rabitmq
(integer) 3
redis 127.0.0.1:6379> lrange redis.net.cn 0 10
1) "rabitmq"
2) "mongodb"
3) "redis"
redis 127.0.0.1:6379>
列表最多可存儲 232-1元素 (4294967295, 每個列表可存儲40多億)。

常用操作命令如下:

注意:關于list的操作,可以分為從左邊操作,也可以從右邊進行操作
l--->left(頭部),r---->right(尾部)

blpop key1 [key2 ] timeout   移除并獲取列表中的第一個元素,如果沒有會阻塞列表直到超時【單位是秒s】                或發現可彈出元素為止                簡言之就是刪除key1 key2.。。中的元素,如果沒有元素則阻塞,結束條件為                 要么時間超過了timeout;要么發現有新的元素進來brpop key1 [key2 ] timeout   移除并獲取列表中的最后一個元素,如果沒有會阻塞列表直到超時或發現可彈出                元素為止                同blpop,不同在于刪除元素的方向不一致brpoplpush source destination timeout  從列表中彈出一個值,將彈出的元素插入到另外一個列表中并返回                    它,如果沒有元素會阻塞列表知道等待超時或發現可彈出元素為止                    uplooking01:6379> brpoplpush season season1 100                    "spring"                    (7.59s)lindex key index        通過索引獲取列表中的元素                注意一個:                lindex key -1獲取的是最后一個元素linsert key before|after pivot value  在列表的元素前或后插入元素                    uplooking01:6379> lrange season 0 -1                    1) "winter"                    2) "autumn"                    3) "summer"                    uplooking01:6379> linsert season after summer spring                    (integer) 4                    uplooking01:6379> lrange season 0 -1                    1) "winter"                    2) "autumn"                    3) "summer"                    4) "spring"llen key            獲取列表長度,列表大小lpop key            移出并獲取列表的第一個元素lpush key value1 [value2]    將一個或多個值插入到列表頭部lpushx key value        將一個或多個值插入到已存在的列表頭部lrange key start stop      獲取列表指定返回內的元素                [start, stop]                如果要出去lrange中的所有的元素的話                lrange key 0 -1lrem key count value      移出列表元素                count > 0: 從頭往尾移除值為 value 的元素,1時,表示移除1個元素                count < 0: 從尾往頭移除值為 value 的元素,-2時,表示移除2個元素                count = 0: 移除所有值為 value 的元素。lset key index value      通過索引設置列表元素的值(list.set(i, value))                需要大家注意的是一個特殊的索引-1,表示最后一個元素ltrim key start stop      對一個列表進行修剪(trim),也就是說,讓列表只保留指定區間內的元素,                刪除其它元素                [start, stop]                uplooking01:6379> lrange season 0 -1                1) "winter"                2) "autumn"                3) "summer"                4) "spring"                uplooking01:6379> ltrim season 1 2                OK                uplooking01:6379> lrange season 0 -1                1) "autumn"                2) "summer"rpop key            移出并獲取列表最后一個元素rpoplpush source destination  移出列表的最后一個元素,并將該元素添加到另一列表并返回rpush key value1 [value2]    在列表中添加一個或多個值rpushx key value        為已存在的列表添加值

set(集合)

Redis的Set是string類型的無序集合。

    集合是通過哈希表實現的,所以添加,刪除,查找的復雜度都是O(1)。
sadd命令
    添加一個string元素到,key對應的set集合中,成功返回1,如果元素已經存在集合中返回0,key對應的set不存在返回錯誤。
sadd key member
實例
redis 127.0.0.1:6379> sadd redis.net.cn redis
(integer) 1
redis 127.0.0.1:6379> sadd redis.net.cn mongodb
(integer) 1
redis 127.0.0.1:6379> sadd redis.net.cn rabitmq
(integer) 1
redis 127.0.0.1:6379> sadd redis.net.cn rabitmq
(integer) 0
redis 127.0.0.1:6379> smembers redis.net.cn
1) "rabitmq"
2) "mongodb"
3) "redis"
  注意:以上實例中 rabitmq 添加了兩次,但根據集合內元素的唯一性,第二次插入的元素將被忽略。
 集合中最大的成員數為 232 - 1 (4294967295, 每個集合可存儲40多億個成員)。

常用操作命令如下:

sadd key member1 [member2]   向集合添加一個或多個成員scard key            獲取集合的成員數(size)sdiff key1 [key2]        返回給定所有集合的差集                集合A={1, 2, 3, 4, 5} 集合B={2, 3, 6, 8}                A∩B = {2, 3}                A∪B = {1, 2, 3, 4, 5, 6, 8}                A-B(差集) = {1, 4, 5, 6, 8}                      {1, 4, 5}√                uplooking01:6379> sdiff A B                1) "1"                2) "4"                3) "5"sdiffstore dest key1 [key2]   返回并保存給定集合差集保存到dest中                uplooking01:6379> sdiffstore tmp A B                (integer) 3                uplooking01:6379> smembers tmp                1) "1"                2) "4"                3) "5"sinter key1 [key2]       返回給定集合的交集                uplooking01:6379> sinter A B                1) "2"                2) "3"sinterstore dest key1 [key2]  返回并保存給定集合的交集到dest中sismember key member      判斷member元素是否是集合key的成員                uplooking01:6379> sismember A 3                (integer) 1                uplooking01:6379smembers key          返回集合中所有成員smove src dest member      將member元素從src移動到dest中spop key            移除并返回集合中的一個隨機元素srandmember key [count]     返回集合中一個或多個隨機數                隨機返回集合key中的count個元素,沒有count,返回1個                uplooking01:6379> srandmember A                "1"                uplooking01:6379> srandmember A 2                1) "3"                2) "4"srem key member1 [member2]   移除集合中一個或多個成員sunion key1 [key2]       返回所有給定集合的并集---就是數學中的并集的概念                uplooking01:6379> sunion A B                1) "1"                2) "2"                3) "3"                4) "4"                5) "5"                6) "6"                7) "8"sunionstore dest key1 [key2]  返回并保存給定集合的并集到destsscan key cursor [match pattern] [count count]   迭代集合中的元素

zset(有序集合)

   Redis zset和set一樣也是string類型元素的集合,且不允許重復的成員。不同的是每個元素都會關聯一個double類型的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。
   zset的成員是唯一的,但分數(score)卻可以重復。
   zadd命令 添加元素到集合,元素在集合中存在則更新對應score
   zadd key score member
實例
redis 127.0.0.1:6379> zadd redis.net.cn 0 redis
(integer) 1
redis 127.0.0.1:6379> zadd redis.net.cn 0 mongodb
(integer) 1
redis 127.0.0.1:6379> zadd redis.net.cn 0 rabitmq
(integer) 1
redis 127.0.0.1:6379> zadd redis.net.cn 0 rabitmq
(integer) 0
redis 127.0.0.1:6379> ZRANGEBYSCORE redis.net.cn 0 1000
1) "redis"
2) "mongodb"
3) "rabitmq"

常用操作命令如下:

zadd key score1 member1 [score2 member2]    想有序集合添加一個或多個成員,                        或是更新已經存在成員的分數                     uplooking01:6379> zadd website 0.01 www.uplooking.com                     (integer) 1                     uplooking01:6379> zadd website 0.05 www.baidu.com                     (integer) 1                     uplooking01:6379> zadd website 0.1 www.google.com                     (integer) 1                     uplooking01:6379> zadd website 1 www.taobao.com                     (integer) 1                     uplooking01:6379> zadd website 0.005 www.jd.com                     (integer) 1zcard key                獲取有序集合的成員數                    uplooking01:6379> zcard website                    (integer) 5zcount key min max           計算在有序集合中指定區間分數的成員數                    獲取分數區間[min, max]中元素                     uplooking01:6379> zcount website 0.01 0.1                     (integer) 3zincrby key increment member      有序集合中對指定成員的分數上增量incr                   uplooking01:6379> zincrby website 0.01 www.uplooking.com                   "0.02"  zinterstore dest nkeys key [key..]   計算給定的一個或多個有序集的交集并保存在新的有序集合dest中zlexcount key min max          在有序集合中計算指定字典區間內成員數量                    需要清楚的是                    可以使用-代表,得分最小的元素,使用+代表得分最大的元素                    zlexcount key - + 得到就是集合的size                    min===>[member1                    max===>[member2                    得到的元素個數就是在區間[member1, member2]內的元素個數                    redis> ZADD myzset 1 a 2 b 3 c 4 d 5 e 6 f 7 g                    (integer) 7                    redis> zrange myzset 0 -1                    1) "a"                    2) "b"                    3) "c"                    4) "d"                    5) "e"                    6) "f"                    7) "g"                    redis> ZLEXCOUNT myzset - +                    (integer) 7                    redis> ZLEXCOUNT myzset [c +                    (integer) 5                    redis> ZLEXCOUNT myzset - [c                    (integer) 3                    redis>   zrange key start stop [withscores]   通過索引區間返回有序集合成指定區間內的成員                    特殊的一個寫法zrange key 0 -1返回所有的元素zrangebylex key min max [limit offset count]  通過字典區間返回有序集合的成員zrangebyscore key min max [withscores] [limit] 通過分數返回有序集合指定區間內的成員zrank key member            返回有序集合中指定成員的索引zrem key member [member ...]      移除有序集合中的一個或多個成員                    返回1,刪除成功,返回0,沒有這個元素zremrangebylex key min max       移除有序集合中給定的字典區間的所有成員zremrangebyrank key start stop     移除key中給定的排名區間的所有成員                    排名就是索引zremrangebyscore key start stop     移除key中給定的分數區間的所有成員                    分數就是scorezrevrange key start stop [withscores]  返回有序key中指定區間內的成員,通過索引,分數從高到低                    和zrange key start stop反過來zrevrangebysocre key max min [withscores]  返回有序key中指定分數區間內的成員,通過索引,分數從高到低zrevrank key memeber          返回key中指定成員的排名,key成員按分數值遞減排序zscore key member            返回key中member的分數zunionstore dest numkeys key [key...]  計算給定的一個或多個有序集的并集,并存儲到新的dest中zscan key cursor [match pattern] [count count] 迭代有序集合中的元素(包括元素成員和元素分值)                        uplooking01:6379> zscan website 1                        1) "0"                        2) 1) "www.jd.com"                          2) "0.0050000000000000001"                          3) "www.uplooking.com"                          4) "0.02"                          5) "www.baidu.com"                          6) "0.050000000000000003"                          7) "www.taobao.com"                          8) "1"

Redis常見命令

keys *
    列舉出所有的key
type key
    獲取對應key的數據類型
select [0-15]
    切換到某一個數據庫中
rename oldKey newKey
    將oldKey重命名為newKey
終端中屬于密碼的兩種方式:
    第一種:
        連接的時候:redis-3.2.0]# src/redis-cli -h uplooking03 -a uplooking
    第二中:
        登陸之后再輸入密碼:
            auth uplooking(密碼)
停止redis服務的命令:
    src/redis-cli -h uplooking01 -p 6379 shutdown

1、鍵值相關命令
      keys * 取出當前所有的key
      exists name 查看redis是否有name這個key
      del name 刪除key name
      expire confirm 100 設置confirm這個key100秒過期
      ttl confirm 獲取confirm 這個key的有效時長
      select 0 選擇到0數據庫 redis默認的數據庫是0~15一共16個數據庫
      move confirm 1 將當前數據庫中的key移動到其他的數據庫中,
      persist confirm 移除confirm這個key的過期時間
      randomkey 隨機返回數據庫里面的一個key
      rename key2 key3 重命名key2 為key3
      type key2 返回key的數據類型
2、服務器相關命令
      ping PONG返回響應是否連接成功
      echo 在命令行打印一些內容
      select 0~15 編號的數據庫
      quit  /exit 退出客戶端
      dbsize 返回當前數據庫中所有key的數量
      info 返回redis的相關信息
      config get dir/* 實時傳儲收到的請求
      flushdb 刪除當前選擇數據庫中的所有key
      flushall 刪除所有數據庫中的數據庫


注:相關教程知識閱讀請移步到Redis頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
韩国精品久久久999| 日韩欧美成人精品| 国产日韩欧美一二三区| 日韩一区二区精品视频| 久久免费视频网站| 91精品视频在线免费观看| 国产精品影片在线观看| 亚洲视频电影图片偷拍一区| 九色精品免费永久在线| 中国人与牲禽动交精品| 色婷婷久久av| 日韩欧美在线中文字幕| 色综合久久88| 国产成人一区二| 久久亚洲精品中文字幕冲田杏梨| 91精品中国老女人| 亚洲国产一区二区三区在线观看| 亚洲国产精品悠悠久久琪琪| 久久99久久亚洲国产| 91av视频在线| 亚洲精品久久久一区二区三区| 国产一级揄自揄精品视频| 91免费看视频.| 亚洲天堂影视av| 97av视频在线| 欧美一区二区三区免费视| 亚洲爱爱爱爱爱| 国产精品久久久久久久app| 欧美精品性视频| 欧美裸体xxxx极品少妇软件| 亚洲色图35p| 在线播放日韩专区| 国产精品人成电影| 亚洲乱码一区av黑人高潮| 精品露脸国产偷人在视频| 国产亚洲视频在线观看| 日韩欧美国产骚| 精品国产一区二区三区久久狼5月| 少妇高潮 亚洲精品| 日韩男女性生活视频| 亚洲天堂av图片| 国产婷婷成人久久av免费高清| 国内揄拍国内精品| 秋霞午夜一区二区| 亚洲va欧美va在线观看| 日韩av免费在线| 亚洲色图美腿丝袜| 人体精品一二三区| 欧美激情精品久久久久久蜜臀| 91在线观看免费| 岛国av午夜精品| 国产午夜精品麻豆| 亚洲影院色在线观看免费| 日本精品久久久久久久| 一区二区三欧美| 亚洲一区二区久久久久久| 亚洲日韩中文字幕在线播放| 久久久久久久影院| 国产精品久久久久久久app| 97在线看福利| 成人免费网站在线观看| 97精品久久久中文字幕免费| 国产精品一二三视频| 亚洲一区二区三区视频播放| 亚洲色图综合久久| 亚洲新中文字幕| 国产综合福利在线| 日韩av影视综合网| 国产一区红桃视频| 性色av一区二区三区红粉影视| 97在线视频免费| 亚洲视频在线免费看| 国产精品女人久久久久久| 国产一区二区香蕉| 国产精品美腿一区在线看| 日韩精品极品毛片系列视频| 国产精品黄页免费高清在线观看| 狠狠躁夜夜躁久久躁别揉| 一级做a爰片久久毛片美女图片| 成人两性免费视频| 亚洲最新在线视频| 97成人精品区在线播放| 亚州国产精品久久久| 国产精品电影在线观看| 久久久久久一区二区三区| 国产精品视频yy9099| 成人在线视频网站| 亚洲网在线观看| 久久成人精品电影| 欧美xxxx18国产| 亚洲国产精品久久久久秋霞蜜臀| 国产在线拍揄自揄视频不卡99| 国产精品男人的天堂| 久久久精品国产亚洲| 最近2019年日本中文免费字幕| 伊人久久大香线蕉av一区二区| 日韩成人av网| 亚洲午夜av久久乱码| 亚洲第一精品久久忘忧草社区| 97婷婷涩涩精品一区| 成人激情视频在线| 北条麻妃一区二区三区中文字幕| 在线播放日韩专区| 97国产真实伦对白精彩视频8| 日韩视频在线观看免费| 欧美另类99xxxxx| 亚洲激情 国产| 欧美大片大片在线播放| 欧美理论片在线观看| 亚洲资源在线看| 亚洲欧美日韩中文在线制服| 精品偷拍一区二区三区在线看| 激情av一区二区| 欧美激情在线有限公司| 日本免费一区二区三区视频观看| 日韩一区二区三区在线播放| 九九视频直播综合网| 91九色国产社区在线观看| 国产精品羞羞答答| 清纯唯美亚洲综合| 1769国内精品视频在线播放| 在线电影欧美日韩一区二区私密| 亚洲精品久久7777777| 国产欧美一区二区三区久久| 亚洲第一在线视频| 精品国产一区二区三区久久久| 亚洲欧美综合图区| 欧美激情一区二区三区高清视频| 日韩在线一区二区三区免费视频| 亚洲一区二区在线| 国产成人精品在线视频| 欧美日产国产成人免费图片| 久久精品国产91精品亚洲| 2019中文字幕在线免费观看| 久久久综合免费视频| 国产精品扒开腿爽爽爽视频| 欧美性开放视频| 黑人巨大精品欧美一区免费视频| 深夜精品寂寞黄网站在线观看| 91午夜在线播放| 久久久精品视频在线观看| 在线播放日韩专区| 国自在线精品视频| 国产精品福利在线观看| 在线性视频日韩欧美| 国产精品1234| 国产美女久久精品香蕉69| 久久久国产一区二区三区| 精品一区二区三区四区| 欧美高清在线视频观看不卡| 97国产suv精品一区二区62| 日韩精品在线观看网站| 欧美激情中文字幕乱码免费| 精品亚洲一区二区三区在线观看| 国产日韩精品综合网站| 久久精品久久久久电影| 欧美小视频在线| 亚洲精品久久久久中文字幕欢迎你| 日韩中文字幕国产| 国产欧美在线播放| 成人h片在线播放免费网站| 热re99久久精品国产66热| 日韩电影免费观看在线| 亚洲无亚洲人成网站77777|