黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

php redis操作具體解釋

系統(tǒng) 2229 0
phpredis是redis的php的一個擴展,效率是相當高有鏈表排序功能,對創(chuàng)建內存級的模塊業(yè)務關系


非常實用;下面是redis官方提供的命令使用技巧:


下載地址例如以下:


https://github.com/owlient/phpredis(支持redis 2.0.4)


Redis::__construct構造函數(shù)
$redis = new Redis();


connect, open 鏈接redis服務
參數(shù)
host: string,服務地址
port: int,端口號
timeout: float,鏈接時長 (可選, 默覺得 0 ,不限鏈接時間)
注: 在redis.conf中也有時間,默覺得300


pconnect, popen 不會主動關閉的鏈接
參考上面


setOption 設置redis模式


getOption 查看redis設置的模式


ping 查看連接狀態(tài)


?


KEY相關操作


DEL


移除給定的一個或多個key。


假設key不存在,則忽略該命令。


時間復雜度:
? ? O(N),N為要移除的key的數(shù)量。
? ? 移除單個字符串類型的key,時間復雜度為O(1)。
? ? 移除單個列表、集合、有序集合或哈希表類型的key,時間復雜度為O(M),M為以上數(shù)據(jù)結構內的元素數(shù)量。
返回值:
? ? 被移除key的數(shù)量。


?








//DEL
# 情況1: 刪除單個key
$redis->set('myname','ikodota');
echo $redis->get('myname').'<br>'; # 返回:ikodota


$redis->del('myname');# 返回 TRUE(1)
var_dump($redis->get('myname')); # 返回 bool(false)


# 情況2: 刪除一個不存在的key
if(!$redis->exists('fake_key')) # 不存在
var_dump($redis->del('fake_key')); # 返回 int(0)


# 情況3: 同一時候刪除多個key
$array_mset=array('first_key'=>'first_val',
? ? ? ? ? 'second_key'=>'second_val',
? ? ? ? ? 'third_key'=>'third_val');
$redis->mset($array_mset); #用MSET一次儲存多個值
$array_mget=array('first_key','second_key','third_key');
var_dump($redis->mget($array_mget)); #一次返回多個值 //array(3) { [0]=> string(9) "first_val" [1]=> string(10) "second_val" [2]=> string(9) "third_val" }


$redis->del($array_mget); #同一時候刪除多個key
var_dump($redis->mget($array_mget)); #返回 array(3) { [0]=> bool(false) [1]=> bool(false) [2]=> bool(false) }










?


KEYS
KEYS pattern?
查找符合給定模式的key。


KEYS *命中數(shù)據(jù)庫中全部key。
KEYS h?llo命中hello, hallo and hxllo等。
KEYS h*llo命中hllo和heeeeello等。
KEYS h[ae]llo命中hello和hallo,但不命中hillo。


特殊符號用"\"隔開


時間復雜度:
? ? O(N),N為數(shù)據(jù)庫中key的數(shù)量。
返回值:
? ? 符合給定模式的key列表。


警告 :KEYS的速度很快,但在一個大的數(shù)據(jù)庫中使用它仍然可能造成性能問題,假設你須要從一個數(shù)據(jù)集中查找特定的key,你不妨用集合(Set)。


?








//KEYS
#$redis->FLUSHALL();
$array_mset_keys=array('one'=>'1',
? ? ? ? ? 'two'=>'2',
? ? ? ? ? 'three '=>'3',
? ? ? ? ? 'four'=>'4');
$redis->mset($array_mset_keys); #用MSET一次儲存多個值
var_dump($redis->keys('*o*')); //array(3) { [0]=> string(4) "four" [1]=> string(3) "two" [2]=> string(3) "one" }
var_dump($redis->keys('t??')); //array(1) { [0]=> string(3) "two" }
var_dump($redis->keys('t[w]*')); //array(1) { [0]=> string(3) "two" }
print_r($redis->keys('*')); //Array ( [0] => four [1] => three [2] => two [3] => one )










?


RANDOMKEY


從當前數(shù)據(jù)庫中隨機返回(不刪除)一個key。


時間復雜度:
? ? O(1)
返回值:
? ? 當數(shù)據(jù)庫不為空時,返回一個key。
? ? 當數(shù)據(jù)庫為空時,返回nil。


?








//RANDOMKEY
$redis->FLUSHALL();
# 情況1:數(shù)據(jù)庫不為空
$array_mset_randomkey=array('fruit'=>'apple',
? ? ? ? ? ? ? ? 'drink'=>'beer',
? ? ? ? ? ? ? ? 'food'=>'cookis');
$redis->mset($array_mset_randomkey);
echo $redis->randomkey();?
print_r($redis->keys('*')); # 查看數(shù)據(jù)庫內全部key,證明RANDOMKEY并不刪除key//Array ( [0] => food [1] => drink [2] => fruit )


# 情況2:數(shù)據(jù)庫為空
$redis->flushdb(); ?# 刪除當前數(shù)據(jù)庫全部key
var_dump($redis-> randomkey()); //bool(false)
?

TTL
TTL key

返回給定key的剩余生存時間(time to live)(以秒為單位)。

時間復雜度:
? ? O(1)
返回值:
? ? key的剩余生存時間(以秒為單位)。
? ? 當key不存在或沒有設置生存時間時,返回-1 。




//TTL
# 情況1:帶TTL的key
$redis->flushdb();
//$redis->set('name','ikodota'); # 設置一個key
$redis->expire('name',30); ?# 設置生存時間為30秒 //return (integer) 1
echo $redis->get('name'); //return ikodota
echo $redis->ttl('name'); //(integer) 25


//echo $redis->ttl('name'); ?# 30秒過去,name過期 //(integer) -1
var_dump($redis->get('name')); # 過期的key將被刪除 //return bool(false);


# 情況2:不帶TTL的key
$redis->set('site','wikipedia.org');//OK
var_dump($redis->ttl('site'));//int(-1)


# 情況3:不存在的key
$redis->EXISTS('not_exists_key');//int(0)
var_dump($redis->TTL('not_exists_key'));//int(-1)




EXISTS
EXISTS key


檢查給定key是否存在。


時間復雜度:
? ? O(1)
返回值:
? ? 若key存在,返回1,否則返回0。








//EXISTS
echo '<br>EXISTS<br>';
$redis->set('db',"redis"); //bool(true)?
var_dump($redis->exists('db')); ?# key存在 //bool(true)?
$redis->del('db'); ? # 刪除key //int(1)
var_dump($redis->exists('db')) ?# key不存在 //bool(false)








?


MOVE
MOVE key db


將當前數(shù)據(jù)庫(默覺得0)的key移動到給定的數(shù)據(jù)庫db其中。


假設當前數(shù)據(jù)庫(源數(shù)據(jù)庫)和給定數(shù)據(jù)庫(目標數(shù)據(jù)庫)有同樣名字的給定key,或者key不存在于當前數(shù)據(jù)庫,那么MOVE沒有不論什么效果。


因此,也能夠利用這一特性,將MOVE當作鎖(locking)原語。


時間復雜度:
? ? O(1)
返回值:
? ? 移動成功返回1,失敗則返回0。










//MOVE
echo '<br><br>MOVE<br>';
# 情況1: key存在于當前數(shù)據(jù)庫
$redis->SELECT(0); ?# redis默認使用數(shù)據(jù)庫0,為了清晰起見,這里再顯式指定一次。//OK
$redis->SET('song',"secret base - Zone"); //OK
var_dump ($redis->MOVE('song',1)); ?# 將song移動到數(shù)據(jù)庫1 //bool(true)


# 情況2:當key不存在的時候
$redis->SELECT(1);
var_dump ($redis->EXISTS('fake_key'));//bool(false);
var_dump($redis->MOVE('fake_key', 0)); ?# 試圖從數(shù)據(jù)庫1移動一個不存在的key到數(shù)據(jù)庫0,失敗) //bool(false)


$redis->SELECT(0); # 使用數(shù)據(jù)庫0
var_dump($redis->EXISTS('fake_key')); ?# 證實fake_key不存在 //bool(false)


# 情況3:當源數(shù)據(jù)庫和目標數(shù)據(jù)庫有同樣的key時


$redis->SELECT(0); ?# 使用數(shù)據(jù)庫0
$redis->SET('favorite_fruit',"banana");


$redis->SELECT(1); ?# 使用數(shù)據(jù)庫1
$redis->SET('favorite_fruit',"apple");


$redis->SELECT(0); ?# 使用數(shù)據(jù)庫0,并試圖將favorite_fruit移動到數(shù)據(jù)庫1
var_dump($redis->MOVE('favorite_fruit',1)); ?# 由于兩個數(shù)據(jù)庫有同樣的key,MOVE失敗 //return bool(false)
echo $redis->GET('favorite_fruit'); ?# 數(shù)據(jù)庫0的favorite_fruit沒變 //return banana


$redis->SELECT(1);
echo $redis->GET('favorite_fruit'); ? # 數(shù)據(jù)庫1的favorite_fruit也是 //return apple










?


RENAME?


RENAME key newkey


將key改名為newkey。


當key和newkey同樣或者key不存在時,返回一個錯誤。


當newkey已經存在時,RENAME命令將覆蓋舊值。


時間復雜度:
? ? O(1)
返回值:
? ? 改名成功時提示OK,失敗時候返回一個錯誤。










//RENAME
echo '<br><br>RENAME<br>';
# 情況1:key存在且newkey不存在
$redis->SET('message',"hello world");
var_dump($redis->RENAME('message','greeting')); ?//bool(true)
var_dump($redis->EXISTS('message')); ?# message不復存在 //bool(false)
var_dump($redis->EXISTS('greeting')); ? # greeting取而代之 //bool(true)


# 情況2:當key不存在時,返回錯誤 ,php返回false;
var_dump($redis->RENAME('fake_key','never_exists')); ?//bool(false)


# 情況3:newkey已存在時,RENAME會覆蓋舊newkey
$redis->SET('pc',"lenovo");
$redis->SET('personal_computer',"dell");?
var_dump($redis->RENAME('pc','personal_computer')); //bool(true)
var_dump($redis->GET('pc')); //(nil) ? bool(false)
var_dump($redis->GET('personal_computer')); ?# dell“沒有”了 //string(6) "lenovo"










?


RENAMENX?


RENAMENX key newkey


當且僅當newkey不存在時,將key改為newkey。


出錯的情況和RENAME一樣(key不存在時報錯)。


時間復雜度:
? ? O(1)
返回值:
? ? 改動成功時,返回1。
? ? 假設newkey已經存在,返回0。










//RENAMENX
echo '<br><br>RENAMENX<br>';


# 情況1:newkey不存在,成功
$redis->SET('player',"MPlyaer");
$redis->EXISTS('best_player'); //int(0)
var_dump($redis->RENAMENX('player','best_player')); // bool(true)?


# 情況2:newkey存在時,失敗
$redis->SET('animal',"bear");
$redis->SET('favorite_animal', "butterfly");


var_dump($redis->RENAMENX('animal', 'favorite_animal'));// bool(false)


var_dump($redis->get('animal')); //string(4) "bear"
var_dump($redis->get('favorite_animal')); //string(9) "butterfly"














TYPE
TYPE key


返回key所儲存的值的類型。


時間復雜度:
? ? O(1)
返回值:
? ? none(key不存在) int(0)
? ? string(字符串) int(1)
? ? list(列表) int(3)
? ? set(集合) int(2)
? ? zset(有序集) int(4)
? ? hash(哈希表) int(5)


?








//TYPE
$redis->flushALL();
echo '<br><br>TYPE<br>';


var_dump($redis->TYPE('fake_key')); //none /int(0)


$redis->SET('weather',"sunny"); ?# 構建一個字符串
var_dump($redis->TYPE('weather'));//string / int(1)


$redis->SADD('pat',"dog"); ?# 構建一個集合
var_dump($redis->TYPE('pat')); //set /int(2)


$redis->LPUSH('book_list',"programming in scala"); ?# 構建一個列表
var_dump($redis->TYPE('book_list'));//list / int(3)?


$redis->ZADD('pats',1,'cat'); ?# 構建一個zset (sorted set) // int(1)
$redis->ZADD('pats',2,'dog');
$redis->ZADD('pats',3,'pig');
var_dump($redis->zRange('pats',0,-1)); // array(3) { [0]=> string(3) "cat" [1]=> string(3) "dog" [2]=> string(3) "pig" }
var_dump($redis->TYPE('pats')); //zset / int(4)


$redis->HSET('website','google','www.g.cn'); ? # 一個新域
var_dump($redis->HGET('website','google')); //string(8) "www.g.cn"
var_dump($redis->TYPE('website')); //hash /int(5)










EXPIRE


EXPIRE key seconds


為給定key設置生存時間。


當key過期時,它會被自己主動刪除。


在Redis中,帶有生存時間的key被稱作“易失的”(volatile)。


?
在低于2.1.3版本號的Redis中,已存在的生存時間不可覆蓋。
從2.1.3版本號開始,key的生存時間能夠被更新,也能夠被PERSIST命令移除。(詳情參見 http://redis.io/topics/expire)。


?


時間復雜度:
? ? O(1)
返回值:
? ? 設置成功返回1。
? ? 當key不存在或者不能為key設置生存時間時(比方在低于2.1.3中你嘗試更新key的生存時間),返回0。










//EXPIRE
$redis->select(7);
//$redis->flushdb();


echo '<br><br>EXPIRE<br>';
$redis->SET('cache_page',"www.cnblogs.com/ikodota");
$redis->EXPIRE('cache_page', 30); ?# 設置30秒后過期
sleep(6);
echo $redis->TTL('cache_page').'<br>'; ? # 查看給定key的剩余生存時間 //(integer) 24


$redis->EXPIRE('cache_page', 3000); ?# 更新生存時間,3000秒
sleep(4);
echo $redis->TTL('cache_page').'<br>'; ? //(integer) 2996










?


?


EXPIREAT?
EXPIREAT key timestamp


EXPIREAT的作用和EXPIRE一樣,都用于為key設置生存時間。


不同在于EXPIREAT命令接受的時間參數(shù)是UNIX時間戳(unix timestamp)。


時間復雜度:
? ? O(1)
返回值:
? ? 假設生存時間設置成功,返回1。
? ? 當key不存在或沒辦法設置生存時間,返回0。


?






//EXPIREAT
echo '<br><br>EXPIREAT<br>';
$redis->SET('cache','www.google.com');
echo $redis->EXPIREAT('cache','1355292000'); # 這個key將在2012.12.12過期


echo ($redis->TTL('cache')); //return 124345085








?


OBJECT?
OBJECT subcommand [arguments [arguments]]


OBJECT命令同意從內部察看給定key的Redis對象。
它通經常使用在除錯(debugging)或者了解為了節(jié)省空間而對key使用特殊編碼的情況。
當將Redis用作緩存程序時,你也能夠通過OBJECT命令中的信息,決定key的驅趕策略(eviction policies)。


OBJECT命令有多個子命令:


? ? OBJECT REFCOUNT <key>返回給定key引用所儲存的值的次數(shù)。此命令主要用于除錯。
? ? OBJECT ENCODING <key>返回給定key鎖儲存的值所使用的內部表示(representation)。
? ? OBJECT IDLETIME <key>返回給定key自儲存以來的空轉時間(idle, 沒有被讀取也沒有被寫入),以秒為單位。


對象能夠以多種方式編碼:


? ? 字符串能夠被編碼為raw(一般字符串)或int(用字符串表示64位數(shù)字是為了節(jié)約空間)。
? ? 列表能夠被編碼為ziplist或linkedlist。ziplist是為節(jié)約大小較小的列表空間而作的特殊表示。
? ? 集合能夠被編碼為intset或者hashtable。intset是僅僅儲存數(shù)字的小集合的特殊表示。
? ? 哈希表能夠編碼為zipmap或者hashtable。zipmap是小哈希表的特殊表示。
? ? 有序集合能夠被編碼為ziplist或者skiplist格式。ziplist用于表示小的有序集合,而skiplist則用于表示不論什么大小的有序集合。


假如你做了什么讓Redis沒辦法再使用節(jié)省空間的編碼時(比方將一個僅僅有1個元素的集合擴展為一個有100萬個元素的集合),特殊編碼類型(specially encoded types)會自己主動轉換成通用類型(general type)。


時間復雜度:
? ? O(1)
返回值:
? ? REFCOUNT和IDLETIME返回數(shù)字。
? ? ENCODING返回對應的編碼類型。










//OBJECT
$redis->select(8);
echo '<br><br>OBJECT<br>';
$redis->SET('game',"WOW"); ?# 設置一個字符串
$redis->OBJECT('REFCOUNT','game'); ?# 僅僅有一個引用


//sleep(5);
echo $redis->OBJECT('IDLETIME','game'); ?# 等待一陣。。。然后查看空轉時間 //(integer) 10
//echo $redis->GET('game'); ?# 提取game, 讓它處于活躍(active)狀態(tài) ?//return WOW
//echo $redis->OBJECT('IDLETIME','game'); ?# 不再處于空轉 //(integer) 0
var_dump($redis->OBJECT('ENCODING','game')); ?# 字符串的編碼方式 //string(3) "raw"
$redis->SET('phone',15820123123); ?# 大的數(shù)字也被編碼為字符串
var_dump($redis->OBJECT('ENCODING','phone')); //string(3) "raw"
$redis->SET('age',20); ?# 短數(shù)字被編碼為int
var_dump($redis->OBJECT('ENCODING','age')); //string(3) "int"










?


PERSIST?
PERSIST key


?


移除給定key的生存時間。


?


時間復雜度:
? ? O(1)
返回值:
? ? 當生存時間移除成功時,返回1.
? ? 假設key不存在或key沒有設置生存時間,返回0。


?








//PERSIST
echo '<br><br>PERSIST<br>';
$redis->SET('time_to_say_goodbye',"886...");
$redis->EXPIRE('time_to_say_goodbye', 300);
sleep(3);
echo $redis->TTL('time_to_say_goodbye'); # (int) 297
echo '<br>';


$redis->PERSIST('time_to_say_goodbye'); ?# 移除生存時間
echo $redis->TTL('time_to_say_goodbye'); ?# 移除成功 ?//int(-1)












SORT


?


SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC | DESC] [ALPHA] [STORE destination]


排序,分頁等
參數(shù)


array(
‘by’ => ‘some_pattern_*’,
‘limit’ => array(0, 1),
‘get’ => ‘some_other_pattern_*’ or an array of patterns,
‘sort’ => ‘asc’ or ‘desc’,
‘alpha’ => TRUE,
‘store’ => ‘external-key’
)


返回或保存給定列表、集合、有序集合key中經過排序的元素。


排序默認以數(shù)字作為對象,值被解釋為雙精度浮點數(shù),然后進行比較。


?


一般SORT使用方法


最簡單的SORT用法是SORT key。


如果today_cost是一個保存數(shù)字的列表,SORT命令默認會返回該列表值的遞增(從小到大)排序結果。


?








# 將數(shù)據(jù)一一增加到列表中
$redis->LPUSH('today_cost', 30);
$redis->LPUSH('today_cost', 1.5);
$redis->LPUSH('today_cost', 10);
$redis->LPUSH('today_cost', 8);
# 排序
var_dump($redis->SORT('today_cost')); //array(4) { [0]=> string(3) "1.5" [1]=> string(1) "8" [2]=> string(2) "10" [3]=> string(2) "30" }










當數(shù)據(jù)集中保存的是字符串值時,你能夠用ALPHA修飾符(modifier)進行排序。








# 將數(shù)據(jù)一一增加到列表中
$redis->LPUSH('website', "www.reddit.com");
$redis->LPUSH('website', "www.slashdot.com");
$redis->LPUSH('website', "www.infoq.com");
# 默認排序
var_dump($redis->SORT('website'));//array(3) { [0]=> string(13) "www.infoq.com" [1]=> string(16) "www.slashdot.com" [2]=> string(14) "www.reddit.com" }


# 按字符排序 ALPHA=true
var_dump($redis->SORT('website', array('ALPHA'=>TRUE))); //array(3) { [0]=> string(13) "www.infoq.com" [1]=> string(14) "www.reddit.com" [2]=> string(16) "www.slashdot.com" }










假設你正確設置了!LC_COLLATE環(huán)境變量的話,Redis能識別UTF-8編碼。
排序之后返回的元素數(shù)量能夠通過LIMIT修飾符進行限制。
LIMIT修飾符接受兩個參數(shù):offset和count。
offset指定要跳過的元素數(shù)量,count指定跳過offset個指定的元素之后,要返回多少個對象。


下面樣例返回排序結果的前5個對象(offset為0表示沒有元素被跳過)。








# 將數(shù)據(jù)一一增加到列表中
$redis->LPUSH('rank', 30); //(integer) 1
$redis->LPUSH('rank', 56); //(integer) 2
$redis->LPUSH('rank', 42); //(integer) 3
$redis->LPUSH('rank', 22); //(integer) 4
$redis->LPUSH('rank', 0); ?//(integer) 5
$redis->LPUSH('rank', 11); //(integer) 6
$redis->LPUSH('rank', 32); //(integer) 7
$redis->LPUSH('rank', 67); //(integer) 8
$redis->LPUSH('rank', 50); //(integer) 9
$redis->LPUSH('rank', 44); //(integer) 10
$redis->LPUSH('rank', 55); //(integer) 11


# 排序
$redis_sort_option=array('LIMIT'=>array(0,5));
var_dump($redis->SORT('rank',$redis_sort_option)); ? # 返回排名前五的元素 // array(5) { [0]=> string(1) "0" [1]=> string(2) "11" [2]=> string(2) "22" [3]=> string(2) "30" [4]=> string(2) "32" }










修飾符能夠組合使用。下面樣例返回降序(從大到小)的前5個對象。






$redis_sort_option=array(
? ? ? ? ? ? 'LIMIT'=>array(0,5),
? ? ? ? ? ? 'SORT'=>'DESC'
? ? ? ? ? ? );
var_dump($redis->SORT('rank',$redis_sort_option)); //array(5) { [0]=> string(2) "67" [1]=> string(2) "56" [2]=> string(2) "55" [3]=> string(2) "50" [4]=> string(2) "44" }








?


使用外部key進行排序


有時候你會希望使用外部的key作為權重來比較元素,取代默認的對例如法。


如果如今實用戶(user)數(shù)據(jù)例如以下:


id    ?name    level
-------------------------------
1    admin    ?9999
2    huangz   10
59230  jack     ? ?3
222    hacker    ? 9999


id數(shù)據(jù)保存在key名為user_id的列表中。
name數(shù)據(jù)保存在key名為user_name_{id}的列表中
level數(shù)據(jù)保存在user_level_{id}的key中。








# 先將要使用的數(shù)據(jù)增加到數(shù)據(jù)庫中


# admin
$redis->LPUSH('user_id', 1);//(integer) 1
$redis->SET('user_name_1', 'admin');
$redis->SET('user_level_1',9999);


# huangz
$redis->LPUSH('user_id', 2);//(integer) 2
$redis->SET('user_name_2', 'huangz');
$redis->SET('user_level_2', 10);


# jack
$redis->LPUSH('user_id', 59230);//(integer) 3
$redis->SET('user_name_59230','jack');
$redis->SET('user_level_59230', 3);


# hacker
$redis->LPUSH('user_id', 222); ?//(integer) 4
$redis->SET('user_name_222', 'hacker');
$redis->SET('user_level_222', 9999);










?


假設希望按level從大到小排序user_id,能夠使用下面命令:








$redis_sort_option=array('BY'=>'user_level_*',
? ? ? ? ? ? 'SORT'=>'DESC'
? ? ? ? ? ? );
var_dump($redis->SORT('user_id',$redis_sort_option)); //array(4) { [0]=> string(3) "222" [1]=> string(1) "1" [2]=> string(1) "2" [3]=> string(5) "59230" }


#---------------------------
#1) "222" ? ?# hacker
#2) "1" ? ? ?# admin
#3) "2" ? ? ?# huangz
#4) "59230" ?# jack










可是有時候僅僅是返回相應的id沒有什么用,你可能更希望排序后返回id相應的username,這樣更友好一點,使用GET選項能夠做到這一點:


?








$redis_sort_option=array('BY'=>'user_level_*',
? ? ? ? ? ? 'SORT'=>'DESC',
? ? ? ? ? ? 'GET'=>'user_name_*'
? ? ? ? ? ? );
var_dump($redis->SORT('user_id', $redis_sort_option)); //array(4) { [0]=> string(6) "hacker" [1]=> string(5) "admin" [2]=> string(6) "huangz" [3]=> string(4) "jack" }


#1) "hacker"
#2) "admin"
#3) "huangz"
#4) "jack"










能夠多次地、有序地使用GET操作來獲取很多其它外部key。


比方你不但希望獲取username,還希望連用戶的password也一并列出,能夠使用下面命令:


?








# 先加入一些測試數(shù)據(jù)
$redis->SET('user_password_222', "hey,im in");
$redis->SET('user_password_1', "a_long_long_password");
$redis->SET('user_password_2', "nobodyknows");
$redis->SET('user_password_59230', "jack201022");


# 獲取name和password
$redis_sort_option=array('BY'=>'user_level_*',
? ? ? ? ? ? 'SORT'=>'DESC',
? ? ? ? ? ? 'GET'=>array('user_name_*','user_password_*')
? ? ? ? ? ? );
var_dump($redis->SORT('user_id',$redis_sort_option));//array(8) { [0]=> string(6) "hacker" [1]=> string(9) "hey,im in" [2]=> string(5) "admin" [3]=> string(20) "a_long_long_password" [4]=> string(6) "huangz" [5]=> string(11) "nobodyknows" [6]=> string(4) "jack" [7]=> string(10) "jack201022" }


#------------------------------------
#1) "hacker" ? ? ? # username
#2) "hey,im in" ? ?# password
#3) "jack"
#4) "jack201022"
#5) "huangz"
#6) "nobodyknows"
#7) "admin"
#8) "a_long_long_password"










# 注意GET操作是有序的,GET user_name_* GET user_password_* 和 GET user_password_* GET user_name_*返回的結果位置不同


?








# 獲取name和password 注意GET操作是有序的
$redis_sort_option=array('BY'=>'user_level_*',
? ? ? ? ? ? 'SORT'=>'DESC',
? ? ? ? ? ? 'GET'=>array('user_password_*','user_name_*')
? ? ? ? ? ? );
var_dump($redis->SORT('user_id',$redis_sort_option));// array(8) { [0]=> string(9) "hey,im in" [1]=> string(6) "hacker" [2]=> string(20) "a_long_long_password" [3]=> string(5) "admin" [4]=> string(11) "nobodyknows" [5]=> string(6) "huangz" [6]=> string(10) "jack201022" [7]=> string(4) "jack" }










GET另一個特殊的規(guī)則——"GET #",用于獲取被排序對象(我們這里的樣例是user_id)的當前元素。


比方你希望user_id按level排序,還要列出id、name和password,能夠使用下面命令:


?








$redis_sort_option=array('BY'=>'user_level_*',
? ? ? ? ? ? 'SORT'=>'DESC',
? ? ? ? ? ? 'GET'=>array('#','user_password_*','user_name_*')
? ? ? ? ? ? );
var_dump($redis->SORT('user_id',$redis_sort_option));//array(12) { [0]=> string(3) "222" [1]=> string(9) "hey,im in" [2]=> string(6) "hacker" [3]=> string(1) "1" [4]=> string(20) "a_long_long_password" [5]=> string(5) "admin" [6]=> string(1) "2" [7]=> string(11) "nobodyknows" [8]=> string(6) "huangz" [9]=> string(5) "59230" [10]=> string(10) "jack201022" [11]=> string(4) "jack" }


#--------------------------------------------------------------
#1) "222" ? ? ? ? ?# id
#2) "hacker" ? ? ? # name
#3) "hey,im in" ? ?# password
#4) "1"
#5) "admin"
#6) "a_long_long_password"
#7) "2"
#8) "huangz"
#9) "nobodyknows"
#10) "59230"
#11) "jack"
#12) "jack201022"










僅僅獲取對象而不排序


BY修飾符能夠將一個不存在的key當作權重,讓SORT跳過排序操作。


該方法用于你希望獲取外部對象而又不希望引起排序開銷時使用。


?








# 確保fake_key不存在
$redis->EXISTS('fake_key');//(integer) 0


# 以fake_key作BY參數(shù),不排序,僅僅GET name 和 GET password
$redis_sort_option=array('BY'=>'fake_key',
? ? ? ? ? ? 'SORT'=>'DESC',
? ? ? ? ? ? 'GET'=>array('#','user_name_*','user_password_*')
? ? ? ? ? ? );
var_dump($redis->SORT('user_id',$redis_sort_option));//array(12) { [0]=> string(3) "222" [1]=> string(6) "hacker" [2]=> string(9) "hey,im in" [3]=> string(5) "59230" [4]=> string(4) "jack" [5]=> string(10) "jack201022" [6]=> string(1) "2" [7]=> string(6) "huangz" [8]=> string(11) "nobodyknows" [9]=> string(1) "1" [10]=> string(5) "admin" [11]=> string(20) "a_long_long_password" }


#----------------------------------------------
#1) "222" ? ? ? ?# id
#2) "hacker" ? ? # user_name
#3) "hey,im in" ?# password
#4) "59230"
#5) "jack"
#6) "jack201022"
#7) "2"
#8) "huangz"
#9) "nobodyknows"
#10) "1"
#11) "admin"
#12) "a_long_long_password"










保存排序結果


默認情況下,SORT操作僅僅是簡單地返回排序結果,假設你希望保存排序結果,能夠給STORE選項指定一個key作為參數(shù),排序結果將以列表的形式被保存到這個key上。(若指定key已存在,則覆蓋。)








$redis->EXISTS('user_info_sorted_by_level'); ?# 確保指定key不存在 ? //(integer) 0
$redis_sort_option=array('BY'=>'user_level_*',
? ? ? ? ? ? 'GET'=>array('#','user_name_*','user_password_*'),
? ? ? ? ? ? 'STORE'=>'user_info_sorted_by_level'
? ? ? ? ? ? );


var_dump($redis->SORT('user_id',$redis_sort_option)); //int(12)
var_dump($redis->LRANGE('user_info_sorted_by_level', 0 ,11)); ?# 查看排序結果 ?//array(12) { [0]=> string(5) "59230" [1]=> string(4) "jack" [2]=> string(10) "jack201022" [3]=> string(1) "2" [4]=> string(6) "huangz" [5]=> string(11) "nobodyknows" [6]=> string(3) "222" [7]=> string(6) "hacker" [8]=> string(9) "hey,im in" [9]=> string(1) "1" [10]=> string(5) "admin" [11]=> string(20) "a_long_long_password" }


#-----------------------------------------------------------------
#1) "59230"
#2) "jack"
#3) "jack201022"
#4) "2"
#5) "huangz"
#6) "nobodyknows"
#7) "222"
#8) "hacker"
#9) "hey,im in"
#10) "1"
#11) "admin"
#12) "a_long_long_password"










一個有趣的使用方法是將SORT結果保存,用EXPIRE為結果集設置生存時間,這樣結果集就成了SORT操作的一個緩存。


這樣就不必頻繁地調用SORT操作了,僅僅有當結果集過期時,才須要再調用一次SORT操作。


有時候為了正確實現(xiàn)這一使用方法,你可能須要加鎖以避免多個client同一時候進行緩存重建(也就是多個client,同一時間進行SORT操作,并保存為結果集),詳細參見SETNX命令。


在GET和BY中使用哈希表


能夠使用哈希表特有的語法,在SORT命令中進行GET和BY操作。








# 如果如今我們的用戶表新增了一個serial項來為作為每一個用戶的序列號
# 序列號以哈希表的形式保存在serial哈希域內。


$redis_hash_testdata_array=array(1=>'23131283',
? ? ? ? ? ? ? ? 2=>'23810573',
? ? ? ? ? ? ? ? 222=>'502342349',
? ? ? ? ? ? ? ? 59230=>'2435829758'
? ? ? ? ? ? ? ? );


$redis->HMSET('serial',$redis_hash_testdata_array);


# 我們希望以比較serial中的大小來作為排序user_id的方式
$redis_sort_option=array('BY'=>'*->serial');
var_dump($redis->SORT('user_id', $redis_sort_option)); //array(4) { [0]=> string(3) "222" [1]=> string(5) "59230" [2]=> string(1) "2" [3]=> string(1) "1" }


#----------------------------------------
#1) "222"
#2) "59230"
#3) "2"
#4) "1"










?


符號"->"用于切割哈希表的keyword(key name)和索引域(hash field),格式為"key->field"。


除此之外,哈希表的BY和GET操作和上面介紹的其它數(shù)據(jù)結構(列表、集合、有序集合)沒有什么不同。


時間復雜度:
? ? O(N+M*log(M)),N為要排序的列表或集合內的元素數(shù)量,M為要返回的元素數(shù)量。
? ? 假設僅僅是使用SORT命令的GET選項獲取數(shù)據(jù)而沒有進行排序,時間復雜度O(N)。
返回值:
? ? 沒有使用STORE參數(shù),返回列表形式的排序結果。
? ? 使用STORE參數(shù),返回排序結果的元素數(shù)量。


?
字符串(String)


SET


SET key value


將字符串值value關聯(lián)到key。


假設key已經持有其它值,SET就覆寫舊值,無視類型。




時間復雜度:O(1)返回值:總是返回OK(TRUE),由于SET不可能失敗。








# 情況1:對字符串類型的key進行SET
$redis->SET('apple', 'www.apple.com');#OK ?//bool(true)
$redis->GET('apple');//"www.apple.com"


# 情況2:對非字符串類型的key進行SET
$redis->LPUSH('greet_list', "hello"); ?# 建立一個列表 #(integer) 1 //int(1)
$redis->TYPE('greet_list');#list //int(3)


$redis->SET('greet_list', "yooooooooooooooooo"); ? # 覆蓋列表類型 #OK //bool(true)
$redis->TYPE('greet_list');#string //int(1)










?
SETNX


SETNX key value


將key的值設為value,當且僅當key不存在。


若給定的key已經存在,則SETNX不做不論什么動作。


SETNX是”SET if Not eXists”(假設不存在,則SET)的簡寫。


時間復雜度:
? ? O(1)
返回值:
? ? 設置成功,返回1。
? ? 設置失敗,返回0。








//SETNX
echo '<br><br>SETNX<br>';
$redis->EXISTS('job'); ?# job不存在 //bool(false);
$redis->SETNX('job', "programmer"); ?# job設置成功 //bool(true)
$redis->SETNX('job', "code-farmer"); ?# job設置失敗 //bool(false)
echo $redis->GET('job'); ?# 沒有被覆蓋 //"programmer"








設計模式(Design pattern): 將SETNX用于加鎖(locking)


SETNX能夠用作加鎖原語(locking primitive)。比方說,要對keyword(key)foo加鎖,client能夠嘗試下面方式:


SETNX lock.foo <current Unix time + lock timeout + 1>


假設SETNX返回1,說明client已經獲得了鎖,key設置的unix時間則指定了鎖失效的時間。之后client能夠通過DEL lock.foo來釋放鎖。


假設SETNX返回0,說明key已經被其它client上鎖了。假設鎖是非堵塞(non blocking lock)的,我們能夠選擇返回調用,或者進入一個重試循環(huán),直到成功獲得鎖或重試超時(timeout)。


處理死鎖(deadlock)


上面的鎖算法有一個問題:假設由于client失敗、崩潰或其它原因導致沒有辦法釋放鎖的話,怎么辦?


這樣的狀況能夠通過檢測發(fā)現(xiàn)——由于上鎖的key保存的是unix時間戳,假如key值的時間戳小于當前的時間戳,表示鎖已經不再有效。


可是,當有多個client同一時候檢測一個鎖是否過期并嘗試釋放它的時候,我們不能簡單粗暴地刪除死鎖的key,再用SETNX上鎖,由于這時競爭條件(race condition)已經形成了:


? ? C1和C2讀取lock.foo并檢查時間戳,SETNX都返回0,由于它已經被C3鎖上了,但C3在上鎖之后就崩潰(crashed)了。
? ? C1向lock.foo發(fā)送DEL命令。
? ? C1向lock.foo發(fā)送SETNX并成功。
? ? C2向lock.foo發(fā)送DEL命令。
? ? C2向lock.foo發(fā)送SETNX并成功。
? ? 出錯:由于競爭條件的關系,C1和C2兩個都獲得了鎖。


幸好,下面算法能夠避免以上問題。來看看我們聰明的C4client怎么辦:


? ? C4向lock.foo發(fā)送SETNX命令。
? ? 由于崩潰掉的C3還鎖著lock.foo,所以Redis向C4返回0。
? ? C4向lock.foo發(fā)送GET命令,查看lock.foo的鎖是否過期。假設不,則休眠(sleep)一段時間,并在之后重試。
? ? 還有一方面,假設lock.foo內的unix時間戳比當前時間戳老,C4運行下面命令:


GETSET lock.foo <current Unix timestamp + lock timeout + 1>


? ? 由于GETSET的作用,C4能夠檢查看GETSET的返回值,確定lock.foo之前儲存的舊值仍是那個過期時間戳,假設是的話,那么C4獲得鎖。
? ? 假設其它client,比方C5,比C4更快地運行了GETSET操作并獲得鎖,那么C4的GETSET操作返回的就是一個未過期的時間戳(C5設置的時間戳)。C4僅僅好從第一步開始重試。


注意,即便C4的GETSET操作對key進行了改動,這對未來也沒什么影響。
(這里是不是有點問題?C4的確是能夠重試,但C5怎么辦?它的鎖的過期被C4改動了。——譯注)


? ? ?警告


? ? 為了讓這個加鎖算法更健壯,獲得鎖的client應該經常檢查過期時間以免鎖因諸如DEL等命令的運行而被意外解開,由于client失敗的情況很復雜,不不過崩潰這么簡單,還可能是client由于某些操作被堵塞了相當長時間,緊接著DEL命令被嘗試運行(但這時鎖卻在另外的client手上)。


?


SETEX
SETEX key seconds value


將值value關聯(lián)到key,并將key的生存時間設為seconds(以秒為單位)。


假設key 已經存在,SETEX命令將覆寫舊值。


這個命令類似于下面兩個命令:


$redis->SET('key', 'value');
$redis->EXPIRE('key','seconds'); ?# 設置生存時間?


不同之處是,SETEX是一個原子性(atomic)操作,關聯(lián)值和設置生存時間兩個動作會在同一時間內完畢,該命令在Redis用作緩存時,很有用。


時間復雜度:
? ? O(1)
返回值:
? ? 設置成功時返回OK。
? ? 當seconds參數(shù)不合法時,返回一個錯誤。










# 情況1:key不存在
$redis->SETEX('cache_user_id', 60,10086);//bool(true)
echo $redis->GET('cache_user_id'); ?# 值 //"10086"


sleep(4);
echo $redis->TTL('cache_user_id'); ?# 剩余生存時間 //int(56)


# 情況2:key已經存在,key被覆寫
$redis->SET('cd', "timeless"); //bool(true);
$redis->SETEX('cd', 3000,"goodbye my love"); //bool(true);
echo $redis->GET('cd');//"goodbye my love"










?


SETRANGE


SETRANGE key offset value


用value參數(shù)覆寫(Overwrite)給定key所儲存的字符串值,從偏移量offset開始。


不存在的key當作空白字符串處理。


SETRANGE命令會確保字符串足夠長以便將value設置在指定的偏移量上,假設給定key原來儲存的字符串長度比偏移量小(比方字符串僅僅有5個字符長,但你設置的offset是10),那么原字符和偏移量之間的空白將用零比特(zerobytes,"\x00")來填充。


注意你能使用的最大偏移量是2^29-1(536870911),由于Redis的字符串被限制在512兆(megabytes)內。假設你須要使用比這更大的空間,你得使用多個key。


時間復雜度:
? ? 對小(small)的字符串,平攤復雜度O(1)。(關于什么字符串是”小”的,請參考APPEND命令)
? ? 否則為O(M),M為value參數(shù)的長度。
返回值:
? ? 被SETRANGE改動之后,字符串的長度。


? ? ?警告


? ? ?當生成一個非常長的字符串時,Redis須要分配內存空 間,該操作有時候可能會造成server堵塞(block)。在2010年的Macbook Pro上,設置偏移量為536870911(512MB內存分配),耗費約300毫秒, 設置偏移量為134217728(128MB內存分配),耗費約80毫秒,設置偏移量33554432(32MB內存分配),耗費約30毫秒,設置偏移量 為8388608(8MB內存分配),耗費約8毫秒。 注意若首次內存分配成功之后,再對同一個key調用SETRANGE操作,無須再又一次內存。


模式


由于有了SETRANGE和GETRANGE命令,你能夠將Redis字符串用作具有O(1)隨機訪問時間的線性數(shù)組。這在非常多真有用例中都是非常高速且高效的儲存方式。








# 情況1:對非空字符串進行SETRANGE
$redis->SET('greeting', "hello world");
$redis->SETRANGE('greeting', 6, "Redis"); //int(11)
$redis->GET('greeting');//"hello Redis"


# 情況2:對空字符串/不存在的key進行SETRANGE
$redis->EXISTS('empty_string');//bool(false)
$redis->SETRANGE('empty_string', 5 ,"Redis!"); ?# 對不存在的key使用SETRANGE //int(11)
var_dump($redis->GET('empty_string')); ?# 空白處被"\x00"填充 ?#"\x00\x00\x00\x00\x00Redis!" ? //return string(11) "Redis!"










MSET?
MSET key value [key value ...]


同一時候設置一個或多個key-value對。


當發(fā)現(xiàn)同名的key存在時,MSET會用新值覆蓋舊值,假設你不希望覆蓋同名key,請使用MSETNX命令。


MSET是一個原子性(atomic)操作,全部給定key都在同一時間內被設置,某些給定key被更新而還有一些給定key沒有改變的情況,不可能發(fā)生。


時間復雜度:
? ? O(N),N為要設置的key數(shù)量。
返回值:
? ? 總是返回OK(由于MSET不可能失敗)










#MSET
echo '<br><br>MSET<br>';
$redis->select(0);
$redis->flushdb();
$array_mset=array('date'=>'2012.3.5',
? ? ? ? 'time'=>'9.09a.m.',
? ? ? ? 'weather'=>'sunny'
? ? ? ? );
$redis->MSET($array_mset); //bool(true)


var_dump($redis->KEYS('*')); ? # 確保指定的三個key-value對被插入 //array(3) { [0]=> string(4) "time" [1]=> string(7) "weather" [2]=> string(4) "date" }


# MSET覆蓋舊值的樣例 可是經過測試覆蓋不了
var_dump($redis->SET('google', "google.cn")); ? //bool(true)
var_dump($redis->MSET('google',"google.hk")); //bool(false)
echo $redis->GET('google'); //google.cn ?與redis手冊的演示樣例結果不符










?
MSETNX


MSETNX key value [key value ...]


同一時候設置一個或多個key-value對,當且僅當key不存在。


即使僅僅有一個key已存在,MSETNX也會拒絕全部傳入key的設置操作


MSETNX是原子性的,因此它能夠用作設置多個不同key表示不同字段(field)的唯一性邏輯對象(unique logic object),全部字段要么全被設置,要么全不被設置。


時間復雜度:
? ? O(N),N為要設置的key的數(shù)量。
返回值:
? ? 當全部key都成功設置,返回1。
? ? 假設全部key都設置失敗(最少有一個key已經存在),那么返回0。










# 情況1:對不存在的key進行MSETNX
$array_mset=array('rmdbs'=>'MySQL',
? ? ? ? 'nosql'=>'MongoDB',
? ? ? ? 'key-value-store'=>'redis'
? ? ? ? );
$redis->MSETNX($array_mset);//bool(true)




# 情況2:對已存在的key進行MSETNX
$array_mset=array('rmdbs'=>'Sqlite',
? ? ? ? 'language'=>'python'
? ? ? ? );
var_dump($redis->MSETNX($array_mset)); ?# rmdbs鍵已經存在,操作失敗 //bool(false)
var_dump($redis->EXISTS('language')); ?# 由于操作是原子性的,language沒有被設置 ?bool(false)


echo $redis->GET('rmdbs'); ?# rmdbs沒有被改動 //"MySQL"


$array_mset_keys=array( 'rmdbs', 'nosql', 'key-value-store');
print_r($redis->MGET($array_mset_keys)); //Array ( [0] => MySQL [1] => MongoDB [2] => redis )










?
APPEND


APPEND key value


假設key已經存在而且是一個字符串,APPEND命令將value追加到key原來的值之后。


假設key不存在,APPEND就簡單地將給定key設為value,就像運行SET key value一樣。


時間復雜度:
? ? 平攤復雜度O(1)
返回值:
? ? 追加value之后,key中字符串的長度。










# 情況1:對不存在的key運行APPEND


$redis->EXISTS('myphone'); ?# 確保myphone不存在 //bool(false)
$redis->APPEND('myphone',"nokia"); ?# 對不存在的key進行APPEND,等同于SET myphone "nokia" //int(5) # 字符長度


# 情況2:對字符串進行APPEND
$redis->APPEND('myphone', " - 1110");# 長度從5個字符添加到12個字符 //int(12)


echo $redis->GET('myphone'); ?# 查看整個字符串 //"nokia - 1110"








GET


GET key


返回key所關聯(lián)的字符串值。


假設key不存在則返回特殊值nil。


假如key儲存的值不是字符串類型,返回一個錯誤,由于GET僅僅能用于處理字符串值。


時間復雜度:
? ? O(1)
返回值:
? ? key的值。
? ? 假設key不存在,返回nil。


?


//GET
var_dump($redis->GET('fake_key')); #(nil) //return bool(false)
$redis->SET('animate', "anohana"); //return bool(true)
var_dump($redis->GET('animate')); //return string(7) "anohana"


?
MGET


MGET key [key ...]


返回全部(一個或多個)給定key的值。


假設某個指定key不存在,那么返回特殊值nil。因此,該命令永不失敗。


時間復雜度:
? ? O(1)
返回值:
? ? 一個包括全部給定key的值的列表。










//MGET
echo '<br><br>MGET<br>';
$redis_mget_data_array=array('name'=>'ikodota','blog'=>'cnblogs.com/ikodota');
$redis->MSET($redis_mget_data_array);#用MSET一次儲存多個值?


$redis_mget_key_array=array('name','blog');
var_dump($redis->MGET($redis_mget_key_array)); //array(2) { [0]=> string(7) "ikodota" [1]=> string(19) "cnblogs.com/ikodota" }


$redis->EXISTS('fake_key'); //bool(false)


$redis_mget_key_array=array('name','fake_key');
var_dump($redis->MGET($redis_mget_key_array)); ?# 當MGET中有不存在key的情況 ? //array(2) { [0]=> string(7) "ikodota" [1]=> bool(false) }








GETRANGE


GETRANGE key start end


返回key中字符串值的子字符串,字符串的截取范圍由start和end兩個偏移量決定(包含start和end在內)。


負數(shù)偏移量表示從字符串最后開始計數(shù),-1表示最后一個字符,-2表示倒數(shù)第二個,以此類推。


GETRANGE通過保證子字符串的值域(range)不超過實際字符串的值域來處理超出范圍的值域請求。


時間復雜度:
? ? O(N),N為要返回的字符串的長度。
? ? 復雜度終于由返回值長度決定,但由于從已有字符串中建立子字符串的操作很便宜(cheap),所以對于長度不大的字符串,該操作的復雜度也可看作O(1)。
返回值:
? ? 截取得出的子字符串。


? ? 注解:在<=2.0的版本號里,GETRANGE被叫作SUBSTR。










//GETRANGE
echo '<br><br>GETRANGE<br>';
$redis->SET('greeting', "hello, my friend");
echo $redis->GETRANGE('greeting', 0, 4).'<br>'; ?# 返回索引0-4的字符,包含4。 //"hello"
echo $redis->GETRANGE('greeting', -1 ,-5).'<br>'; ?# 不支持回繞操作 ?//""
echo $redis->GETRANGE('greeting', -3 ,-1).'<br>'; ?# 負數(shù)索引 //"end"
echo $redis->GETRANGE('greeting', 0, -1).'<br>'; ?# 從第一個到最后一個 //"hello, my friend"
echo $redis->GETRANGE('greeting', 0, 1008611).'<br>'; ?# 值域范圍不超過實際字符串,超過部分自己主動被符略 //"hello, my friend"










?
GETSET


GETSET key value


將給定key的值設為value,并返回key的舊值。


當key存在但不是字符串類型時,返回一個錯誤。


時間復雜度:
? ? O(1)
返回值:
? ? 返回給定key的舊值(old value)。
? ? 當key沒有舊值時,返回nil。








//GETSET
echo '<br><br>GETSET<br>';
var_dump($redis->EXISTS('mail'));//return bool(false);
var_dump($redis->GETSET('mail','xxx@google.com')); ?# 由于mail之前不存在,沒有舊值,返回nil ,#(nil) ? //bool(false)


var_dump($redis->GETSET('mail','xxx@yahoo.com')); ?# mail被更新,舊值被返回 //string(14) "xxx@google.com"








設計模式


GETSET能夠和INCR組合使用,實現(xiàn)一個有原子性(atomic)復位操作的計數(shù)器(counter)。


舉例來說,每次當某個事件發(fā)生時,進程可能對一個名為mycount的key調用INCR操作,通常我們還要在一個原子時間內同一時候完畢獲得計數(shù)器的值和將計數(shù)器值復位為0兩個操作。


能夠用命令GETSET mycounter 0來實現(xiàn)這一目標。








$redis->SELECT(2);
echo $redis->INCR('mycount').'<br>'; #(integer) 11


if($redis->GET('mycount')>19){
? ? echo $redis->GETSET('mycount', 0).'<br>'; ?# 一個原子內完畢GET mycount和SET mycount 0操作 #"11"?
}
echo $redis->GET('mycount'); #"0"










?
STRLEN


STRLEN key


返回key所儲存的字符串值的長度。


當key儲存的不是字符串值時,返回一個錯誤。


復雜度:
? ? O(1)
返回值:
? ? 字符串值的長度。
? ? 當 key不存在時,返回0。


$redis->SET('mykey', "Hello world");
echo $redis->STRLEN('mykey'); //int(11)
echo $redis->STRLEN('nonexisting'); # 不存在的key長度視為0 ?//int(0)


INCR


INCR key


將key中儲存的數(shù)字值增一。


假設key不存在,以0為key的初始值,然后運行INCR操作。


假設值包括錯誤的類型,或字符串類型的值不能表示為數(shù)字,那么返回一個錯誤。


本操作的值限制在64位(bit)有符號數(shù)字表示之內。


時間復雜度:
? ? O(1)
返回值:
? ? 運行INCR命令之后key的值。


? ? 注解:這是一個針對字符串的操作,由于Redis沒有專用的整數(shù)類型,所以key內儲存的字符串被解釋為十進制64位有符號整數(shù)來運行INCR操作。


$redis->SET('page_view', 20);
var_dump($redis->INCR('page_view')); //int(21)?
var_dump($redis->GET('page_view')); ? ?# 數(shù)字值在Redis中以字符串的形式保存 //string(2) "21




INCRBY


INCRBY key increment


將key所儲存的值加上增量increment。


假設key不存在,以0為key的初始值,然后運行INCRBY命令。


假設值包括錯誤的類型,或字符串類型的值不能表示為數(shù)字,那么返回一個錯誤。


本操作的值限制在64位(bit)有符號數(shù)字表示之內。


關于很多其它遞增(increment)/遞減(decrement)操作信息,參見INCR命令。


時間復雜度:
? ? O(1)
返回值:
? ? 加上increment之后,key的值。










//INCRBY
echo '<br><br>INCRBY<br>';
# 情況1:key存在且是數(shù)字值
$redis->SET('rank', 50); ?# 設置rank為50
$redis->INCRBY('rank', 20); ?# 給rank加上20
var_dump($redis->GET('rank')); #"70" ? //string(2) "70"


# 情況2:key不存在
$redis->EXISTS('counter'); //bool(false)
$redis->INCRBY('counter'); #int 30 ?//bool(false)
var_dump($redis->GET('counter')); #30 //經測試 與手冊上結果不一樣,不能直接從bool型轉為int型。 return bool(false)?


# 情況3:key不是數(shù)字值
$redis->SET('book', "long long ago...");
var_dump($redis->INCRBY('book', 200)); #(error) ERR value is not an integer or out of range ? // bool(false)










?
DECR


DECR key


將key中儲存的數(shù)字值減一。


假設key不存在,以0為key的初始值,然后運行DECR操作。


假設值包括錯誤的類型,或字符串類型的值不能表示為數(shù)字,那么返回一個錯誤。


本操作的值限制在64位(bit)有符號數(shù)字表示之內。


關于很多其它遞增(increment)/遞減(decrement)操作信息,參見INCR命令。


時間復雜度:
? ? O(1)
返回值:
? ? 運行DECR命令之后key的值。










//DECR
$redis->SELECT(3);
$redis->flushdb();
echo '<br><br>DECR<br>';
# 情況1:對存在的數(shù)字值key進行DECR
$redis->SET('failure_times', 10);
$redis->DECR('failure_times'); //int(9)
echo $redis->GET('failure_times').'<br>'; ?//string(1) "9"


# 情況2:對不存在的key值進行DECR
$redis->EXISTS('count'); #(integer) 0 //bool(false)
$redis->DECR('count'); ?//int(-1)?
echo $redis->GET('count').'<br>'; //string(2) "-1"


# 情況3:對存在但不是數(shù)值的key進行DECR
$redis->SET('company', 'YOUR_CODE_SUCKS.LLC');
var_dump($redis->DECR('company')); #(error) ERR value is not an integer or out of range ? //bool(false)
echo $redis->GET('company').'<br>'; //YOUR_CODE_SUCKS.LLC










?
DECRBY


DECRBY key decrement


將key所儲存的值減去減量decrement。


假設key不存在,以0為key的初始值,然后運行DECRBY操作。


假設值包括錯誤的類型,或字符串類型的值不能表示為數(shù)字,那么返回一個錯誤。


本操作的值限制在64位(bit)有符號數(shù)字表示之內。


關于很多其它遞增(increment)/遞減(decrement)操作信息,參見INCR命令。


時間復雜度:
? ? O(1)
返回值:
? ? 減去decrement之后,key的值。










# 情況1:對存在的數(shù)值key進行DECRBY
$redis->SET('count', 100);
var_dump($redis->DECRBY('count', 20)); //int(80)
var_dump($redis->GET('count')); ?//string(2) "80"


# 情況2:對不存在的key進行DECRBY
$redis->EXISTS('pages');#(integer) 0 ?//bool(false)
var_dump($redis->DECRBY('pages', 10)); ?//int(-10)
var_dump($redis->GET('pages')); //string(3) "-10"










?
SETBIT


SETBIT key offset value


對key所儲存的字符串值,設置或清除指定偏移量上的位(bit)。


位的設置或清除取決于value參數(shù),能夠是0也能夠是1。


當key不存在時,自己主動生成一個新的字符串值。


字符串會增長(grown)以確保它能夠將value保存在指定的偏移量上。當字符串值增長時,空白位置以0填充。


offset參數(shù)必須大于或等于0,小于2^32(bit映射被限制在512MB內)。


時間復雜度:
? ? O(1)
返回值:
? ? 指定偏移量原來儲存的位("0"或"1").


? ? 警告:對使用大的offset的SETBIT操作來說,內存分配可能造成Redisserver被堵塞。詳細參考SETRANGE命令,warning(警告)部分。










//SETBIT
echo '<br><br>SETBIT<br>';
$bit_val=67;
echo decbin($bit_val).'<br>'; //1000011
var_dump($redis->SETBIT('bit',1,1));//int(0) ?空位上都是0
var_dump($redis->SETBIT('bit',2,0));//int(0)
var_dump($redis->SETBIT('bit',3,0));//int(0)
var_dump($redis->SETBIT('bit',4,0));//int(0)
var_dump($redis->SETBIT('bit',5,0));//int(0)
var_dump($redis->SETBIT('bit',6,1));//int(0)
var_dump($redis->SETBIT('bit',7,1));//int(0)


var_dump($redis->GET('bit')); //string(1) "C" ,二進制為:1000011 ,ASCII:67


var_dump($redis->GETBIT('bit', 6 )); //int(1) ?取出第6位(從左到右)為“1”


var_dump($redis->SETBIT('bit',5,1));//int(0) ?把第5位的0改為1
var_dump($redis->SETBIT('bit',6,0));//int(1) ?把第6位的1改為0


var_dump($redis->GET('bit')); //string(1) "E ,二進制為:1000101,ASCII:69l














GETBIT


GETBIT key offset


對key所儲存的字符串值,獲取指定偏移量上的位(bit)。


當offset比字符串值的長度大,或者key不存在時,返回0。


時間復雜度:
? ? O(1)
返回值:
? ? 字符串值指定偏移量上的位(bit)。


#參見SETBIT的演示樣例


?
哈希表(Hash)
HSET


HSET key field value


將哈希表key中的域field的值設為value。


假設key不存在,一個新的哈希表被創(chuàng)建并進行HSET操作。


假設域field已經存在于哈希表中,舊值將被覆蓋。


時間復雜度:
? ? O(1)
返回值:
? ? 假設field是哈希表中的一個新建域,而且值設置成功,返回1。
? ? 假設哈希表中域field已經存在且舊值已被新值覆蓋,返回0。


?
HSETNX


HSETNX key field value


將哈希表key中的域field的值設置為value,當且僅當域field不存在。


若域field已經存在,該操作無效。


假設key不存在,一個新哈希表被創(chuàng)建并運行HSETNX命令。


時間復雜度:
? ? O(1)
返回值:
? ? 設置成功,返回1。
? ? 假設給定域已經存在且沒有操作被運行,返回0。


?
HMSET


HMSET key field value [field value ...]


同一時候將多個field - value(域-值)對設置到哈希表key中。


此命令會覆蓋哈希表中已存在的域。


假設key不存在,一個空哈希表被創(chuàng)建并運行HMSET操作。


時間復雜度:
? ? O(N),N為field - value對的數(shù)量。
返回值:
? ? 假設命令運行成功,返回OK。
? ? 當key不是哈希表(hash)類型時,返回一個錯誤。


?


?
HGET


HGET key field


返回哈希表key中給定域field的值。


時間復雜度:
? ? O(1)
返回值:
? ? 給定域的值。
? ? 當給定域不存在或是給定key不存在時,返回nil。


?
HMGET


HMGET key field [field ...]


返回哈希表key中,一個或多個給定域的值。


假設給定的域不存在于哈希表,那么返回一個nil值。


由于不存在的key被當作一個空哈希表來處理,所以對一個不存在的key進行HMGET操作將返回一個僅僅帶有nil值的表。


時間復雜度:
? ? O(N),N為給定域的數(shù)量。
返回值:
? ? 一個包括多個給定域的關聯(lián)值的表,表值的排列順序和給定域參數(shù)的請求順序一樣。


?


?
HGETALL


HGETALL key


返回哈希表key中,全部的域和值。


在返回值里,緊跟每一個域名(field name)之后是域的值(value),所以返回值的長度是哈希表大小的兩倍。


時間復雜度:
? ? O(N),N為哈希表的大小。
返回值:
? ? 以列表形式返回哈希表的域和域的值。 若key不存在,返回空列表。


?


?
HDEL


HDEL key field [field ...]


刪除哈希表key中的一個或多個指定域,不存在的域將被忽略。


時間復雜度:
? ? O(N),N為要刪除的域的數(shù)量。
返回值:
? ? 被成功移除的域的數(shù)量,不包含被忽略的域。


? ? 注解:在Redis2.4下面的版本號里,HDEL每次僅僅能刪除單個域,假設你須要在一個原子時間內刪除多個域,請將命令包括在MULTI/ EXEC塊內。


?
HLEN


HLEN key


返回哈希表key中域的數(shù)量。


時間復雜度:
? ? O(1)
返回值:
? ? 哈希表中域的數(shù)量。
? ? 當key不存在時,返回0。


?
HEXISTS


HEXISTS key field


查看哈希表key中,給定域field是否存在。


時間復雜度:
? ? O(1)
返回值:
? ? 假設哈希表含有給定域,返回1。
? ? 假設哈希表不含有給定域,或key不存在,返回0。


?
HINCRBY


HINCRBY key field increment


為哈希表key中的域field的值加上增量increment。


增量也能夠為負數(shù),相當于對給定域進行減法操作。


假設key不存在,一個新的哈希表被創(chuàng)建并運行HINCRBY命令。


假設域field不存在,那么在運行命令前,域的值被初始化為0。


對一個儲存字符串值的域field運行HINCRBY命令將造成一個錯誤。


本操作的值限制在64位(bit)有符號數(shù)字表示之內。


時間復雜度:
? ? O(1)
返回值:
? ? 運行HINCRBY命令之后,哈希表key中域field的值。


?
HKEYS


HKEYS key


返回哈希表key中的全部域。


時間復雜度:
? ? O(N),N為哈希表的大小。
返回值:
? ? 一個包括哈希表中全部域的表。
? ? 當key不存在時,返回一個空表。


?
HVALS


HVALS key


返回哈希表key中的全部值。


時間復雜度:
? ? O(N),N為哈希表的大小。
返回值:
? ? 一個包括哈希表中全部值的表。
? ? 當key不存在時,返回一個空表。


?
表(List)


頭元素和尾元素


頭元素指的是列表左端/前端第一個元素,尾元素指的是列表右端/后端第一個元素。


舉個樣例,列表list包括三個元素:x, y, z,當中x是頭元素,而z則是尾元素。


空列表


指不包括不論什么元素的列表,Redis將不存在的key也視為空列表。


?
LPUSH


LPUSH key value [value ...]


將一個或多個值value插入到列表key的表頭。


假設有多個value值,那么各個value值按從左到右的順序依次插入到表頭:比方對一個空列表(mylist)運行LPUSH mylist a b c,則結果列表為c b a,等同于運行運行命令LPUSH mylist a、LPUSH mylist b、LPUSH mylist c。


假設key不存在,一個空列表會被創(chuàng)建并運行LPUSH操作。


當key存在但不是列表類型時,返回一個錯誤。


時間復雜度:
? ? O(1)
返回值:
? ? 運行LPUSH命令后,列表的長度。


?


? ? 注解:在Redis 2.4版本號曾經的LPUSH命令,都僅僅接受單個value值。


?
LPUSHX


LPUSHX key value


將值value插入到列表key的表頭,當且僅當key存在而且是一個列表。


和LPUSH命令相反,當key不存在時,LPUSHX命令什么也不做。


時間復雜度:
? ? O(1)
返回值:
? ? LPUSHX命令運行之后,表的長度。


?
RPUSH


RPUSH key value [value ...]


將一個或多個值value插入到列表key的表尾。


假設有多個value值,那么各個value值按從左到右的順序依次插入到表尾:比方對一個空列表(mylist)運行RPUSH mylist a b c,則結果列表為a b c,等同于運行命令RPUSHmylist a、RPUSH mylist b、RPUSH mylist c。


假設key不存在,一個空列表會被創(chuàng)建并運行RPUSH操作。


當key存在但不是列表類型時,返回一個錯誤。


時間復雜度:
? ? O(1)
返回值:
? ? 運行RPUSH操作后,表的長度。


? ? 注解:在Redis 2.4版本號曾經的RPUSH命令,都僅僅接受單個value值。


?
RPUSHX


RPUSHX key value


將值value插入到列表key的表尾,當且僅當key存在而且是一個列表。


和RPUSH命令相反,當key不存在時,RPUSHX命令什么也不做。


時間復雜度:
? ? O(1)
返回值:
? ? RPUSHX命令運行之后,表的長度。


?
LPOP


LPOP key


移除并返回列表key的頭元素。


時間復雜度:
? ? O(1)
返回值:
? ? 列表的頭元素。
? ? 當key不存在時,返回nil。


?
RPOP


RPOP key


移除并返回列表key的尾元素。


時間復雜度:
? ? O(1)
返回值:
? ? 列表的尾元素。
? ? 當key不存在時,返回nil。


?
BLPOP


BLPOP key [key ...] timeout


BLPOP是列表的堵塞式(blocking)彈出原語。


它是LPOP命令的堵塞版本號,當給定列表內沒有不論什么元素可供彈出的時候,連接將被BLPOP命令堵塞,直到等待超時或發(fā)現(xiàn)可彈出元素為止。


當給定多個key參數(shù)時,按參數(shù)key的先后順序依次檢查各個列表,彈出第一個非空列表的頭元素。


非堵塞行為


當BLPOP被調用時,假設給定key內至少有一個非空列表,那么彈出遇到的第一個非空列表的頭元素,并和被彈出元素所屬的列表的名字一起,組成結果返回給調用者。


當存在多個給定key時,BLPOP按給定key參數(shù)排列的先后順序,依次檢查各個列表。


如果如今有job、 command和request三個列表,當中job不存在,command和request都持有非空列表。考慮下面命令:


BLPOP job command request 0


BLPOP保證返回的元素來自command,由于它是按”查找job -> 查找command -> 查找request“這種順序,第一個找到的非空列表。


?


?


堵塞行為


假設全部給定key都不存在或包括空列表,那么BLPOP命令將堵塞連接,直到等待超時,或有還有一個client對給定key的隨意一個運行LPUSH或RPUSH命令為止。


超時參數(shù)timeout接受一個以秒為單位的數(shù)字作為值。超時參數(shù)設為0表示堵塞時間能夠無限期延長(block indefinitely) 。


?


?


同樣的key被多個client同一時候堵塞
同樣的key能夠被多個client同一時候堵塞。
不同的client被放進一個隊列中,按”先堵塞先服務”(first-BLPOP,first-served)的順序為key運行BLPOP命令。


在MULTI/EXEC事務中的BLPOP


BLPOP能夠用于流水線(pipline,批量地發(fā)送多個命令并讀入多個回復),但把它用在MULTI/EXEC塊其中沒有意義。由于這要求整個server被堵塞以保證塊運行時的原子性,該行為阻止了其它client運行LPUSH或RPUSH命令。


因此,一個被包裹在MULTI/EXEC塊內的BLPOP命令,行為表現(xiàn)得就像LPOP一樣,對空列表返回nil,對非空列表彈出列表元素,不進行不論什么堵塞操作。


?


?


時間復雜度:O(1)返回值:
假設列表為空,返回一個nil。
反之,返回一個含有兩個元素的列表,第一個元素是被彈出元素所屬的key,第二個元素是被彈出元素的值。


?


?
BRPOP


BRPOP key [key ...] timeout


BRPOP是列表的堵塞式(blocking)彈出原語。


它是RPOP命令的堵塞版本號,當給定列表內沒有不論什么元素可供彈出的時候,連接將被BRPOP命令堵塞,直到等待超時或發(fā)現(xiàn)可彈出元素為止。


當給定多個key參數(shù)時,按參數(shù)key的先后順序依次檢查各個列表,彈出第一個非空列表的尾部元素。


關于堵塞操作的很多其它信息,請查看BLPOP命令,BRPOP除了彈出元素的位置和BLPOP不同之外,其它表現(xiàn)一致。


時間復雜度:
? ? O(1)
返回值:
? ? 假如在指定時間內沒有不論什么元素被彈出,則返回一個nil和等待時長。
? ? 反之,返回一個含有兩個元素的列表,第一個元素是被彈出元素所屬的key,第二個元素是被彈出元素的值。


?
LLEN


LLEN key


返回列表key的長度。


假設key不存在,則key被解釋為一個空列表,返回0.


假設key不是列表類型,返回一個錯誤。


時間復雜度:
? ? O(1)
返回值:
? ? 列表key的長度。


?
LRANGE


LRANGE key start stop


返回列表key中指定區(qū)間內的元素,區(qū)間以偏移量start和stop指定。


下標(index)參數(shù)start和stop都以0為底,也就是說,以0表示列表的第一個元素,以1表示列表的第二個元素,以此類推。


你也能夠使用負數(shù)下標,以-1表示列表的最后一個元素,-2表示列表的倒數(shù)第二個元素,以此類推。


注意LRANGE命令和編程語言區(qū)間函數(shù)的差別


假如你有一個包括一百個元素的列表,對該列表運行LRANGE list 0 10,結果是一個包括11個元素的列表,這表明stop下標也在LRANGE命令的取值范圍之內(閉區(qū)間),這和某些語言的區(qū)間函數(shù)可能不一致,比方Ruby的Range.new、Array#slice和Python的range()函數(shù)。


超出范圍的下標


超出范圍的下標值不會引起錯誤。


假設start下標比列表的最大下標end(LLEN list減去1)還要大,或者start > stop,LRANGE返回一個空列表。


假設stop下標比end下標還要大,Redis將stop的值設置為end。


時間復雜度:
? ? O(S+N),S為偏移量start,N為指定區(qū)間內元素的數(shù)量。
返回值:
? ? 一個列表,包括指定區(qū)間內的元素。


?
LREM


LREM key count value


依據(jù)參數(shù)count的值,移除列表中與參數(shù)value相等的元素。


count的值能夠是下面幾種:


? ? ? ? count > 0: 從表頭開始向表尾搜索,移除與value相等的元素,數(shù)量為count。
? ? ? ? count < 0: 從表尾開始向表頭搜索,移除與value相等的元素,數(shù)量為count的絕對值。
? ? ? ? count = 0: 移除表中全部與value相等的值。


時間復雜度:
? ? O(N),N為列表的長度。
返回值:
? ? 被移除元素的數(shù)量。
? ? 由于不存在的key被視作空表(empty list),所以當key不存在時,LREM命令總是返回0。


?
LSET


LSET key index value


將列表key下標為index的元素的值甚至為value。


很多其它信息請參考LINDEX操作。


當index參數(shù)超出范圍,或對一個空列表(key不存在)進行LSET時,返回一個錯誤。


時間復雜度:
? ? 對頭元素或尾元素進行LSET操作,復雜度為O(1)。
? ? 其它情況下,為O(N),N為列表的長度。
返回值:
? ? 操作成功返回ok,否則返回錯誤信息


?
LTRIM


LTRIM key start stop


對一個列表進行修剪(trim),就是說,讓列表僅僅保留指定區(qū)間內的元素,不在指定區(qū)間之內的元素都將被刪除。


舉個樣例,運行命令LTRIM list 0 2,表示僅僅保留列表list的前三個元素,其余元素所有刪除。


下標(index)參數(shù)start和stop都以0為底,也就是說,以0表示列表的第一個元素,以1表示列表的第二個元素,以此類推。


你也能夠使用負數(shù)下標,以-1表示列表的最后一個元素,-2表示列表的倒數(shù)第二個元素,以此類推。


當key不是列表類型時,返回一個錯誤。


LTRIM命令通常和LPUSH命令或RPUSH命令配合使用,舉個樣例:


?


?


這個樣例模擬了一個日志程序,每次將最新日志newest_log放到log列表中,而且僅僅保留最新的100項。注意當這樣使用LTRIM命令時,時間復雜度是O(1),由于平均情況下,每次僅僅有一個元素被移除。


注意LTRIM命令和編程語言區(qū)間函數(shù)的差別


假如你有一個包括一百個元素的列表list,對該列表運行LTRIM list 0 10,結果是一個包括11個元素的列表,這表明stop下標也在LTRIM命令的取值范圍之內(閉區(qū)間),這和某些語言的區(qū)間函數(shù)可能不一致,比方Ruby的Range.new、Array#slice和Python的range()函數(shù)。


超出范圍的下標


超出范圍的下標值不會引起錯誤。


假設start下標比列表的最大下標end(LLEN list減去1)還要大,或者start > stop,LTRIM返回一個空列表(由于LTRIM已經將整個列表清空)。


假設stop下標比end下標還要大,Redis將stop的值設置為end。


時間復雜度:
? ? O(N),N為被移除的元素的數(shù)量。
返回值:
? ? 命令運行成功時,返回ok。


?


?
LINDEX


LINDEX key index


返回列表key中,下標為index的元素。


下標(index)參數(shù)start和stop都以0為底,也就是說,以0表示列表的第一個元素,以1表示列表的第二個元素,以此類推。


你也能夠使用負數(shù)下標,以-1表示列表的最后一個元素,-2表示列表的倒數(shù)第二個元素,以此類推。


假設key不是列表類型,返回一個錯誤。


時間復雜度:
? ? O(N),N為到達下標index過程中經過的元素數(shù)量。
? ? 因此,對列表的頭元素和尾元素運行LINDEX命令,復雜度為O(1)。
返回值:
? ? 列表中下標為index的元素。
? ? 假設index參數(shù)的值不在列表的區(qū)間范圍內(out of range),返回nil。


?
LINSERT


LINSERT key BEFORE|AFTER pivot value


將值value插入到列表key其中,位于值pivot之前或之后。


當pivot不存在于列表key時,不運行不論什么操作。


當key不存在時,key被視為空列表,不運行不論什么操作。


假設key不是列表類型,返回一個錯誤。


時間復雜度:
? ? O(N),N為尋找pivot過程中經過的元素數(shù)量。
返回值:
? ? 假設命令運行成功,返回插入操作完畢之后,列表的長度。
? ? 假設沒有找到pivot,返回-1。
? ? 假設key不存在或為空列表,返回0。


?


?
RPOPLPUSH


RPOPLPUSH source destination


命令RPOPLPUSH在一個原子時間內,運行下面兩個動作:


? ? ? ? 將列表source中的最后一個元素(尾元素)彈出,并返回給client。
? ? ? ? 將source彈出的元素插入到列表destination,作為destination列表的的頭元素。


舉個樣例,你有兩個列表source和destination,source列表有元素a, b, c,destination列表有元素x, y, z,運行RPOPLPUSH source destination之后,source列表包括元素a, b,destination列表包括元素c, x, y, z ,而且元素c被返回。


假設source不存在,值nil被返回,而且不運行其它動作。


假設source和destination同樣,則列表中的表尾元素被移動到表頭,并返回該元素,能夠把這樣的特殊情況視作列表的旋轉(rotation)操作。


時間復雜度:
? ? O(1)
返回值:
? ? 被彈出的元素。




?


設計模式: 一個安全的隊列


Redis的列表常常被用作隊列(queue),用于在不同程序之間有序地交換消息(message)。一個程序(稱之為生產者,producer)通過LPUSH命令將消息放入隊列中,而還有一個程序(稱之為消費者,consumer)通過RPOP命令取出隊列中等待時間最長的消息。


不幸的是,在這個過程中,一個消費者可能在獲得一個消息之后崩潰,而未運行完畢的消息也因此丟失。


使用RPOPLPUSH命令能夠解決問題,由于它在返回一個消息之余,還將該消息加入到還有一個列表其中,另外的這個列表能夠用作消息的備份表:假如一切正常,當消費者完畢該消息的處理之后,能夠用LREM命令將該消息從備份表刪除。


還有一方面,助手(helper)程序能夠通過監(jiān)視備份表,將超過一定處理時限的消息又一次放入隊列中去(負責處理該消息的消費者可能已經崩潰),這樣就不會丟失不論什么消息了。


?
BRPOPLPUSH


BRPOPLPUSH source destination timeout


BRPOPLPUSH是RPOPLPUSH的堵塞版本號,當給定列表source不為空時,BRPOPLPUSH的表現(xiàn)和RPOPLPUSH一樣。


當列表source為空時,BRPOPLPUSH命令將堵塞連接,直到等待超時,或有還有一個client對source運行LPUSH或RPUSH命令為止。


超時參數(shù)timeout接受一個以秒為單位的數(shù)字作為值。超時參數(shù)設為0表示堵塞時間能夠無限期延長(block indefinitely) 。


很多其它相關信息,請參考RPOPLPUSH命令。


時間復雜度:
? ? O(1)
返回值:
? ? 假如在指定時間內沒有不論什么元素被彈出,則返回一個nil和等待時長。
? ? 反之,返回一個含有兩個元素的列表,第一個元素是被彈出元素的值,第二個元素是等待時長。


?


?
集合(Set)


?附錄,經常使用集合運算:


? ? ? ?A = {'a', 'b', 'c'}
? ? B = {'a', 'e', 'i', 'o', 'u'}


? ? inter(x, y): 交集,在集合x和集合y中都存在的元素。
? ? inter(A, B) = {'a'}


? ? union(x, y): 并集,在集合x中或集合y中的元素,假設一個元素在x和y中都出現(xiàn),那僅僅記錄一次就可以。
? ? union(A,B) = {'a', 'b', 'c', 'e', 'i', 'o', 'u'}


? ? diff(x, y): 差集,在集合x中而不在集合y中的元素。
? ? diff(A,B) = {'b', 'c'}


? ? card(x): 基數(shù),一個集合中元素的數(shù)量。
? ? card(A) = 3


? ? 空集: 基數(shù)為0的集合。


?
SADD


SADD key member [member ...]


將一個或多個member元素增加到集合key其中,已經存在于集合的member元素將被忽略。


假如key不存在,則創(chuàng)建一個僅僅包括member元素作成員的集合。


當key不是集合類型時,返回一個錯誤。


時間復雜度:
? ? O(N),N是被加入的元素的數(shù)量。
返回值:
? ? 被加入到集合中的新元素的數(shù)量,不包含被忽略的元素。


? ? 注解:在Redis2.4版本號曾經,SADD僅僅接受單個member值。


?


?
SREM


SREM key member [member ...]


移除集合key中的一個或多個member元素,不存在的member元素會被忽略。


當key不是集合類型,返回一個錯誤。


時間復雜度:
? ? O(N),N為給定member元素的數(shù)量。
返回值:
? ? 被成功移除的元素的數(shù)量,不包含被忽略的元素。


? ? 注解:在Redis2.4版本號曾經,SREM僅僅接受單個member值。


?


?
SMEMBERS


SMEMBERS key


返回集合key中的全部成員。


時間復雜度:
? ? O(N),N為集合的基數(shù)。
返回值:
? ? 集合中的全部成員。


?


?
SISMEMBER


SISMEMBER key member


推斷member元素是否是集合key的成員。


時間復雜度:
? ? O(1)
返回值:
? ? 假設member元素是集合的成員,返回1。
? ? 假設member元素不是集合的成員,或key不存在,返回0。


?


?
SCARD


SCARD key


返回集合key的基數(shù)(集合中元素的數(shù)量)。


時間復雜度:
? ? O(1)
返回值:
? ? 集合的基數(shù)。
? ? 當key不存在時,返回0。


?


?
SMOVE


SMOVE source destination member


將member元素從source集合移動到destination集合。


SMOVE是原子性操作。


假設source集合不存在或不包括指定的member元素,則SMOVE命令不運行不論什么操作,僅返回0。否則,member元素從source集合中被移除,并加入到destination集合中去。


當destination集合已經包括member元素時,SMOVE命令僅僅是簡單地將source集合中的member元素刪除。


當source或destination不是集合類型時,返回一個錯誤。


時間復雜度:
? ? O(1)
返回值:
? ? 假設member元素被成功移除,返回1。
? ? 假設member元素不是source集合的成員,而且沒有不論什么操作對destination集合運行,那么返回0。


?


?
SPOP


SPOP key


移除并返回集合中的一個隨機元素。


時間復雜度:
? ? O(1)
返回值:
? ? 被移除的隨機元素。
? ? 當key不存在或key是空集時,返回nil。


?


?


? ? 也能夠參考:假設僅僅想獲取一個隨機元素,但不想該元素從集合中被移除的話,能夠使用SRANDMEMBER命令。


?
SRANDMEMBER


SRANDMEMBER key


返回集合中的一個隨機元素。


該操作和SPOP相似,但SPOP將隨機元素從集合中移除并返回,而SRANDMEMBER則只返回隨機元素,而不正確集合進行不論什么修改。


時間復雜度:
? ? O(1)
返回值:
? ? 被選中的隨機元素。 當key不存在或key是空集時,返回nil。


?


?
SINTER


SINTER key [key ...]


返回一個集合的所有成員,該集合是所有給定集合的交集。


不存在的key被視為空集。


當給定集合其中有一個空集時,結果也為空集(依據(jù)集合運算定律)。


時間復雜度:
? ? O(N * M),N為給定集合其中基數(shù)最小的集合,M為給定集合的個數(shù)。
返回值:
? ? 交集成員的列表。


?


?
SINTERSTORE


SINTERSTORE destination key [key ...]


此命令等同于SINTER,但它將結果保存到destination集合,而不是簡單地返回結果集。


假設destination集合已經存在,則將其覆蓋。


destination能夠是key本身。


時間復雜度:
? ? O(N * M),N為給定集合其中基數(shù)最小的集合,M為給定集合的個數(shù)。
返回值:
? ? 結果集中的成員數(shù)量。


?


?
SUNION


SUNION key [key ...]


返回一個集合的所有成員,該集合是所有給定集合的并集。


不存在的key被視為空集。


時間復雜度:
? ? O(N),N是全部給定集合的成員數(shù)量之和。
返回值:
? ? 并集成員的列表。


?


?
SUNIONSTORE


SUNIONSTORE destination key [key ...]


此命令等同于SUNION,但它將結果保存到destination集合,而不是簡單地返回結果集。


假設destination已經存在,則將其覆蓋。


destination能夠是key本身。


時間復雜度:
? ? O(N),N是全部給定集合的成員數(shù)量之和。
返回值:
? ? 結果集中的元素數(shù)量。


?


?
SDIFF


SDIFF key [key ...]


返回一個集合的所有成員,該集合是所有給定集合的差集 。


不存在的key被視為空集。


時間復雜度:
? ? O(N),N是全部給定集合的成員數(shù)量之和。
返回值:
? ? 交集成員的列表。


?


?
SDIFFSTORE


SDIFFSTORE destination key [key ...]


此命令等同于SDIFF,但它將結果保存到destination集合,而不是簡單地返回結果集。


假設destination集合已經存在,則將其覆蓋。


destination能夠是key本身。


時間復雜度:
? ? O(N),N是全部給定集合的成員數(shù)量之和。
返回值:
? ? 結果集中的元素數(shù)量。


?


?
有序集(Sorted Set)
ZADD


?


ZADD key score member [[score member] [score member] ...]


將一個或多個member元素及其score值增加到有序集key其中。


假設某個member已經是有序集的成員,那么更新這個member的score值,并通過又一次插入這個member元素,來保證該member在正確的位置上。


score值能夠是整數(shù)值或雙精度浮點數(shù)。


假設key不存在,則創(chuàng)建一個空的有序集并運行ZADD操作。


當key存在但不是有序集類型時,返回一個錯誤。


對有序集的很多其它介紹請參見sorted set。


時間復雜度:
? ? O(M*log(N)),N是有序集的基數(shù),M為成功加入的新成員的數(shù)量。
返回值:
? ? 被成功加入的新成員的數(shù)量,不包含那些被更新的、已經存在的成員。


?


? ? ?


? ? 注解:在Redis2.4版本號曾經,ZADD每次僅僅能加入一個元素。


?


?
ZREM


ZREM key member [member ...]


移除有序集key中的一個或多個成員,不存在的成員將被忽略。


當key存在但不是有序集類型時,返回一個錯誤。


時間復雜度:
? ? O(M*log(N)),N為有序集的基數(shù),M為被成功移除的成員的數(shù)量。
返回值:
? ? 被成功移除的成員的數(shù)量,不包含被忽略的成員。


? ? 注解:在Redis2.4版本號曾經,ZREM每次僅僅能刪除一個元素。


?


?
ZCARD


ZCARD key


返回有序集key的基數(shù)。


時間復雜度:
? ? O(1)
返回值:
? ? 當key存在且是有序集類型時,返回有序集的基數(shù)。
? ? 當key不存在時,返回0。


?
ZCOUNT


ZCOUNT key min max


返回有序集key中,score值在min和max之間(默認包含score值等于min或max)的成員。


關于參數(shù)min和max的具體用法,請參考ZRANGEBYSCORE命令。


時間復雜度:
? ? O(log(N)+M),N為有序集的基數(shù),M為值在min和max之間的元素的數(shù)量。
返回值:
? ? score值在min和max之間的成員的數(shù)量。


?
ZSCORE


ZSCORE key member


返回有序集key中,成員member的score值。


假設member元素不是有序集key的成員,或key不存在,返回nil。


時間復雜度:
? ? O(1)
返回值:
? ? member成員的score值,以字符串形式表示。


?
ZINCRBY


ZINCRBY key increment member


為有序集key的成員member的score值加上增量increment。


你也能夠通過傳遞一個負數(shù)值increment,讓score減去對應的值,比方ZINCRBY key -5 member,就是讓member的score值減去5。


當key不存在,或member不是key的成員時,ZINCRBY key increment member等同于ZADD key increment member。


當key不是有序集類型時,返回一個錯誤。


score值能夠是整數(shù)值或雙精度浮點數(shù)。


時間復雜度:
? ? O(log(N))
返回值:
? ? member成員的新score值,以字符串形式表示。


?


?
ZRANGE


ZRANGE key start stop [WITHSCORES]


返回有序集key中,指定區(qū)間內的成員。


當中成員的位置按score值遞增(從小到大)來排序。


具有同樣score值的成員按字典序(lexicographical order)來排列。


假設你須要成員按score值遞減(從大到小)來排列,請使用ZREVRANGE命令。
下標參數(shù)start和stop都以0為底,也就是說,以0表示有序集第一個成員,以1表示有序集第二個成員,以此類推。
你也能夠使用負數(shù)下標,以-1表示最后一個成員,-2表示倒數(shù)第二個成員,以此類推。
超出范圍的下標并不會引起錯誤。
比方說,當start的值比有序集的最大下標還要大,或是start > stop時,ZRANGE命令僅僅是簡單地返回一個空列表。
還有一方面,假如stop參數(shù)的值比有序集的最大下標還要大,那么Redis將stop當作最大下標來處理。
能夠通過使用WITHSCORES選項,來讓成員和它的score值一并返回,返回列表以value1,score1, ..., valueN,scoreN的格式表示。
client庫可能會返回一些更復雜的數(shù)據(jù)類型,比方數(shù)組、元組等。


時間復雜度:
? ? O(log(N)+M),N為有序集的基數(shù),而M為結果集的基數(shù)。
返回值:
? ? 指定區(qū)間內,帶有score值(可選)的有序集成員的列表。


?
ZREVRANGE


ZREVRANGE key start stop [WITHSCORES]


返回有序集key中,指定區(qū)間內的成員。
當中成員的位置按score值遞減(從大到小)來排列。
具有同樣score值的成員按字典序的反序(reverse lexicographical order)排列。


除了成員按score值遞減的次序排列這一點外,ZREVRANGE命令的其它方面和ZRANGE命令一樣。


時間復雜度:
? ? O(log(N)+M),N為有序集的基數(shù),而M為結果集的基數(shù)。
返回值:
? ? 指定區(qū)間內,帶有score值(可選)的有序集成員的列表。


?


?
ZRANGEBYSCORE


ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]


返回有序集key中,全部score值介于min和max之間(包含等于min或max)的成員。有序集成員按score值遞增(從小到大)次序排列。


具有同樣score值的成員按字典序(lexicographical order)來排列(該屬性是有序集提供的,不須要額外的計算)。


可選的LIMIT參數(shù)指定返回結果的數(shù)量及區(qū)間(就像SQL中的SELECT LIMIT offset, count),注意當offset非常大時,定位offset的操作可能須要遍歷整個有序集,此過程最壞復雜度為O(N)時間。
可選的WITHSCORES參數(shù)決定結果集是單單返回有序集的成員,還是將有序集成員及其score值一起返回。
該選項自Redis 2.0版本號起可用。


區(qū)間及無限


min和max能夠是-inf和+inf,這樣一來,你就能夠在不知道有序集的最低和最高score值的情況下,使用ZRANGEBYSCORE這類命令。


默認情況下,區(qū)間的取值使用閉區(qū)間(小于等于或大于等于),你也能夠通過給參數(shù)前添加(符號來使用可選的開區(qū)間(小于或大于)。


舉個樣例:


?


返回全部符合條件1 < score <= 5的成員;


?


返回全部符合條件5 < score < 10的成員。


時間復雜度:
? ? O(log(N)+M),N為有序集的基數(shù),M為被結果集的基數(shù)。
返回值:
? ? 指定區(qū)間內,帶有score值(可選)的有序集成員的列表。


?


?
ZREVRANGEBYSCORE


ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]


返回有序集key中,score值介于max和min之間(默認包含等于max或min)的全部的成員。有序集成員按score值遞減(從大到小)的次序排列。


具有同樣score值的成員按字典序的反序(reverse lexicographical order)排列。


除了成員按score值遞減的次序排列這一點外,ZREVRANGEBYSCORE命令的其它方面和ZRANGEBYSCORE命令一樣。


時間復雜度:
? ? O(log(N)+M),N為有序集的基數(shù),M為結果集的基數(shù)。
返回值:
? ? 指定區(qū)間內,帶有score值(可選)的有序集成員的列表。


?


?
ZRANK


ZRANK key member


返回有序集key中成員member的排名。當中有序集成員按score值遞增(從小到大)順序排列。


排名以0為底,也就是說,score值最小的成員排名為0。


使用ZREVRANK命令能夠獲得成員按score值遞減(從大到小)排列的排名。


時間復雜度:
? ? O(log(N))
返回值:
? ? 假設member是有序集key的成員,返回member的排名。
? ? 假設member不是有序集key的成員,返回nil。


?
ZREVRANK


ZREVRANK key member


返回有序集key中成員member的排名。當中有序集成員按score值遞減(從大到小)排序。


排名以0為底,也就是說,score值最大的成員排名為0。


使用ZRANK命令能夠獲得成員按score值遞增(從小到大)排列的排名。


時間復雜度:
? ? O(log(N))
返回值:
? ? 假設member是有序集key的成員,返回member的排名。
? ? 假設member不是有序集key的成員,返回nil。


?


?
ZREMRANGEBYRANK


ZREMRANGEBYRANK key start stop


移除有序集key中,指定排名(rank)區(qū)間內的全部成員。


區(qū)間分別下面標參數(shù)start和stop指出,包括start和stop在內。
下標參數(shù)start和stop都以0為底,也就是說,以0表示有序集第一個成員,以1表示有序集第二個成員,以此類推。
你也能夠使用負數(shù)下標,以-1表示最后一個成員,-2表示倒數(shù)第二個成員,以此類推。


時間復雜度:
? ? O(log(N)+M),N為有序集的基數(shù),而M為被移除成員的數(shù)量。
返回值:
? ? 被移除成員的數(shù)量。


?


?
ZREMRANGEBYSCORE


ZREMRANGEBYSCORE key min max


移除有序集key中,全部score值介于min和max之間(包含等于min或max)的成員。


自版本號2.1.6開始,score值等于min或max的成員也能夠不包含在內,詳情請參見ZRANGEBYSCORE命令。


時間復雜度:
? ? O(log(N)+M),N為有序集的基數(shù),而M為被移除成員的數(shù)量。
返回值:
? ? 被移除成員的數(shù)量。


?


?
ZINTERSTORE


ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]


計算給定的一個或多個有序集的交集,當中給定key的數(shù)量必須以numkeys參數(shù)指定,并將該交集(結果集)儲存到destination。


默認情況下,結果集中某個成員的score值是全部給定集下該成員score值之和。


關于WEIGHTS和AGGREGATE選項的描寫敘述,參見ZUNIONSTORE命令。


時間復雜度:
? ? O(N*K)+O(M*log(M)),N為給定key中基數(shù)最小的有序集,K為給定有序集的數(shù)量,M為結果集的基數(shù)。
返回值:
? ? 保存到destination的結果集的基數(shù)。


?


?
ZUNIONSTORE


ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]


計算給定的一個或多個有序集的并集,當中給定key的數(shù)量必須以numkeys參數(shù)指定,并將該并集(結果集)儲存到destination。


默認情況下,結果集中某個成員的score值是全部給定集下該成員score值之和。


WEIGHTS


使用WEIGHTS選項,你能夠為每一個給定有序集分別指定一個乘法因子(multiplication factor),每一個給定有序集的全部成員的score值在傳遞給聚合函數(shù)(aggregation function)之前都要先乘以該有序集的因子。


假設沒有指定WEIGHTS選項,乘法因子默認設置為1。


AGGREGATE


使用AGGREGATE選項,你能夠指定并集的結果集的聚合方式。


默認使用的參數(shù)SUM,能夠將全部集合中某個成員的score值之和作為結果集中該成員的score值;使用參數(shù)MIN,能夠將全部集合中某個成員的最小score值作為結果集中該成員的score值;而參數(shù)MAX則是將全部集合中某個成員的最大score值作為結果集中該成員的score值。


時間復雜度:
? ? O(N)+O(M log(M)),N為給定有序集基數(shù)的總和,M為結果集的基數(shù)。
返回值:
? ? 保存到destination的結果集的基數(shù)。


?


?
公布/訂閱(Pub/Sub)
PUBLISH


PUBLISH channel message


將信息 message 發(fā)送到指定的頻道 channel 。


時間復雜度:
? ? O(N+M),當中 N 是頻道 channel 的訂閱者數(shù)量,而 M 則是使用模式訂閱(subscribed patterns)的client的數(shù)量。
返回值:
? ? 接收到信息 message 的訂閱者數(shù)量。


?


?
SUBSCRIBE


SUBSCRIBE channel [channel ...]


訂閱給定頻道的信息。


時間復雜度:
? ? O(N),當中 N 是訂閱的頻道的數(shù)量。
返回值:
? ? 接收到的信息(請參見以下的代碼說明)。


?


?
PSUBSCRIBE


PSUBSCRIBE pattern [pattern ...]


訂閱符合給定模式的頻道。


每一個模式以 * 作為匹配符,比方 huangz* 匹配全部以 huangz 開頭的頻道( huangzmsg 、 huangz-blog 、 huangz.tweets 等等), news.* 匹配全部以 news. 開頭的頻道(news.it 、 news.global.today 等等),諸如此類。


時間復雜度:
? ? O(N), N 是訂閱的模式的數(shù)量。
返回值:
? ? 接收到的信息(請參見以下的代碼說明)。


?


?
UNSUBSCRIBE


? ? 警告:此命令在新版 Redis 中似乎已經被廢棄?


PUNSUBSCRIBE


? ? 警告:此命令在新版 Redis 中似乎已經被廢棄?


?
事務(Transaction)
WATCH


ATCH key [key ...]


監(jiān)視一個(或多個) key ,假設在事務運行之前這個(或這些) key 被其它命令所修改,那么事務將被打斷。


時間復雜度:
? ? O(1)。
返回值:
? ? 總是返回 OK 。


?
UNWATCH


UNWATCH


取消 WATCH 命令對全部 key 的監(jiān)視。


假設在運行 WATCH 命令之后, EXEC 命令或 DISCARD 命令先被運行了的話,那么就不須要再運行 UNWATCH 了。


由于 EXEC 命令會運行事務,因此 WATCH 命令的效果已經產生了;而 DISCARD 命令在取消事務的同一時候也會取消全部對 key 的監(jiān)視,因此這兩個命令運行之后,就沒有必要運行 UNWATCH 了。


時間復雜度:
? ? O(1)
返回值:
? ? 總是 OK 。


?
MULTI


MULTI


標記一個事務塊的開始。


事務塊內的多條命令會依照先后順序被放進一個隊列其中,最后由 EXEC 命令在一個原子時間內運行。


時間復雜度:
? ? O(1)。
返回值:
? ? 總是返回 OK 。


?


?
EXEC


EXEC


運行全部事務塊內的命令。


假如某個(或某些) key 正處于 WATCH 命令的監(jiān)視之下,且事務塊中有和這個(或這些) key 相關的命令,那么 EXEC 命令僅僅在這個(或這些) key 沒有被其它命令所修改的情況下運行并生效,否則該事務被打斷(abort)。


時間復雜度:
? ? 事務塊內全部命令的時間復雜度的總和。
返回值:
? ? 事務塊內全部命令的返回值,按命令運行的先后順序排列。
? ? 當操作被打斷時,返回空值 nil 。


?


?
DISCARD


DISCARD


取消事務,放棄運行事務塊內的全部命令。


假設正在使用 WATCH 命令監(jiān)視某個(或某些) key ,那么取消全部監(jiān)視,等同于運行命令 UNWATCH 。


時間復雜度:
? ? O(1)。
返回值:
? ? 總是返回 OK 。


?


?
連接(Connection)
AUTH


AUTH password


通過設置配置文件里 requirepass 項的值(使用命令 CONFIG SET requirepass password ),能夠使用密碼來保護 Redis server。


假設開啟了password保護的話,在每次連接 Redis server之后,就要使用 AUTH 命令解鎖,解鎖之后才干使用其它 Redis 命令。


假設 AUTH 命令給定的password password 和配置文件里的password相符的話,server會返回 OK 并開始接受命令輸入。


反之,假設password不匹配的話,server將返回一個錯誤,并要求client需又一次輸入password。


?


? ? 警告:由于 Redis 高性能的特點,在非常短時間內嘗試推測非常多個password是有可能的,因此請確保使用的password足夠復雜和足夠長,以免遭受password推測攻擊。


時間復雜度:
? ? O(1)
返回值:
? ? password匹配時返回 OK ,否則返回一個錯誤。


?
PING


PING


client向server發(fā)送一個 PING ,然后server返回client一個 PONG 。


通經常使用于測試與server的連接是否仍然生效,或者用于測量延遲值。


時間復雜度:
? ? O(1)
返回值:
? ? PONG


?


?
SELECT


SELECT index


切換到指定的數(shù)據(jù)庫,數(shù)據(jù)庫索引號用數(shù)字值指定,以 0 作為起始索引值。


新的鏈接總是使用 0 號數(shù)據(jù)庫。


時間復雜度:
? ? O(1)


返回值:
? ? OK


?
ECHO


ECHO message


打印一個特定的信息 message ,測試時使用。


時間復雜度:
? ? O(1)
返回值:
? ? message 自身。


?


?
QUIT


QUIT


請求server關閉與當前client的連接。


一旦全部等待中的回復(假設有的話)順利寫入到client,連接就會被關閉。


時間復雜度:
? ? O(1)
返回值:
? ? 總是返回 OK (可是不會被打印顯示,由于當時 Redis-cli 已經退出)。


?


?
server(Server)
BGREWRITEAOF


BGREWRITEAOF


異步(Asynchronously)重寫 AOF 文件以反應當前數(shù)據(jù)庫的狀態(tài)。


即使 BGREWRITEAOF 命令運行失敗,舊 AOF 文件里的數(shù)據(jù)也不會因此丟失或改變。


時間復雜度:
? ? O(N), N 為要追加到 AOF 文件里的數(shù)據(jù)數(shù)量。
返回值:
? ? 反饋信息。


?
BGSAVE


在后臺異步保存當前數(shù)據(jù)庫的數(shù)據(jù)到磁盤。


BGSAVE 命令運行之后馬上返回 OK ,然后 Redis fork出一個新子進程,原來的 Redis 進程(父進程)繼續(xù)處理client請求,而子進程則負責將數(shù)據(jù)保存到磁盤,然后退出。


client能夠通過 LASTSAVE 命令查看相關信息,推斷 BGSAVE 命令是否運行成功。


時間復雜度:
? ? O(N), N 為要保存到數(shù)據(jù)庫中的 key 的數(shù)量。
返回值:
? ? 反饋信息。


?
SAVE


SAVE


同步保存當前數(shù)據(jù)庫的數(shù)據(jù)到磁盤。


時間復雜度:
? ? O(N), N 為要保存到數(shù)據(jù)庫中的 key 的數(shù)量。
返回值:
? ? 總是返回 OK 。


?


?
LASTSAVE


LASTSAVE


返回近期一次 Redis 成功運行保存操作的時間點( SAVE 、 BGSAVE 等),以 UNIX 時間戳格式表示。


時間復雜度:
? ? O(1)
返回值:
? ? 一個 UNIX 時間戳。


?


?
DBSIZE


DBSIZE


返回當前數(shù)據(jù)庫的 key 的數(shù)量。


時間復雜度:
? ? O(1)
返回值:
? ? 當前數(shù)據(jù)庫的 key 的數(shù)量。


?


?
SLAVEOF


SLAVEOF host port


SLAVEOF 命令用于在 Redis 執(zhí)行時動態(tài)地改動復制(replication)功能的行為。


通過運行 SLAVEOF host port 命令,能夠將當前server轉變?yōu)橹付╯erver的從屬server(slave server)。


假設當前server已經是某個主server(master server)的從屬server,那么運行 SLAVEOF host port 將使當前server停止對舊主server的同步,丟棄舊數(shù)據(jù)集,轉而開始對新主server進行同步。


另外,對一個從屬server運行命令 SLAVEOF NO ONE 將使得這個從屬server關閉復制功能,并從從屬server轉變回主server,原來同步所得的數(shù)據(jù)集不會被丟棄。


利用“ SLAVEOF NO ONE 不會丟棄同步所得數(shù)據(jù)集”這個特性,能夠在主server失敗的時候,將從屬server用作新的主server,從而實現(xiàn)無間斷執(zhí)行。


時間復雜度:
? ? SLAVEOF host port ,O(N), N 為要同步的數(shù)據(jù)數(shù)量。
? ? SLAVEOF NO ONE , O(1) 。
返回值:
? ? 總是返回 OK 。


?


?
FLUSHALL


FLUSHALL


清空整個 Redis server的數(shù)據(jù)(刪除全部數(shù)據(jù)庫的全部 key)。


此命令從不失敗。


時間復雜度:
? ? 尚未明白
返回值:
? ? 總是返回 OK 。


?


?
FLUSHDB


FLUSHDB


清空當前數(shù)據(jù)庫中的全部 key 。


此命令從不失敗。


時間復雜度:
? ? O(1)
返回值:
? ? 總是返回 OK 。


?


?
SHUTDOWN


SHUTDOWN


SHUTDOWN 命令運行下面操作:


? ? 停止全部client
? ? 假設有最少一個保存點在等待,運行 SAVE 命令
? ? 假設 AOF 選項被打開,更新 AOF 文件
? ? server關閉


假設持久化被打開的話, SHUTDOWN 命令會保證server正常關閉而不丟失不論什么數(shù)據(jù)。


假如僅僅是單純地運行 SAVE 命令,然后再運行 QUIT 命令,則沒有這一保證 —— 由于在運行 SAVE 之后、運行 QUIT 之前的這段時間中間,其它client可能正在和server進行通訊,這時假設運行 QUIT 就會造成數(shù)據(jù)丟失。


時間復雜度:
? ? 不明白
返回值:
? ? 運行失敗時返回錯誤。
? ? 運行成功時不返回不論什么信息,server和client的連接斷開,client自己主動退出。


?


?
SLOWLOG


SLOWLOG subcommand [argument]


什么是 SLOWLOG


Slow log 是 Redis 用來記錄查詢運行時間的日志系統(tǒng)。


查詢運行時間指的是不包含像client響應(talking)、發(fā)送回復等 IO 操作,而單單是運行一個查詢命令所耗費的時間。


另外,slow log 保存在內存里面,讀寫速度很快,因此你能夠放心地使用它,不必操心由于開啟 slow log 而損害 Redis 的速度。


設置 SLOWLOG


Slow log 的行為由兩個配置參數(shù)(configuration parameter)指定,能夠通過改寫 redis.conf 文件或者用 CONFIG GET 和 CONFIG SET 命令對它們動態(tài)地進行改動。


第一個選項是 slowlog-log-slower-then ,它決定要對運行時間大于多少微秒(microsecond,1秒 = 1,000,000 微秒)的查詢進行記錄。


比方運行下面命令將讓 slow log 記錄全部查詢時間大于等于 100 微秒的查詢:


CONFIG SET slowlog-log-slower-then 100 ,


而下面命令記錄全部查詢時間大于 1000 微秒的查詢:


CONFIG SET slowlog-log-slower-then 1000 。


還有一個選項是 slowlog-max-len ,它決定 slow log 最多能保存多少條日志, slow log 本身是一個 LIFO 隊列,當隊列大小超過 slowlog-max-len 時,最舊的一條日志將被刪除,而最新的一條日志增加到 slow log ,以此類推。


下面命令讓 slow log 最多保存 1000 條日志:


CONFIG SET slowlog-max-len 1000 。


使用 CONFIG GET 命令能夠查詢兩個選項的當前值:


?


?


查看 slow log


要查看 slow log ,能夠使用 SLOWLOG GET 或者 SLOWLOG GET number 命令,前者打印全部 slow log ,最大長度取決于 slowlog-max-len 選項的值,而 SLOWLOG GET number 則僅僅打印指定數(shù)量的日志。


最新的日志會最先被打印:


?


?


日志的唯一 id 僅僅有在 Redis server重新啟動的時候才會重置,這樣能夠避免對日志的反復處理(比方你可能會想在每次發(fā)現(xiàn)新的慢查詢時發(fā)郵件通知你)。


查看當前日志的數(shù)量


使用命令 SLOWLOG LEN 能夠查看當前日志的數(shù)量。


請注意這個值和 slower-max-len 的差別,它們一個是當前日志的數(shù)量,一個是同意記錄的最大日志的數(shù)量。


?


清空日志


使用命令 SLOWLOG RESET 能夠清空 slow log 。


?


?


時間復雜度:O(1)


返回值:取決于不同命令,返回不同的值。


?
INFO


INFO


返回關于 Redis server的各種信息和統(tǒng)計值。


時間復雜度:
? ? O(1)
返回值:
? ? 詳細請參見以下的測試代碼。


?


?
CONFIG GET


CONFIG GET parameter


CONFIG GET 命令用于取得執(zhí)行中的 Redis server的配置參數(shù)(configuration parameters),只是并不是全部配置參數(shù)都被 CONFIG GET 命令所支持。


CONFIG GET 接受單個參數(shù) parameter 作為搜索keyword,查找全部匹配的配置參數(shù),當中參數(shù)和值以“鍵-值對”(key-value pairs)的方式排列。


比方運行 CONFIG GET s* 命令,server就會返回全部以 s 開頭的配置參數(shù)及參數(shù)的值:


?


?


假設你僅僅是尋找特定的某個參數(shù)的話,你當然也能夠直接指定參數(shù)的名字:


?


使用命令 CONFIG GET * ,能夠列出 CONFIG GET 命令支持的全部參數(shù):


?


全部被 CONFIG SET 所支持的配置參數(shù)都能夠在配置文件 redis.conf 中找到,只是 CONFIG GET 和 CONFIG SET 使用的格式和 redis.conf 文件所使用的格式有下面兩點不同:


? ? 10kb 、 2gb 這些在配置文件里所使用的儲存單位縮寫,不能夠用在 CONFIG 命令中, CONFIG SET 的值僅僅能通過數(shù)字值顯式地設定。
? ? ?
? ? 像 CONFIG SET xxx 1k 這種命令是錯誤的,正確的格式是 CONFIG SET xxx 1000 。
? ? save 選項在 redis.conf 中是用多行文字儲存的,但在 CONFIG GET 命令中,它僅僅打印一行文字。
? ? ?
? ? 下面是 save 選項在 redis.conf 文件里的表示:
? ? ?
? ? save 900 1
? ? save 300 10
? ? save 60 10000
? ? ?
? ? 可是 CONFIG GET 命令的輸出僅僅有一行:
? ? ?
? ? redis> CONFIG GET save
? ? 1) "save"
? ? 2) "900 1 300 10 60 10000"
? ? ?
? ? 上面 save 參數(shù)的三個值表示:在 900 秒內最少有 1 個 key 被修改,或者 300 秒內最少有 10 個 key 被修改,又或者 60 秒內最少有 1000 個 key 被修改,以上三個條件隨便滿足一個,就觸發(fā)一次保存操作。


時間復雜度:
? ? 不明白
返回值:
? ? 給定配置參數(shù)的值。


?
CONFIG SET


CONFIG SET parameter value


CONFIG SET 命令能夠動態(tài)地調整 Redis server的配置(configuration)而無須重新啟動。


你能夠使用它改動配置參數(shù),或者改變 Redis 的持久化(Persistence)方式。


CONFIG SET 能夠改動的配置參數(shù)能夠使用命令 CONFIG GET * 來列出,全部被 CONFIG SET 改動的配置參數(shù)都會馬上生效。


關于 CONFIG SET 命令的很多其它消息,請參見命令 CONFIG GET 的說明。


關于怎樣使用 CONFIG SET 命令改動 Redis 持久化方式,請參見 Redis Persistence 。


時間復雜度:
? ? 不明白
返回值:
? ? 當設置成功時返回 OK ,否則返回一個錯誤。


?
CONFIG RESETSTAT


CONFIG RESETSTAT


重置 INFO 命令中的某些統(tǒng)計數(shù)據(jù),包含:


? ? Keyspace hits (鍵空間命中次數(shù))
? ? Keyspace misses (鍵空間不命中次數(shù))
? ? Number of commands processed (運行命令的次數(shù))
? ? Number of connections received (連接server的次數(shù))
? ? Number of expired keys (過期key的數(shù)量)


時間復雜度:
? ? O(1)
返回值:
? ? 總是返回 OK 。


?
DEBUG OBJECT


DEBUG OBJECT key


返回給定 key 的調試信息。


時間復雜度:
? ? O(1)
返回值:
? ? 當 key 存在時,返回有關信息。
? ? 當 key 不存在時,返回一個錯誤。


?
DEBUG SEGFAULT


DEBUG SEGFAULT


令 Redis server崩潰,調試用。


時間復雜度:
? ? 不明白
返回值:
? ? 無


?
MONITOR


MONITOR


實時打印出 Redis server接收到的命令,調試用。


時間復雜度:
? ? 不明白
返回值:
? ? 總是返回 OK 。


?
SYNC


YNC


用于復制功能(replication)的內部命令。


時間復雜度:
? ? 不明白
返回值:
? ? 不明白

php redis操作具體解釋


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 青青青国产精品国产精品美女 | 无码成人网站视频免费看 | 无码专区heyzo色欲av | 久久久欧美精品sm网站 | b站永久免费看片大全 | 亚洲欧美伊人久久综合一区二区 | 盗摄精品av一区二区三区 | 一本一道av无码中文字幕麻豆 | 亚欧av无码乱码在线观看性色 | 国产色情又大又粗又黄的电影 | 久久人人爽人人爽人人片av东京热 | 毛片内射久久久一区 | 中国做爰国产精品视频 | 亚洲а∨精品天堂在线 | 日本人极品人妖高潮 | 国产av成人一区二区三区 | 粉嫩虎白女p虎白女在线 | 国产成人福利视频 | 护士人妻hd中文字幕 | 一级黄色片在线看 | 狠狠色噜噜狠狠狠狠2021 | 欧美精品一区二区三区四区在线 | 欧美丰满大黑帍在线播放 | 青青草午夜 | 午夜成人精品福利网站在线观看 | 麻豆国产97在线 | 欧洲 | 一区二区三区乱码在线 | 欧洲 | 成人在线午夜 | 亚洲天堂91 | 久久婷婷人人澡人人爽人人爱 | 久草在线视频免费播放 | 久色88| 国产乱妇乱子在线播视频播放网站 | 女儿国3在线观看免费版高清 | 欧美大片免费看 | 好男人www在线影视社区 | 亚洲视频福利 | 中文字幕欧美一区二区三区 | 欧美黑人激情性久久 | 欧美videos另类粗暴 | 欧美人与野鲁交xxx视频 | 黄色片在线播放 | 摸少妇的奶她呻吟不断爽视频 | 少妇高潮惨叫久久麻豆传 | 日本中文在线观看 | 国产精品无码一区二区三级 | 手机真实国产乱子伦对白视频 | 欧美人交a欧美精品 | 手机av免费在线观看 | 久久久婷婷五月亚洲97色 | 制服 丝袜 亚洲 中文 综合 | 免费av一区二区 | 日韩avwww | 超碰97在线免费观看 | 99久久久无码国产精品秋霞网 | 色臀av| 粉嫩av在线播放一绯色 | 午夜爽爽爽男女免费观看麻豆国产 | 国产亚洲成人av | 欧美一级做a爰片免费视频 性欧美牲交xxxxx视频欧美 | 婷婷丁香五月亚洲中文字幕 | 国内精品久久人妻无码不卡 | 亚洲 中文 女同 | 国产精品一区二区三区四区 | 国产999免费视频 | 国产精品亚洲日韩欧美色窝窝色欲 | 日韩中文字幕观看 | 久久99精品久久久久久秒播九色 | 国产午夜在线播放 | 人人色在线视频播放 | 欧美一级片| 午夜a理论片在线播放 | 午夜色福利| 色哟哟精品视频在线观看 | 国产色欲婬乱免费视频软件 | 国产精品美女久久久亚洲 | 国产精品99精品无码视亚 | 成年无码av片在线狼人 | 日本免费高清 | 六月丁香av | 亚洲精品久久久久久久蜜桃 | 1024手机在线播放 | 亚洲综人网 | 久在线视频 | 国产女人高潮叫床免费视频 | 中文在线天堂资源 | 亚洲精品无码成人a片 | 午夜无码一区二区三区在线 | 国产精品污视频 | 国产精品偷啪在线观看 | 国产精品免费一区二区 | 亚洲欧美一区二区三区日产 | 欧美一区二区最爽乱淫视频免费看 | 呦呦精品| 国产91高清视频 | 欧美激情在线免费 | 久久国产主播 | 久草视频精品在线 | 97se亚洲国产综合自在线 | 成人美女在线 | 亚洲视频一区 | av在线专区| 国产精品美女久久久久av爽李琼 | 色偷偷色噜噜狠狠网站30根 | 国产97视频人人做人人爱 | 久久婷婷国产综合一区二区 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 好男人中文资源在线观看 | 国产精品久久久国产盗摄蜜臀 | 先锋影音av最新资源网 | 亚洲精品国精品久久99热 | 少妇被又大又粗又爽毛片 | 欧美人与动性xxxxx杂性 | 亚洲乱码国产乱码精品精的特点 | 天堂资源8 | 精品国产乱码久久久久久口爆网站 | av官网在线观看 | 四虎永久在线精品视频免费观看 | 西西人体大胆尺度写真 | 国内精品久久久久久久影视蜜臀 | 日本专区在线 | 国内少妇高清露脸精品视频 | 巨胸喷奶水www久久久免费动漫 | 超碰神马 | 女人张开腿让男桶喷水高潮 | 亚洲4区| 午夜剧场免费在线观看 | 男女下面进入的视频免费午夜 | 中国黄色毛片 大片 | 久久婷婷五月综合国产尤物app | 亚洲乱码国产乱码精品精 | 日韩天堂在线 | 国产欧美另类久久久精品丝瓜 | 青青草免费视频在线看 | www.久久久 | 99久久免费看精品国产一区 | 国产精品青青在线观看爽香蕉 | 美女福利在线视频 | 99国内精品久久久久久久 | 欧洲vodafone精品性 | 久草在线欧美 | 亚洲情人网 | 女人大荫蒂毛茸茸视频 | 人妻无码全彩里番acg视频 | 日本一级理论片在线大全 | 18男女拍拍拍久久精品 | 日产欧美国产日韩精品 | 成人免费观看视频网站 | 亚洲精品丝袜字幕一区 | 久热在线播放中文字幕 | 99re热视频 | 粉嫩av一区二区在线播放 | 91日韩欧美| 国产女主播高潮在线播放 | 看国产一级片 | 国内揄拍国内精品人妻浪潮av | 丰满大肥婆肥奶大屁股 | 91国产在线免费观看 | 蜜桃精品视频 | 日韩脚交footjobhd | 91日日拍夜夜嗷嗷叫国产 | 看免费日韩大片 | 午夜光棍福利 | 2021午夜福利理论片 | 亚洲欧美综合精品成人导航 | 欧美精品免费视频 | 精品国精品自拍自在线 | 四虎永久免费在线观看 | 日日噜噜夜夜狠狠久久丁香五月 | 亚洲成熟少妇视频在线观看 | 欧美z0zo人禽交免费观看99 | 99国产精品白浆在线观看免费 | 又污又爽又黄的网站 | 成人做受视频试看120秒 | 亚洲国产成人在线观看 | 毛片基地免费 | 国产视频1区2区3区 久久久久国产精品久久久久 | 涩涩爱影院 | 在线天堂资源www在线污 | av无码电影在线看免费 | 国内精品视频自在一区 | 色一情一区二区三区四区 | 美女131mm久久爽爽免费 | 国产亚洲精品久久久久久老妇 | 亚洲精品丝袜 | www久久九| 久久人人爽人人爽人人片av高请 | 国产成人精品亚洲日本在线桃色 | 激情五月av久久久久久久 | 3p人妻少妇对白精彩视频 | 四季久久免费一区二区三区四区 | 噜噜色av| 99在线视频 | 传媒 | 日本免费三片免费观看 | 日韩高清毛片 | 国产99久久久久久免费看 | 国产av一区二区三区传媒 | 麻豆果冻精东九一传媒mv | 国产又粗又黄的视频 | 亚洲综合精品久久 | 西西人体444www大胆无码视频 | 国产视频国产区 | 国产女爽123视频.cno | 国产又大又猛 | 日韩精品久久久久影视的特点 | 国产成人+综合亚洲+天堂 | 成人免费网址 | 1024视频在线 | av大片免费观看 | 狠狠人妻久久久久久综合蜜桃 | 在线播放日韩 | 无遮挡免费高清羞羞视频 | 操碰在线视频 | 久久免费看视频 | av观看地址 | 成人电线在线播放无码 | 日本在线不卡免费 | 国产午夜在线观看 | 色婷婷激情五月 | 好爽…又高潮了免费毛片 | 狠狠躁天天躁中文字幕无码 | 狠狠色狠狠色综合日日92 | 国产成人a区在线观看视频 久久人体 | 久久精品成人免费国产片小草 | 久久ww精品w免费人成 | 妇女性内射冈站hdwww000 | 一道本视频在线观看 | 夜夜高潮夜夜爽高清完整版1 | 亚洲不卡中文字幕无码 | 亚州五月 | 日本一区二区三区免费播放 | 亚洲国产精品成人一区二区在线 | 国产成人无码精品久久久性色 | 国产午夜无码片在线观看影视 | 欧美色视频网站 | 国产又黄又大又粗的视频 | 欧美aa大片 | 人人澡超碰碰97碰碰碰 | 少妇资源站 | 少妇高潮太爽了在线观看 | 国产精品久久久久久久久免费高清 | 国产剧情自拍 | 视频在线 | porny | 国产 看免费的无码区特aa毛片 | 亚洲精品网站在线播放gif | 久久天天躁拫拫躁夜夜av | 一本久久伊人热热精品中文 | 亚洲精品国产二区图片欧美 | 一区二区高清视频 | 精品久久久久久无码专区 | 亚洲天堂成人在线观看 | 视频1区2区 | 中文字幕8mav | 欧美美女喷潮 | 欧美 日韩 中文字幕 | 久久精品极品盛宴免视 | 成人精品网 | 国产口爆吞精在线视频 | 全黄激性性视频 | avaiai| 亚洲aaaa级特黄毛片 | 亚洲精品乱码久久久久久蜜桃欧美 | 亚洲一本二卡三卡四卡乱码 | 免费日韩 | 人人妻久久人人澡人人爽人人精品 | 天码中文字幕在线播放 | 久久久久九九九 | 亚洲国产一区二区三区a毛片 | 免费理伦片在线播放网站 | 无码人妻丰满熟妇区96 | 日本体内she精高潮 日本成人三级 | 亚洲男人的天堂在线观看 | 国产做a爱免费视频在线观看 | 自拍视频第一页 | 69极品少妇一区二区 | 日日躁夜夜躁狠狠躁超碰97 | 久久精品视频在线观看 | 亚洲成人综合网站 | 国产精品毛片大码女人 | av无码av天天av天天爽 | 少妇啪啪高潮肉谢 | 久久的色偷偷 | 国内精品免费 | 伊人依成久久人综合网 | 欧美一区二区久久久 | 青青青视频在线播放 | 无码一区二区三区中文字幕 | 午夜嘿嘿嘿在线观看 | 国产二区交换配乱婬 | 久草在线免 | 国产中文欧美日韩在线 | 无码国产精品一区二区高潮 | 涩涩亚洲 | 五月激情日韩欧美啪啪婷婷 | 国产精品偷啪在线观看 | 国产尤物视频在线 | 日韩av无码午夜免费福利制服 | 天天干天天干 | 成在人线av无码免观看麻豆 | 欧美精品亚洲一区 | 成年女人黄网站色视频免费97 | 99婷婷| 日本黄色精品 | 欧美日韩精品亚洲 | 欧美 国产 亚洲 卡通 综合 | 精品国产在天天在线观看 | 国产男女爽爽爽免费视频 | 日韩少妇内射免费播放18禁裸乳 | 解开人妻的裙子猛烈进入 | 国产精品第一页在线观看 | 亚洲大尺度在线 | 久热精品视频在线播放 | 亚洲精品无码不卡 | www.国产黄色 | 天堂在线www天堂在线 | 色天天色综合 | 深夜视频在线免费 | 亚洲偷色| 色优久久| 日韩欧美视频免费在线观看 | 亚洲在线免费 | 欧美日韩视频在线观看一区 | 在线天堂新版最新版在线8 亚洲www啪成人一区二区 | 欧美激情一区二区三区 | 久久播我不卡 | 亚洲淫欲| 夜夜躁日日躁狠狠久久88av | 日韩在线视频观看免费 | 亚洲愉拍自拍另类图片 | 日本欧美精91品成人久久久 | 人妻无码中文专区久久av | 搡老女人老妇女老熟妇 | 国产98视频 | 国产夫妻在线 | 久久久www成人免费毛片女 | 国产成人av无码永久免费一线天 | 91精品视频观看 | 蜜桃臀av高潮无码 | 真人真事免费毛片 | 国产精品ⅴ无码大片在线看 | 69色综合 | 一本色道亚洲精品aⅴ | 一边吃胸一边揉下面的视频 | 欧美视频免费 | 狠狠撸狠狠操 | 久久婷婷综合色 | 亚洲免费在线播放视频 | v一区无码内射国产 | 99热精品毛片全部国产无缓冲 | 久久99久久99| 成人福利视频导航 | 成人开心网 | 手机在线观看av网站 | 91粉嫩萝控精品福利网站 | 久久中文综合 | 精品自拍视频 | 97久久人澡人人添人人爽 | 极品色视频 | 国产精品无码一区二区桃花视频 | 免费在线播放 | 中文字幕在线一区 | 精品欧美黑人一区二区三区 | 亚洲春色综合另类网蜜桃 | 精品无码国模私拍视频 | 久久精品日日躁夜夜躁 | 色站综合 | 国产三区视频在线观看 | 在线日韩日本国产亚洲 | 国产精品爽爽久久久久久蜜臀 | 日本在线视频二区 | 伊人网网站 | 99爱在线视频| av中文字幕播放 | 国产精品7m凸凹视频分类 | 欧美视频一区二区在线 | 成人网站色52色在线观看 | 国产欧美va天堂在线电影 | 国产精品久久久久久无人区 | 免费无码黄网站在线观看 | 欧美三级午夜理伦三级老人 | 亚洲 欧美 综合 | 亚洲一区二区高潮无套美女 | 欧美xxxxx少妇 | 高清无码视频直接看 | 东北少妇不带套对白 | 在线播放免费播放av片 | 中文字幕手机在线观看 | 亚洲五月激情 | 日本少妇高潮喷水免费可以看 | 偷窥自拍欧美 | 98在线高清免费观看 | 激情久久小说 | 免费无码又爽又刺激动态图 | 亚洲最新色 | 亚洲中国久久精品无码 | 青青成线在人线免费啪 | 国产成人综合在线女婷五月99播放 | 国产丰满老女人hd | 国产成人无码精品久久久性色 | 国产高清精品福利私拍国产写真 | 色综合色欲色综合色综合色综合r | 国产在线 | 中文 | 东京热久久综合久久88 | 精品国精品自拍自在线 | 国产一区二区三级 | 国产免费一区二区三区vr | 大色av | 青青草视频在线观看免费 | 一区二区三区精品视频日本 | 国产成人一区二区啪在线观看 | 一区二区视频免费观看 | 成人一区二区三区久久精品嫩草 | 国产黄色大片 | 东北老女人高潮久久91 | 成年美女黄网站色大免费全看 | 99精品久久久久中文字幕 | 天堂а√在线中文在线新版 | 亚洲乱码av一区二区 | 久久大香伊蕉在人线国产h 国产乱码人妻一区二区三区四区 | 欧美超大胆裸体xx视频 | 亚洲熟妇av一区二区三区 | 亚洲高清乱码午夜电影网制服 | 两性爱爱视频 | 国产精品视频男人的天堂 | 国产露脸久久高潮 | 亚洲人午夜射精精品日韩 | 操亚洲 | 亚洲精品国产一区二区小泽玛利亚 | 国产精品国产三级国产 | 日韩在线播放一区 | 国产一区二区三区久久久久久久久 | 欧美精品国产综合久久 | 久久精品视频12 | 欧美 亚洲 另类 丝袜 自拍 动漫 | 99久久国产露脸精品国产麻豆 | 亚洲va天堂va国产va久 | 欧美在线aaa| 91 在线视频 | 激情国产一区二区三区四区 | 欧美成人另类 | 久女女热精品视频在线观看 | 午夜拍拍拍无档视频免费qq群 | 中字幕久久久人妻熟女天美传媒 | 做a视频在线观看 | 五月婷婷狠狠 | 涩视频在线观看 | 国产97色在线 | 免费 | 青青操免费在线视频 | 国产精无久久久久久久免费 | 久久久天堂国产精品女人 | 国产精品久久国产精品99 | 91二区 | 欧美丰腴丰满大屁股熟妇 | 嫩呦国产一区二区三区av | 无码内射成人免费喷射 | 日韩亚洲国产综合高清 | 99久久中文字幕三级久久日本 | 国产成人综合久久久久久 | 特黄做受又粗又大又硬老头 | 午夜视频欧美 | 狠狠色丁香婷婷综合久久来来去 | 亚洲自拍偷拍精品 | 国产精品边做奶水狂喷无码 | 国产一级视频在线 | 国产精品国产精品偷麻豆 | 色婷婷久久综合中文久久蜜桃av | 精品国内自产拍在线观看视频 | 日本www一道久久久免费 | 一级免费看视频 | 天天做夜夜做 | 无码专区一ⅴa亚洲v专区在线 | 六月丁香在线视频 | 91视频在线观看网站 | 国产成 人 综合 亚洲网站 | 国内精品视这里只有精品 | 午夜一级视频 | 18禁黄网站禁片无遮挡观看 | 日韩精品999| 隔壁邻居是巨爆乳寡妇 | 五月天婷婷在线观看 | 玖玖热综合一区二区三区 | 久草热视频 | 亚洲国产成人精品福利在线观看 | 久久综合色婷婷 | 91就要激情 | 无套内射chinesehd熟女 | 亚洲熟妇色xxxxx欧美老妇y | 色欲狠狠躁天天躁无码中文字幕 | 无遮挡h肉视频在线观看免费资源 | 免费观看日本污污ww网站 | 亚洲欧美综合成人五月天网站 | 神马午夜嘿嘿嘿 | 色呦呦网站在线观看 | 无码少妇一区二区三区浪潮av | 天天干人人干 | 成人爽a毛片在线视频淮北 美女私密免费网站 | 欧美人与性动交a精品 | 精品一二三区 | 天码中文字幕在线播放 | 四虎国产精品永久地址99 | 天天爽av| 国产小便视频在线播放 | 国产成人年无码av片在线观看 | 男人扒开女人腿桶到爽免费 | 欧美性啪啪 | 91成熟丰满女人少妇 | 天天综合亚洲综合网天天αⅴ | 人妻无码久久一区二区三区免费 | 久久久九九| 99爱免费 | 免费视频精品一区二区 | 成年人久久 | 黄色片久久久久 | 亚洲伊人成无码综合影院 | 黑人一级大毛片 | 18禁成人黄网站免费观看久久 | 国产精品极品美女自在线观看免费 | 日韩欧美中文字幕综合 | 国内精品一线二线三线黄 | 亚洲最大无码中文字幕网站 | 亚洲色偷偷色噜噜狠狠99网 | 日产电影一区二区三区 | 日日鲁鲁夜夜狼狼视频 | 2020亚洲男人天堂 | 午夜福利精品亚洲不卡 | 色噜噜狠狠色综合久夜色撩人 | 日本黄h兄妹h动漫一区二区三区 | 国产精品推荐天天看天天爽 | 久久精品国产av一区二区三区 | 国产一级大片 | 欧美丰满熟妇性xxxx | 国产无套粉嫩白浆在线观看 | 国产女人高潮抽搐喷水免费视频 | 精品国产欧美一区二区三区成人 | 久久艹这里只有精品 | 在线成年视频人网站观看 | 好紧好湿好爽免费视频 | 五月综合激情日本mⅴ | 国产探花在线精品一区二区 | 色成人精品免费视频 | 久久久久久久久久久韩国男女 | 亚洲乱码国产乱码精品精98午夜 | 双腿张开被9个黑人调教影片 | 天海翼一区二区三区四区在线观看 | 亚洲男人的天堂色婷婷 | 亚洲国产欧美精品 | 国产欧美高清在线观看 | 欧美一区二区三区观看 | 日本欧美v大码在线 | 黄色一级生活片 | 日韩一区二区三区在线观看视频 | 永久免费的无码中文字幕 | 艳妇乳肉豪妇荡乳流白浆 | 乱辈干柴烈火小说 | 午夜激情视频网站 | 蜜臀久久99精品久久久久野外 | 国内老熟妇对白xxxxhd | 日韩欧美一区二区在线观看 | 丰满少妇被猛烈进入高清app | 欧美日韩八区 | 国产精品天干天干在线观看澳门 | 凹凸福利视频 | 精品乱码卡1卡2卡3免费开放 | 在线观看中文字幕dvd播放 | 樱花草在线社区www中国中文 | 国产美女免费无遮挡 | 丰满人妻被黑人连续中出 | 日本午夜成年在线网站 | 精品国产一二三产品区别在哪 | 亚洲 欧美 影音先锋 | 日本高清在线中字视频 | 黄在线观看品 | 欧美在线一区二区视频 | 国产成人福利片 | 免费大香伊蕉在人线国产卡 | 国产精品午夜福利不卡120 | 无码中文av有码中文a | 国产乱人视频在线播放 | 性欧美牲交在线视频 | 久久99国产综合精品 | 美丽人妻系列无码专区 | 中国黄色1级片 | 日韩欧美小视频 | 伊人最新网址 | 18禁真人抽搐一进一出动态图 | 真实国产乱子伦精品视频 | 亚洲少妇一区二区 | av成人亚洲 | 欧美日韩亚洲天堂 | 亚洲熟女中文字幕男人总站 | 成人精品一区二区户外勾搭野战 | 久久超碰97人人做人人爱 | 伊人黄色 | 激情第一区仑乱 | 国内精品一区二区福利视频 | www深夜成人白色液体视频 | 国产亚洲精品久久久久的角色 | 日韩1区2区 | 爱看av在线入口 | 少妇一级淫片免费观看 | 在线综合亚洲欧美网站 | 自拍日韩亚洲一区在线 | 久久成人成狠狠爱综合网 | 成人久久18免费网站 | 成人免费无码大片a毛片户外 | 妩媚尤物娇喘无力呻吟在线视频 | 亚洲一卡2卡3卡4卡5卡乱码观看 | 国产成人欧美一区二区三区一色天 | 国产一卡三卡四卡无卡精品 | 成人免费a视频 | 国产成人综合一区人人 | 国产高颜值大学生情侣酒店 | 毛片的网站 | 东京热人妻无码一区二区av | 免费无遮挡又黄又爽网站 | 国产精品无码一区二区三区不卡 | 亚洲欧美高清在线 | 国产在线aaa片一区二区99 | 日韩欧美在线不卡 | 91丁香婷婷综合久久欧美 | 手机在线一区二区 | 欧亚精品一区三区免费 | 午夜福利电影无码专区 | 欧美jiizzhd精品欧美 | 欧美亚洲精品一区二区在线观看 | 国产产无码乱码精品久久鸭 | 欧美黄视频网站 | 炮机高潮痉挛哭叫失禁小说 | 天天干天天插天天操 | 91嫩草精品| 六月婷婷国产精品综合 | 精品人妻无码专区在中文字幕 | 青青青爽久久午夜综合久久午夜 | 亚洲精品污一区二区三区 | 99久久精品国产片果冻的功能特点 | 爽好多水快深点91 | 中文无码成人免费视频在线观看 | 亚洲色大成网站www久久 | 日韩国产一区二区 | 国产色婷婷色妞妞视频网站 | 极品美女啪啪 | 色婷婷色 | 欧美激情视频网址 | 国产精品久久影视 | 黑人巨大av | 九九热视频在线免费观看 | 操批网站 | 伊人久久综合精品无码av专区 | 午夜成人性刺激免费视频 | 爱爱一区二区三区 | 久久久久久久18 | 亚洲一级视频在线观看 | 丝袜 亚洲 另类 国产 制服 | 午夜福利日本一区二区无码 | 精品人妻无码专区在中文字幕 | 久草五月 | 国产对白受不了了中文对白 | www.9999av| 亚洲熟妇av一区二区三区下载 | 二女共侍一夫三级 | 狠狠干激情 | 国产人无码a在线西瓜影音 成人免费一级 | 亚洲欧美日韩国产精品专区 | 夜夜欢性恔真人免费视频 | 清清草免费视频 | 日韩精品国产另类专区 | 影视av久久久噜噜噜噜噜三级 | av中文在线资源 | 亚洲色偷偷偷鲁精品 | 亚洲国产欧美在线人成人 | 欧美精品二区三区四区免费看视频 | 国产无套粉嫩白浆内谢网站 | 亚洲日本香蕉视频观看视频 | 五月激情五月婷婷 | 伊人成色综合人夜夜久久 | 久久久久高潮毛片免费全部播放 | 国产福利姬喷水福利在线观看 | 日韩色综合网 | 亚洲欧美国产精品无码中文字 | 久久22 | 91福利视频网站 | 在线成人精品国产区免费 | 老少配老妇老熟女中文普通话 | 免费永久在线观看黄网站 | 国产片av不卡在线观看国语 | 日本性视频网站 | 777午夜精品免费观看 | 综合网激情| 中文字幕在线观看国产 | 97人人模人人爽人人喊电影 | 国产一级性生活 | 日韩精品一区二区三区不卡 | 亚洲欧洲在线播放 | 国产一区二区三区精品视频 | 国产在线视欧美亚综合 | 日本成本人片免费网站 | 99青青 | 亚洲精品久久久久999中文字幕 | 在线a网| 免费无码又爽又刺激成人 | 日本乱码一区二区三区不卡 | 久久久精品国产一区二区三区 | 少妇丰满尤物大尺度写真 | 亚洲精品乱码久久久久久中文字幕 | 久久久久久成人 | www.婷婷.com | 91极品国产情侣高潮对白 | 中文字幕人妻丝袜乱一区三区 | 一本色道久久88综合日韩精品 | 卡1卡2卡三卡精品视频 | 欧美日韩一区二区在线视频 | 国产萌白酱喷水视频在线观看 | 青青狠狠噜天天噜日日噜 | 91亚瑟视频 | 最新国产精品亚洲 | 熟妇与小伙子matur老熟妇e | 五月色丁香婷婷网蜜臀av | 丰满岳乱妇久久久 | 中文无码字幕一区到五区免费 | 在线无码av一区二区三区 | 香蕉视频91 | 国产精品久久国产精品99盘 | 在线亚洲精品国产一区麻豆 | 男人的天堂在线a无码 | 麻豆ā片免费观看在线看 | 国精品无码一区二区三区在线蜜臀 | 亚洲mv国产mv在线mv综合试看 | 在线免费观看一区二区 | 麻豆精品久久 | 日本国产在线播放 | 91佛爷在线 | 人人人妻人人澡人人爽欧美一区 | 老鸭窝成人 | 欧美成人精品三级网站视频 | 欧美丰满熟妇xxxx性ppx人交 | 福利免费视频 | 一二区成人影院电影网 | av中字| 成人无码视频在线观看大全 | 欧美高清大屁股xxxxx | 欧美xxxx做受欧美人妖 | 日本少妇色视频 | 人人妻人人添人人爽欧美一区 | 中文字幕一区二区三区日韩精品 | 欧美视频www | 中文字幕无码久久一区 | www.免费av | 成人影院www蜜桃网站 | www.青青青 | aa在线视频 | 茄子视频国产在线观看 | 性高湖久久久久久久久aaaaa | 国产裸体歌舞一区二区 | 亚洲免费视频一区二区三区 | 妖精视频一区二区 | 99九九精品视频 | 亚洲欧洲成人精品久久一码二码 | 国产放荡对白视频在线观看 | 极品少妇久久久 | 无码欧亚熟妇人妻av在线外遇 | 日韩欧美tⅴ一中文字暮 | 国产亚洲精品美女久久久久 | 国产一级免费不卡 | 狼人青草久久网伊人 | 一区二区视屏 | 男女的隐私视频播放 | 久久精品亚洲一区二区三区观看模式 | 这里只有精品久久 | 美日韩三级 | 一本加勒比hezyo中文无码 | 不卡的av| 日本乱码伦视频免费播放 | 天天澡天天揉揉av在线 | 国产成人av在线免播放观看更新 | 午夜色av| 亚洲国产18 | 亚洲欧美日韩综合在线一 | 亚洲码无人客一区二区三区 | 婷婷丁香综合色 | 精品人妻少妇一区二区三区不卡 | 亚洲中文字幕无码av永久 | 五月av | 成年男人裸j网站 | xxxx野外性xxxx黑人 | 欧美成人高潮一二区在线看 | 欧美一区二区三区在线观看 | 久久亚洲a | 欧美人与禽性性生活 | 97视频在线免费播放 | 亚洲欧美综合精品成人网 | 国产精品黄页免费高清在线观看 | 无码少妇精品一区二区免费 | 欧美私人情侣网站 | 亚洲一区二区三区综合 | 午夜激情福利在线 | 欧美人与动交视频在线观看 | 99视频精品免视看 | 国产成a人片在线观看视频下载 | 99在线精品视频免费观看20 | 99久久国产综合精麻豆 | 五月99久久婷婷国产综合亚洲 | www.五月婷| 亚洲国产欧美日韩在线人成 | 在线a | 亚洲欧美乱日韩乱国产 | 成人国产精品免费观看视频 | 国产精品日产欧美久久久久 | 亚洲国产黄色片 | 国产av亚洲精品久久久久 | 天天干天天弄 | 日本人极品人妖高潮 | 国产亚洲真人做受在线观看 | 亚洲人成激情在线播放国 | 亚洲在线精品视频 | 国产乱了真实在线观看 | 乌克兰少妇xxxx做受 | 999国内精品永久免费观看 | 国产色精品久久人妻 | 婷婷六月色 | 亚洲欧美国产日产综合不卡 | 婷婷色五月开心五月 | 欧美69式性猛交 | 日日躁夜夜躁白天躁晚上 | 日韩在线精品强乱中文字幕 | 午夜影视啪啪免费体验区 | 在线 | 一区二区三区四区 | 性欧美熟妇视频免费观看 | 国产精品一线二线三线 | 欧美影院在线观看 | 9191国产精品 | 国产在线观看a | 亚洲精品一区二区不卡 | 国内精品人妻久久毛片app | 无码精品人妻一区二区三区人妻斩 | 久精品在线观看 | 久久免费看| 日韩在线小视频 | 少妇午夜性影院私人影院软件 | 国产精品疯狂输出jk草莓视频 | 成人免费在线网站 | 人妻 校园 激情 另类 | 香蕉成人av | 亚洲精品国产成人无码区a片 | 99re6热只有精品免费观看 | 国产第|页日本草草影院一 午夜欧美理论2019理论 | 亚洲综合色小说 | 欧美日韩黄色一级片 | 乱子伦一区二区三区 | 免费在线观看中文字幕 | 91嫩草私人成人亚洲影院 | 成人国内精品久久久久影院 | 久天啪天天久久99久孕妇 | 青青青在线 | 日本欧美精91品成人久久久 | 九色在线视频 | 狠狠撸在线视频 | 色偷偷88888欧美精品久久久 | 三级网址在线播放 | 少妇性xxxx性开放黄色 | 闺蜜张开腿让我爽了一夜 | 国产明星xxxx色视频 | 国产一在线精品一区在线观看 | 精品黑人一区二区三区国语馆 | 少妇高潮大叫好爽 | 欧美寡妇性猛交xxx免费 | 久久精品女人天堂av免费观看 | 日韩精品一区二区三区免费视频观看 | 午夜影视免费 | 国内精品久久久久久久久电影网 | 欧美三级视频在线播放 | 久久久精品欧美一区二区免费 | 日韩视频三区 | 精品一区二区三区香蕉蜜桃 | 图片区 小说区 区 亚洲五月 | 偷偷色噜狠狠狠狠的777米奇 | 久久精品一区二区三 | 成 人影片 免费观看在线 | 国产杨幂丝袜av在线播放 | 国产露脸xxⅹ69 | 人人揉揉揉香蕉大免费 | 狠狠综合久久久久综合网 | 国产熟妇按摩3p高潮大叫 | 狠狠色婷婷久久综合频道日韩 | 老地方在线观看免费追剧网站 | 国产精品制服丝袜无码 | av色蜜桃一区二区三区 | 91欧美一区二区三区 | 久久久精品成人免费观看国产 | 国产精品3区 | 成人欧美一区二区三区黑人免费 | 你懂的手机在线观看 | 国产猛烈高潮尖叫视频免费 | 粉嫩aⅴ一区二区三区 | 午夜免费看 | 中文字幕亚洲高清 | 人妻人人添人妻人人爱 | 亚洲作爱网 | a毛看片免费观看视频 | 92国产精品午夜福利免费 | 亚洲精品 欧美 | 国内少妇偷人精品视频 | 日韩美女av在线 | 久久久久四虎精品免费入口 | jj视频在线播放 | 与子敌伦刺激对白播放 | 国内精品一区二区三区 | 天天超碰 | 91成人在线观看喷潮蘑菇 | 香港三级澳门三级人妇99 | 国产最爽乱淫视频免费 | 蜜臀99久久精品久久久久小说 | 国产真实乱子伦精品视频 | 亚洲天堂资源网 | 中文字幕制服狠久久日韩二区 | 久久久国产一级片 | 无码h黄肉3d动漫在线观看 | 国产精品∧v在线观看 | www午夜 | 欧美丰满少妇高潮18p | 青青青国产最新视频在线观看 | 久久视频在线视频精品 | 久久亚洲精品无码aⅴ大香 国产亚洲高潮精品av久久a | 东北女性一乱一交一情一色 | 亚洲天堂五月 | 欧美激情成人在线 | 狠狠色丁香婷婷久久综合不卡 | 国产精品18久久久久久欧美 | 亚洲自拍偷拍av | 国模无码大尺度一区二区三区 | 天天鲁一鲁摸一摸爽一爽视频 | 国产精品午夜无码体验区 | 极品美女aⅴ在线观看 | 大胸少妇午夜三级 | 国产97色在线 | 国产 | 欧美日韩午夜激情 | 曰韩一级片 | 亚洲高清国产av拍精品青青草原 | 2021久久国自产拍精品 | 五月香蕉网 | 色成人亚洲www78ixcom | 亚洲国产成人无码av在线播放 | 色偷偷激情日本亚洲一区二区 | 边啃奶头边躁狠狠躁3p | 欧美黄色高清 | 日韩精品亚洲人成在线 | 日本色哟哟 | 99久久久| 亚洲春色成人 | av无码一区二区二三区1区6区 | 掀开奶罩边吃边摸下娇喘视频 | 日本人吃奶玩奶虐乳视频 | 国产男女猛烈无遮挡a片漫画 | 蜜臀av国内精品久久久夜夜蜜臀 | 亚洲 欧美 制服 综合 另类 | 亚洲日韩欧美一区久久久久我 | 久草在线在线 | 中文字幕视频在线观看10页 | 欧美亚洲国产精品久久高清浪潮 | 性欧美老肥妇喷水 | 国内少妇自拍 | 欧美大荫蒂毛茸茸视频 | 国内精品久久人妻互换 | 国产精品亚洲综合 | 精品国内自产拍在线观看 | 亚洲精品午夜久久久伊人 | 亚洲视频久久 | 亚洲高清视频免费看 | 欧美奶涨边摸边做爰视频 | 日日摸夜夜添夜夜无码区 | 久久久久久久久黄色 | av在线播放免费 | 97久久精品无码一区二区天美 | 亚洲网老鸭窝男人的天堂 | 亚洲熟妇无码八v在线播放 色综合精品 | 最新无码人妻在线不卡 | 中文在线免费观看 | 老色鬼永久精品网站 | 久久久久国产精品人妻照片 | 成年人在线影院 | 亚洲国产一区二区三区四区四季 | 亚洲高清成人aⅴ片在线观看 | 欧美国产综合视频 | 色婷婷av一区二区三区gif | 亚洲精品噜噜丝袜区精品 | 午夜精品久久久久久久久 | 66m—66摸成人免费视频 | 女人被强╳到高潮喷水在线观看 | 国产成人综合久久精品推 | 姑娘第5集在线观看免费好剧 | 中文字幕欧美色图 | 888米奇色狠狠俺去啦小说 | 原创少妇半推半就88av | 国产精品嫩草影院99网站 | 国产美女被遭高潮免费网站 | 伊人色综合网 | www.com久久 | 色婷婷在线播放 | 黄色成年人视频 | 国产情侣久久久久aⅴ免费 五月婷婷激情久久 | 四只虎影院在线免费 | 欧美特级aaa | 欧美成人aaa片一区国产精品 | 欧美成人精品三级网站 | 一本色道久久综合亚洲精品按摩 | 伊甸园一区二区 | 东京热无码人妻系列综合网站 | 国产三区在线成人av | 亚洲欧美激情四射在线日 | 三级做爰高清视频 | 欧美午夜理伦三级在线观看吃奶汁 | 一区二区三区有限公司 | 性高潮久久久久久久 | 日本不卡一区二区三区 | 国产精品永久免费 | 精品国产福利在线 | 日韩国产精品人妻无码久久久 | 又摸又揉又黄又爽的视频 | 亚洲欧美中文日韩v在线观看不卡 | 羞羞影院午夜男女爽爽免费 | 在线免费看一级片 | 国产美女遭强高潮网站观看 | 成人一区二区在线观看视频 | a国产一区二区免费入口 | 一色桃子中文字幕 | 亚洲男人天堂 | 国产人成无码视频在线观看 | 亚洲国产欧洲综合997久久, | 色噜噜狠狠一区二区三区狼国成人 | 毛片在线免费视频 | 久久这里只精品 | 88国产精品视频一区二区三区 | 亚洲综合色区另类小说 | 成年男人裸j网站 | 亚洲女同一区二区 | 亚洲色图男人天堂 | 亚洲专区一| 国产乱淫视频免费 | 国产一区二区三区自产 | 国产三级一区二区三区视频 | 国产成人免费97在线 | 日日摸夜夜爽无码毛片精选 | 久久国产精品大桥未久av | 成人美女视频在线观看 | 日韩污视频在线观看 | 九九视频免费精品视频 | 九九久re8在线精品视频 | 国产大学生一级毛片绿象 | 无码人妻精一区二区三区 | 在线91av| 亚洲卡1卡2卡四卡乱码 | 91精选视频 | 日韩一区欧美二区 | 潮喷失禁大喷水无码 | 人妻耻辱中文字幕在线bd | 久久精品视频1 | 人妻无码αv中文字幕久久琪琪布 | 性 毛片 | 午夜福利精品亚洲不卡 | 国产三级无码内射在线看 | 老熟妇性色老熟妇性 | 欧美成人三级在线观看 | 另类天堂 | 国产精品热久久久久夜色精品三区 | 99热视屏 | 国产午夜禁区精品视频 | 亚洲精品视频免费 | 精品国产美女av久久久久 | 超碰69 | 国产成人精品微拍视频网址 | 91超碰国产在线 | 久久精品99国产 | 99麻豆久久久国产精品免费 | 亚洲精品乱码久久久久久9色 | 国产精品国产三级国产aⅴ9色 | 久久久久久少妇 | 2022久久国产精品免费热麻豆 | 亚洲国产综合av在线观看 | 人人草视频在线观看 | 欧美一区二区高清 | www.久久久久久久久久久 | 亚洲 人av在线影院 亚洲精品无码久久久久秋霞 | 日日操夜夜摸 | 亚洲永久免费视频 | 黑森林av| 欧美色欧美亚洲国产熟妇 | 欧美高清在线 | tube少妇高潮 | 精品久久久久久久久久软件 | 污片网站在线观看 | 亚洲图片欧美视频 | 黑人巨茎精品欧美一区二区 | 五十六十路熟女交尾a片 | 国产一区二区精品免费 | 国产精品一区二区三区久久 | 最近免费韩国日本hd中文字幕 | 亚洲精品狼友在线播放 | 国产精品人成视频免费999 | 99er6这里只有精品 | 999zyz玖玖资源站永久 | 国产精品久久久久久无毒不卡 | 国产又黄又硬又湿又黄的故事 | 亚洲精品欧美综合二区 | 亚洲欧美激情国产综合久久久 | 亚洲成a人片在线观看无码专区 | 久久久国产成人一区二区三区 | 国产三级91 | 野外做受又硬又粗又大视幕 | 亚洲精品色无码av试看 | 亚洲国产精品久久网午夜 | 国产人成高清在线视频99 | 18禁超污无遮挡无码免费动态图 | 国产裸体瑜伽xxx在线 | 日欧一片内射va在线影院 | 少妇又紧又深又湿又爽视频 | 亚洲精品亚洲人成在线观看麻豆 | 国产小屁孩cao大人免费 | 91视频高清免费 | 色视频在线观看免费视频 | 超碰97久久 | 超碰97人人人人人蜜桃 | 涩涩涩涩av | 亚洲乱码日产精品bd在线下载 | 国产成人精品日本亚洲77美色 | 国产a国产国产片 | 欧美一区二区三区影院 | 精品国产小视频在线观看 | 亚洲a在线观看 | 丰满又大又圆又白的美乳美女 | 欧美久久久一区二区三区 | 亚洲欧美日韩国产精品一区二区 | 搞黄视频在线免费观看 | 人与动人物av片 | 性色a∨人人爽网站hdkp885 | 久久99精品久久久久久秒播蜜臀 | 9191在线视频| av大片在线无码免费 | 中文字幕一区二区三区有限公司 | 欧美成人免费一区二区 | 亚洲精品无码成人a片蜜臀 国产有码av | 亚洲欧美日韩中字视频三区 | 国产精品无码专区在线播放 | 性xxxxx欧美极品少妇 | 丁香花在线免费观看高清视频 | 国产综合区 | 欧美日韩国产中文字幕 | 日本免费网站视频 | 色欲综合久久躁天天躁 | 久久亚洲精品在线观看 | 国产精品亚洲一区二区在线观看 | julia一区二区在线播放 | 国产熟妇勾子乱视频 | 影音先锋人妻啪啪av资源网站 | 久久影院午夜伦手机不四虎卡 | 亚洲五月丁香综合视频 | 99热在 | 日韩人妻高清精品专区 | 中文字幕+乱码+中文字幕一区 | 天天干夜夜欢 | 亚洲欧美卡通动漫专区 | 国产综合在线播放 | 青草国产精品久久久久久 | 狠狠色狠狠色五月激情 | 美女黄18以下禁止观看 | 伊人精品久久 | 国产资源网站 | 人人插人人插人人爽 | 精品国产999 | 特级a欧美做爰片三人交 | 亚洲国产精品无码中文在线 | 中文字幕乱码熟妇五十中出 | 国产免费无遮挡吸乳视频在线观看 | 射一射| 欧美在线一二三区 | 日韩一区二区三区射精-百度 | 国产福利免费视频不卡 | 深夜av在线 | 久久久午夜精品理论片中文字幕 | 337p日本欧洲亚大胆精80 | 午夜男人| 黄色片在线视频 | 国产精品日韩高清伦字幕搜索 | 精品国偷自产在线视频 | 午夜影院污 | 日本xxxxxxxx免费视频 | 日本韩国野花视频爽3 | 国产一区二区三区又黄又爽 | 一区二区三区日韩视频 | 五月婷六月丁香狠狠躁狠狠爱 | 一区二区视频在线播放 | 中文字幕在线免费视频 | 亚洲а∨精品天堂在线 | 天堂最新资源 | 亚洲首页 | 日韩精品在线免费观看 | 日韩天堂av | 夜店三级在线播放hd | 国产精品久久久久久av | 岳的好大精品一区二区三区 | 国产精品天天看特色大片 | 国产精品国一国二在线 | 粗壮挺进邻居人妻无码 | 亚洲第一视频网站 | 97精品免费视频 | 日本亚洲欧美 | 国产免费av在线 | 少妇高潮九九九αv | 黄网站在线免费看 | 日韩黄色在线免费观看 | 欧美乱大交xxxxx潮喷 | 91高清在线免费观看 | 国产精品一区在线观看你懂的 | 日本青青草| 五月激情开心网 | 强奷妇系列中文字幕 | 黄色小视频在线 | 久久99精品久久久影院老司机 | 国产精品香蕉500g | 日韩精品久久久久久免费 | 欧洲丰满少妇做爰视频爽爽 | 国产av无码专区亚汌a√ | 久久亚洲a v | 亚洲小说视频 | 日日爱av| 亚洲乱码卡一卡二卡新区豆 | 人妻中文字系列无码专区 | 日本在线影院 | 久久久亚洲欧洲 | 40岁成熟女人牲交片20分钟 | 蜜臀久久精品99国产精品日本 | 老地方在线观看免费追剧网站 | 极品少妇粉嫩小泬v片可看 少妇一级淫片免费放正片 一级一毛片a级毛片 | 黑人欧美一区二区三区4p | 日韩高清不卡在线 | 四虎影视www在线播放 | 国产又黄又硬又湿又黄演员表 | 日本免费在线 | 国产女主播在线喷水呻吟 | 狠狠老司机 | 亚洲五月婷婷 | 国产成熟妇女性视频电影 | 农村真人裸体丰满少妇毛片 | 免费无码又爽又刺激高潮的动漫 | 男女做爰猛烈吃奶啪啪喷水网站 | 一本色道久久88亚洲精品综合 | 俄罗斯兽交黑人又大又粗水汪汪 | 午夜熟女插插xx免费视频 | 五月激情综合 | 国产成人精品亚洲日本在线桃色 | www.日本久久 | 男人的天堂免费av | 精品国产乱码久久久久久1区2区 | 欧美日韩不卡 | 国产成人精品一区二区三区福利 | 欧美亚洲免费 | 国产精品1 | 最新中文字幕久久 | 99视频热| 久久久亚洲成人 | 国产精品久久久久久久久久久新郎 | 蜜桃在线一区 | 久久99精品视频 | 少妇无码av无码专区 | 日本特黄特色特爽大片 | 国产精品自产拍在线观看中文 | 午夜精品成人一区二区 | 欧美成人一区二区三区高清 | 国产在线精品成人一区二区 | 狠狠干夜夜草 | aaaa一级片| 欧美牲交a欧美牲交aⅴ免费 | 欧美成人午夜视频 | 欧美精品一二三四区 | 免费观看羞羞视频网站 | 永久天堂网av手机版 | 国产成a人亚洲精v品无码性色 | 日韩在线中文字幕视频 | 亚洲精品在看在线观看高清 | 国产传媒av在线 | 亚洲人成人一区二区三区 | 欧美成人午夜精品 | 你懂的在线免费观看 | 91久久麻豆| 五月激情综合婷婷 | 欧美午夜理伦三级在线观看 | 88国产精品久久现线拍久青草 | 国产亚洲美女精品久久久久 | 亚洲成a人片在线 | 久久99久久久 | 精品国产乱码一区 | 99re6热视频这里只精品首页 | 天天天干天天天操 | 九色自拍视频在线观看 | 大胸美女污污污www网站 | 99精品视频免费在线观看 | 久久艹在线 | 国产精品午夜片在线观看 | 国产一区二区三区成人欧美日韩在线观看 | 国产主播av福利精品一区 | 香蕉久久综合 | 97超碰人人网 | 国产成人av无码永久免费一线天 | 国产成人亚洲精品无码青 | 国语对白少妇spa私密按摩 | 亚洲欧美成人久久一区 | 日本人dh亚洲人ⅹxx | av网址有哪些 | 伊人va| 亚洲国产成人精品无码区宅男 | 国产国语性生话播放 | 久久久无码精品一区二区三区蜜桃 | 成年无码按摩av片在线观看 | 免费av看 | 日本无翼乌邪恶大全彩h | 嫩草网| 美女自拍扣白浆 | 国产精品黄页免费高清在线观看 | 国产精品福利视频推女郎 | 又大又硬又爽免费视频 | 18禁超污无遮挡无码免费动态图 | 亚洲精品国产suv | 精品多毛少妇人妻av免费久久 | 成人久久综合 | 无码人妻一区二区三区免费n鬼沢 | 亚洲国产成人综合一区二区三区 | 国产一卡二卡三卡四卡视频版 | 在线最全导航精品福利av | 极品少妇被猛的白浆直喷白浆 | 国产又滑又嫩又白 | 国产精品黄 | 一区二区三区日韩视频在线观看 | 国产亚洲成av人在线观看导航 | 久久免费视频网 | 精品国产av一区二区三区 | 少妇高潮尖叫黑人激情在线 | 亚洲日韩乱码中文无码蜜桃臀网站 | 国产精品久久久爽爽爽麻豆色哟哟 | 手机永久无码国产av毛片 | 欧美黄站 | 苍井空亚洲精品aa片在线播放 | 精品一区二区三区四区外站 | 人人妻人人妻人人片色av | 精品女同一区二区 | 激情文学av | 亚洲欧美日韩中文字幕在线一区 | 无码天堂va亚洲va在线va | 日韩福利视频网 | 欧美人与zoxxxx视频 | 毛片视频软件 | 内射人妻视频国内 | 久久影院综合精品 | 快播黄色片 | 久久青青草原国产精品最新片 | 国产日韩专区 | 国产av麻豆mag剧集 | 国产美女爽到尿喷出来视频 | 国产成a人亚洲精品无码久久网 | 欧美少妇网| 精品成人佐山爱一区二区 | 色黄大色黄女片免费中国 | 国产精品人人爽人人爽 | 久久久午夜成人噜噜噜 | 人人爽人人澡人人人妻 | 无码专区一ⅴa亚洲v天堂 | 超清中文乱码字幕在线观看 | 黄色一级生活片 | 超碰影院在线 | 国产一级视频在线播放 | aa视频在线观看 | 久久久久久亚洲精品中文字幕 | 免费成人在线视频观看 | 免费观看又色又爽又黄6699 | 啊~我是sao货快cao我视频 | 欧美成aⅴ人高清免费 | 午夜欧美成人 | 中文国产 | 精品欧美一区二区三区免费观看 | 欧美丰满熟妇乱xxxxx网站 | 中文字幕一区精品 | 亚洲欧美综合精品久久成人网无毒不卡 | 手机在线观看免费av | 榴草视频 | 国产精品久久国产愉拍 | sm在线看 | 中文字幕日韩精品成人免费区二区 | 国产精品女人久久久 | 在线亚洲人成电影网站色www | 亚洲欧洲自拍拍偷精品 美利坚 | 六月激情婷婷 | 高潮白浆女日韩av免费看 | 伊人色综合一区二区三区 | 亚洲欧美综合在线观看 | 国产永久免费观看 | 一区二区日韩精品 | 视频在线观看91 | 在线观看成人小视频 | 天堂网视频在线 | 四虎黄色影库 | 拔擦拔擦8x国产精品免费 | 欧美老妇交乱视频在线观看 | 少妇bbr搡bbb搡bbb | 成人午夜看片 | 成年片色大黄全免费网站久久 | 免费视频爱爱太爽了 | 色视频久久 | 亚洲精品成人无码影院 | 性色香蕉av久久久天天网 | 久久综合中文网 | 亚洲精品老司机 | 日韩a片无码一区二区五区电影 | 伦理性a级台湾 | 国产骚熟| а天堂中文在线官网在线 | 国产一区二区精品在线 | 久久天天躁夜夜躁狠狠躁2022 | 国产成人8x视频网站入口 | 妓院一钑片免看黄大片 | 男女超碰| 国产免费无遮挡吸奶头视频 | 中文有码无码人妻在线短视频 | 国产精品乱子伦 | 成人免费一区二区三区视频网站 | 久久精品亚洲综合专区 | 久久无码中文字幕免费影院蜜桃 | 欧美性大战xxxxx久久久√ | 欧美99久久无码一区人妻a片 | 亚洲成人精选 | 少妇又色又爽又黄的视频 | 老女人裸体淫交 | 北条麻妃一区二区三区在线 | 18男女无套免费视频 | 少妇乳大丰满诱人成熟 大胆 | 中文字幕第 | 中文字幕漂亮人妻熟睡中被公侵犯 | 精品成人免费一区二区不卡 | 中文字幕韩国三级理论 | 神马久久久久久久久久久 | 久久99精品久久久久婷婷暖 | avt天堂网 | 国产视频中文字幕 | 日韩国产欧美亚洲v片 | 国产免费av一区二区 | 色婷婷亚洲六月婷婷中文字幕 | 亚洲美腿丝袜无码专区 | 亚洲国产美女精品久久久久∴ | 亚洲国产精品无码观看久久 | 无码毛片一区二区三区本码视频 | 国产精品国产高清国产av | 熟女丝袜潮喷内裤视频网站 | 97超级碰碰碰视频在线观看 | 亚洲情a成黄在线观看动漫尤物 | 和漂亮岳做爰3中文字幕 | 国产成人理论在线观看视频 | 亚洲区小说区激情区图片区 | 免费播放一区二区三区 | 伊人久久大香线蕉综合5g | 一出一进一爽一粗一大视频免费的 | 熟女人妻av五十路六十路 | 亚洲最新版av无码中文字幕 | 欧美一区二区三区在线观看视频 | 91九色国产ts另类人妖 | 97色资源| 亚洲成a∨人片在线观看无码 | 四川女人高潮毛片 | av在线免费观看网站 | 久久久精品日本 | 亚洲成人aa | 免费观看av毛片 | 久久久国产成人一区二区三区 | 亚洲欧洲日韩综合久久 | 日韩免费视频一区二区 | 91亚洲人人在字幕国产 | 久久国产成人免费网站 | 亚洲午夜av久久久精品影院色戒 | 丁香六月在线 | 午夜伦情电午夜伦情电影 | 国产成人av乱码在线观看 | 欧美全黄| 亚洲国产成人影院在线播放 | 最新永久无码av网址亚洲 | 欧美一区二区喷水白浆视频 | 国产制服丝袜欧美在线观看 | 成熟妇人a片免费看网站 | www.亚洲欧美| 色综久久综合桃花网国产精品 | 丰满少妇被猛烈进入无码 | 人妻系列无码专区免费视频 | 亚洲国产精华液网站w | 毛片高清| 亚洲日本中文字幕天天更新 | 夜夜操女人| 欧美激情videos | 国产精品视频专区 | www.激情 | 午夜色av| 亚洲欧美日韩国产成人 | 91人人爱| 日韩欧美午夜 | 色月婷婷 | 成年女人在线视频 | 一级黄色av | 国产成人8x人在线视频软件 | 精品国产午夜理论片不卡精品 | 久久久久久久人妻无码中文字幕爆 | 激情成人综合 | 亚洲欧美另类久久久精品2019 | 99久久精品国产成人一区二区 | 欧美亚洲一级片 | 欧美黄色试片 | 特级毛片全部免费播放器 | 一级黄色免费视频 | 亚洲精品国产一区二区的区别 | 国产精品一在线观看 | 毛片黄片免费观看 | 97超级碰碰碰视频在线观看 | 欧美在线观看不卡 | 日本熟妇色熟妇在线视频播放 | 中文字幕与公奈奈美 | 又大又长粗又爽又黄少妇视频 | 精品一区heyzo在线播放 | 国产一级片av| 国产亲子乱弄免费视频 | 亚洲免费人成在线视频观看 | 亚洲乱论视频 | 欧美人与物ⅴideos另类 | 国产精品久久久一区二区三区 | 亚洲国产成人久久综合 | 欧美 日本 国产 | 亚洲 丝袜 制服 欧美 另类 | 色哟色哟色精品 | 99久久精品国产系列 | 樱桃成人精品视频在线播放 | 亚洲三级在线中文字幕 | 中国女人内谢69xxxx视频 | 精品91视频 | 免费女人18a级毛片视频 | 你懂的在线免费观看 | 亚洲 精品 主播 自拍 | 99小视频| 国产美女裸体无遮挡免费视频 | 五月婷婷操 | 欧美日韩午夜 | 国产日韩第一页 | 午夜激情福利在线 | 99免费在线观看视频 | 艳妇荡乳豪妇荡乳av精东 | 国产精品亚洲а∨无码播放麻豆 | 爱色影音 | 亚洲另类在线观看 | 国产最新美女精品视频网站免费观看网址大全 | 国产免费一区二区三区vr | 色婷婷激情av | 亚洲丁香五月天缴情综合 | 中文字幕高清 | 性做爰高清视频在线观看视频 | 婷婷开心色四房播播 | 成人av中文解说水果派 | 两性色午夜视频免费无码 | 国产尤物在线视频 | 日韩视频精品 | 国产刚发育娇小性色xxxxx | 怡红院av一区二区三区 | 国产一级大片在线观看 | 男人天堂aaa | 九九午夜视频 | 天天操bb | 国产91孕妇孕交17部 | 狠狠色狠狠色综合日日不卡 | 九九99九九精彩6 | 狠狠操夜夜爽 | 欧美日韩国产精品 | 风流少妇又紧又爽又丰满 | 好紧好爽再进去一点在线视频 | www国产亚洲精品久久网站 | 少妇爆乳无码av无码波霸 | 午夜欧美福利视频 | 91精品免费| 国产午夜人做人免费视频中文 | 97人妻碰碰视频免费上线 | 曰本女人牲交高潮视频 | 久久亚洲国产成人精品无码区 | 日日碰狠狠躁 | 日产2021免费一二三四区在线 | 成人福利视频导航 | 免费无遮挡无码视频网站 | 国产农村妇女一区二区 | 国产亚洲自拍av | 丰满妇女毛茸茸刮毛 | av国产免费| 性欧美老肥妇喷水 | 亚洲 激情| 亚洲精品偷拍视频 | 台湾性dvd性色av | 国产999精品久久久久久 | 欧美一区二区三区的 | 三级毛片网 | 国产一区二区无码蜜芽精品 | 玩丰满高大邻居人妻无码 | 乱码丰满人妻一二三区 | 狠狠色狠狠综合久久 | 国产在视频 | 99免费精品视频 | 亚洲欧洲日产国码无码av一 | 性一交一乱一伧国产女士spa | 狠狠色狠狠色综合久久蜜芽 | 国产成人精品福利网站 | www国产在线观看 | 综合网伊人 | 日韩视频无码免费一区=区三区 | 久久日韩国产精品免费 | 久久www成人免费网站 | 色一情一乱一伦一视频免费看 | www中文在线 | 亚洲成人7777 | 一点不卡v中文字幕在线 | 亚洲深深色噜噜狠狠网站 | 我朋友的妈妈在线观看 | 天天射天天干 | 国产高清对白 | 国产精品爱久久久久久久小说 | 日本在线视频中文字幕 | 日产中文字暮在线理论 | 久久久久国产精品人妻aⅴ四季 | 99在线精品免费视频九九视 | 国产麻豆精品sm调教视频网站 | 欧美日韩精品一区二区天天拍小说 | 亚洲国产精品久久久天堂麻豆宅男 | 狠狠噜天天噜日日噜视频麻豆 | 亚洲一区二区三区中文字幕在线 | 91美女片黄在线观看 | 91av视屏 | av色欲无码人妻中文字幕 | 99精品视频一区在线观看 | 久操视频在线观看 | 影视先锋男人无码在线 | 国产精品萌白酱永久在线观看 | 国语对白刺激在线视频国产网红 | 婷婷无套内射影院 | 国产免费看又黄又大又污的胸 | 国产精品久久久久久99 | 另类专区av | 精品国产不卡一区二区三区 | 亚洲欧美成人另类激情 | 国产精品码在线观看0000 | 亚洲国产精品成人精品无码区蜜臀 | 岛国av在线免费 | 中文字幕精品久久久 | 亚洲国产综合无码一区 | 成人国产亚洲精品a区天堂 国产偷窥女洗浴在线观看 老妇激情毛片视频 | a黄色大片| 色污视频在线观看 | 99久久国产视频 | 国产精品久久久久久久久久新婚 | 四虎4hu永久免费入口 | 日韩黄色欧美 | 女女互摸互喷水高潮les呻吟 | 亚洲精品在看在线观看高清 | 偷拍男女做爰野战视频 | 国内精品久久人妻无码网站 | 意大利性经典xxxxx | 黄色亚洲 | 91嫩草亚洲精品 | 日韩在线免费 | 久久99操 | 曰韩av在线 | 国产一级黄色毛片 | 日韩在线观看中文字幕 | 亚洲依依成人亚洲社区 | 亚洲精品一区久久久久久 | 自拍偷自拍亚洲精品情侣 | 九色视频国产 | 粗大黑人巨茎大战欧美成人免费看 | 一本色道av久久精品+网站 | 天堂√在线中文最新版 | 肥臀浪妇太爽了快点再快点 | 国产又粗又大又爽 | 色婷婷精品久久二区二区蜜臂av | 成人电线在线播放无码 | 久久久久久国产精品免费免费男同 | 色爱无码av综合区老司机非洲 | 久久久久中文字幕 | 亚洲中文字幕日产乱码小说 | 97午夜影院 | 午夜精品小视频 | 19禁无遮挡啪啪无码网站性色 | 国产精品亚洲综合一区在线观看 | 又爽又黄又高潮的免费视频 | 综合婷婷久久 | 久草老司机 | 手机看片国产1024 | 免费国产黄色片 | www·91| 91看片淫黄大片91桃色 | 女人18毛片水真多免费看 | 人妻无码中文字幕永久有效视频 | 69国产精品久久久久久人妻 | 久久久久性色av毛片特级 | 亚洲一区二区视频在线观看 | 嫩草视频网站 | 男人的天堂视频网站 | 亚洲自偷自拍熟女另类 | 亚洲男人的天堂在线视频 | 久久爽久久爽久久av东京爽 | 黄视频网站在线 | 欧美三级免费看 | 久久精品国产第一区二区三区 | 日本少妇人妻xxxxx18 | 东方aⅴ免费观看久久av | 99爱精品视频在线观看免费 | 精品久久久久久国产 | 丰满少妇人妻久久久久久 | 亚洲综合色噜噜狠狠网站超清 | 无码乱人伦一区二区亚洲一 | 日韩区欧美区 | 国产精品乱 | 天天综合网色在线观看 | 91久久精 | 揉着我的奶从后面进去视频 | 久久午夜免费视频 | 亚洲中文字幕无码日韩 | 亚洲女毛多水多21p 久久婷婷热 | 久久综合a∨色老头免费观看 | 91天堂网| 欧美又大又黄又粗又长a片 成人午夜福利免费专区无码 | 欧美日韩综合一区二区 | 色偷偷亚洲男人的天堂 | 欧美人伦| 国产99久久久久久免费看 | 亚洲 中文字幕 日韩 无码 | 国产亚洲精aa在线观看see | 亚洲第一大网站 | 性欧美大战久久久久久久久 | 国产高清在线精品一本大道 | 激情小说视频图片 | 国产免费福利视频 | 无码av中文字幕免费放 | 九色在线播放 | 国产一区二区色 | 视频一区二区三区中文字幕 | 成年轻人网站色直接看 | 伊人成人动漫 | 噜噜噜私人影院 | 18禁动漫美女禁处被爆桶出水 | 亚洲校园激情春色 | 7777色鬼xxxx欧美色妇 | 欧美九九 | 亚洲精品国产精品乱码不卡 | 日本美妇 | 好逼天天操 | 国产人妖ts重口系列网站观看 | 亚洲成a∧人片在线播放黑人 | 麻豆国产一区二区三区四区 | 波多野42部无码喷潮 | 三级福利在线观看 | 色欲av亚洲一区无码少妇 | 国产乱子伦视频大全 | 久久中文字幕人妻av熟女 | 精品美女久久 | 欧美无人区码suv | 亚洲v国产v天堂a无码二区 | 亚洲色欧美 | 午夜精品久久久久久99热明星 | 欧美最猛黑人xxxxx猛交 | 免费成人av片 | 欧美污在线观看 | 国产精品片一区二区三区 | 乱人伦中文字幕成人网站在线 | 9l视频自拍九色9l视频最新 | 色88888久久久久久影院 | 亚洲精品美女久久久久9999 | 人妻忍着娇喘被中进中出视频 | 性欧美大胆免费播放 | 日本精品免费 | 国产精品久久久久久久久久嫩草 | 人人妻人人a爽人人模夜夜夜 | 欧美精品成人一区二区三区四区 | 久久亚洲精品无码va大香大香 | 好疼太大了太粗太长了视频 | 国产精品99久久久久久人免费 | 国产第三页 | 69xx免费视频 | 亚洲日本va午夜中文字幕久久 | 亚洲国产成人精品无码区宅男 | 二区影院 | 亚洲国产成人a精品不卡在线 | www.youjizz日本| 久在线精品视频线观看 | 大香交伊人| 成人毛片100部免费看 | 国产成人无码aⅴ片在线观看 | 精品一区二区三区无码av久久 | 少妇无码av无码专线区大牛影院 | 成人在线视频网 | 福利精品在线 | 人人添人人澡人人澡人人人爽 | 99艹| 永久免费看mv网站入口亚洲 | 狠狠干夜夜骑 | 高清国产一区二区三区在线 | 123成人网| 玖玖免费 | 西西人体www44rt大胆高清 | 国产亚洲欧美在线专区 | 狠狠色狠狠色综合日日五 | 一级片在线免费视频 | 婷婷三级 | 欧美精品成人一区二区三区四区 | 蜜桃精品成人影片 | 日本www网站色情乱码 | 国产亚洲日韩欧美另类丝瓜app | 手机在线看片你懂得 | 国产熟妇人妻精品一区二区动漫 | 麻豆传播媒体免费观看 | 国模雨珍浓密毛大尺度150p | 欧洲人免费视频网站在线 | 日日干视频| 黄床片30分钟免费视频教程 | 三级理论中文字幕在线播放 | 国产乱人伦精品一区二区三区 | 中文字幕精品av一区二区五区 | 啦啦啦www播放日本观看 | 性妲己一级淫片免费 | 欧美一级视频在线观看 | 四虎影视永久地址 | 天天爽夜夜爽人人爽曰 | 成人乱淫av日日摸夜夜爽 | 亚洲精品久久久乳夜夜欧美 | 久久美女福利视频 | 色香蕉在线 | 91国内在线观看 | 精品人妻少妇一区二区 | 日日日操操 | 久久国产精品99久久久久久口爆 | 国产高颜值大学生情侣酒店 | 国产av福利第一精品 | 成人黄色在线网站 | 日本国产网曝视频在线观看 | 亚洲人成网站在小说 | 欧美肥婆猛交 | 国产欧美va欧美va香蕉在线 | 蜜臀av无码精品人妻色欲 | 中文字幕一二 | 亚洲另类国产综合小说 | 人妻系列影片无码专区 | 国产熟妇精品高潮一区二区三区 | 亚洲国产一区精品 | 风间由美一区二区三区 | 精品无码成人久久久久久 | 很黄很色很污18禁免费 | 午夜免费学生在线观看av | 西西人体444www高清大胆 | 日韩欧美中文字幕在线播放 | 国产又大又黄又粗 | 天天躁夜夜躁av天天爽 | 欧美国产一级 | 欧美性少妇xxxx极品高清hd | av无码av在线a∨天堂app | 亚洲精品无人区 | 中国黄色1级片 | 人人草网站 | 色综合图| 精品超清无码视频在线观看 | 2020亚洲男人天堂 | 日韩精品久久久肉伦网站 | www.九色.com | 国内精品国内精品自线一二三区 | 性欧美videos另类极品小说 | 人妻精品久久久久中文字幕69 | 视频1区2区3区 | 亚洲啪| 国产精品国产三级国产aⅴ原创 | 嫩草影院久久 | 天堂在线中文资源 | 亚洲一本大道无码av天堂 | 给我免费播放毛片 | 亚洲嫩草影院 | 亚洲天堂性 | 成熟人妻av无码专区 | onlytease欧美丝袜福利 | 日日操网站 | 国产成人午夜福利在线视频 | 毛片资源网 | 国产国拍亚洲精品永久69 | 国产稚嫩高中生呻吟激情在线视频 | 欧美在线中文字幕 | 嫩草影院 | 91啦丨九色丨国产人 | 一级片在线免费观看 | 欧美极品一区 | 成人在线国产 | 2019日韩中文字幕mv | 你懂的福利视频 | 亚洲欧美成人中文日韩电影网站 | 精品一区精品二区制服 | 中文字幕日韩久久 | 亚欧洲精品在线视频 | 91成人网在线播放 | 少妇粉嫩小泬白浆流出 | 九九这里只有精品视频 | 欧美一级黄色片在线观看 | 免费又黄又爽又猛的毛片 | 亚洲图片三区 | 忘忧草在线社区www中国中文 | 亚洲丝袜第一页 | 樱桃国产成人精品视频 | 国产成人精品s8视频 | 红杏成人免费视频 | 白嫩嫩翘臀美女在线视频 | 久久www免费人成_网站 | 国产v69| 国产的毛片 | 亚洲国产成人久久一区二区三区 | 色偷偷人人澡久久超碰97 | 国产男女激情视频 | 日日躁狠狠躁狠狠爱 | 成人性生生活性生交5 | 深夜成人在线视频 | 96久久| 一本综合丁香日日狠狠色 | 五月丁香激激情亚洲综合 | 日本丰满少妇免费一区 | 亚洲国产日韩a在线乱码 | 天天躁日日躁很很很躁 | 日本少妇一级片 | 国产精品天干天干综合网 | 青春草视频在线免费观看 | 免费国产线观看免费观看 | 天天摸夜夜添狠狠添高潮出水 | 亚洲日本香蕉视频观看视频 | 国产欧美综合视频 | 五月婷婷丁香花 | 久青草国产97香蕉在线视频 | 亚洲成人天堂 | 男同志av | 国产精品国产三级国产av麻豆 | 色久综合网| 中文字幕日韩激情无码不卡码 | 亚洲成片在线观看12345 | 中文字幕日韩精品亚洲一区 | 日韩视频免费在线播放 | 国产成人无码免费视频97app | 无码人妻精品一区二区三区下载 | av专区在线 | 亚洲精品色情aⅴ色戒 | 91久久久久久久久久久久久 | 很色的网站| 亚洲综合色自拍一区 | 香蕉久久av一区二区三区app | 欧洲免费无码视频在线 | 好男人社区影院www 综合色九九 | 中文字幕久久精品无码 | 97se狠狠狠狼鲁亚洲综合网 | 午夜在线国产 | 人人网碰人人网超 | 亚洲中文字幕日产无码 | 午夜性视频国产牛牛视频 | 美女mm131午夜福利在线 | 亚洲视频在线免费看 | 久久97超碰色中文字幕 | 免费大片黄国产在线观看 | 午夜激情福利 | 天天操天天透 | 性做爰高清视频在线观看视频 | 亚洲精品国产高清在线观看 | 亚洲国产黄色 | 一级免费大片 | 91九色成人 | 亚洲乳大丰满中文字幕 | 欧美理伦黑寡妇艳妇 | 色综合影视| 亚洲国产精品久久人人爱潘金莲 | 偷国产乱人伦偷精品视频 | 亚洲日韩一中文字暮av | 国产人澡人澡澡澡人碰视 | 爱情岛av永久入口 | 西野翔中文字幕 | 北条麻妃av在线播放 | 久久精品国自产拍 | 亚洲综合无码一区二区三区不卡 | 四虎www4hu永久免费 | 亚洲成a人片在线观看无码下载 | 亚洲精品国产熟女久久久 | 国产在线永久视频 | 久久观看最新视频 | 在线 | 国产精品星空传媒丿 | 美女啪啪动态图 | aa黄色大片| 精品久久伊人99热超碰 | 国产精品国产三级国产试看 | 97超碰人人澡 | 丰满少妇高潮在线播放不卡 | 四虎网址在线 | 另类 综合 日韩 欧美 亚洲 | 婷婷射精av这里只有精品 | 午夜激情亚洲 | 麻豆精品一区综合av在线 | 欧美日韩精品一二三区 | 人人妻人人爽人人澡欧美一区 | 九九综合网 | 亚洲欧美色图 | 国产成人精品优优av | 精品欧洲av无码一区二区男男 | 久久夜色精品国产欧美一区麻豆 | 嫩草院一区二区乱码 | 无码人妻一区二区三区av | 国产欧美一级二级三级在线视频 | 亚洲一区二区成人 | 亚洲av成人精品毛片 | 国产97在线 | 日韩 | 亚洲国产成人91porn | 色五月丁香五月综合五月亚洲 | 亚洲va中文在线播放 | 国产精品亚洲а∨无码播放 | 91tv国产成人福利 | 超碰国产在线播放 | 国产精品视频a | 日韩欧美中文 | www国产亚洲精品久久网站 | 一起草av在线 | 韩国午夜理伦三级在线观看仙踪林 | 97超级碰碰碰视频在线观看 | 国产真实农村乱对白精彩 | 午夜精品一区二区三区免费 | 国产精品视频超级碰 | 天堂视频免费 | 婷婷网色偷偷久久久99超碰 | 国产成人精品免费视频大 | 污片网站在线观看 | 国产精品第7页 | 亚洲第6页| 色一级片 | 国产av激情无码久久天堂 | 日产精品卡2卡三卡乱码网站 | 国产又粗又大又爽的视频 | 日本手机在线视频 | 精品日产一卡2卡三卡4卡自拍 | 四虎海外 | 日本少妇三级hd激情在线观看 | 成人精品影院 | 日本一区二区不卡在线 | 中日韩无砖码一线二线 | 人妻夜夜爽天天爽一区二区 | 午夜少妇性色淫片特黄 | 久久天天躁狠狠躁夜夜2020 | 国产精品一区不卡 | 国产xxxx69真实实拍 | 国产精一品亚洲二区在线播放 | 久久精品免费一区二区 | 中文字幕久无码免费久久 | 伊人精品久久久久7777 | 欧美精品在线播放 | 亚洲一区日韩高清中文字幕亚洲 | 亚洲精品理论电影在线观看 | 中文在线日本 | 午夜福利精品导航凹凸 | 国产免费91视频 | 国产精品1688网站 | 总裁各种姿势顶弄呻吟h1v1 | 国产成+人+综合+亚洲欧美 | 优优人体大尺大尺无毒不卡 | 2021国产精品视频网站 | 久久精品色欧美aⅴ一区二区 | 强奷乱码中文字幕熟女一 | 影音先锋人妻啪啪av资源网站 | 精品精品国产男人的天堂 | 天堂资源8 | 三上悠亚亚洲一区 | 日本精品777777免费视频 | 光棍天堂av | 秋霞最新高清无码鲁丝片 | 色呦呦国产 | 日本www网站色情乱码 | 成人免费三级 | 2020av视频 | 2019久久视频这里有精品15 | 福利国产在线 | 欧美精品在线免费观看 | 亚洲伊人成无码综合网 | 人人上人人干 | 国产欧美一级二级三级在线视频 | 国产在线xxxx | 亚洲精品乱码久久久久久自慰 | 精品国产一区二区三区久久影院 | 99热er | 久国产精品韩国三级视频 | 久久久久欧美精品观看 | 综合一区在线 | 一级成人av | 欧美黑人欧美精品刺激 | av无码中文一区二区三区四区 | 不卡av电影在线 | 亚洲国产精品成人精品无码区 | 久久精品国产字幕高潮 | 日本囗交一级视频 | 久久99精品久久久久久秒播 | 丰满少妇又爽又紧又丰满在线观看 | 欧美人与动牲猛交a欧美精品 | 另类激情综合网 | 国产高清视频一区三区 | 中文天堂最新版资源www | 久久久g0g0午夜无码精品 | 男人天堂2023 | 成人精品少妇免费啪啪18 | 无码亲近乱子伦免费视频在线观看 | 十八18禁国产精品www | 久久草视频 | 美女精品久久久 | 国产在线1 | 嫩草网| 国产婷婷丁香五月缴情成人网 | 久久久久亚洲国产av麻豆 | av岬奈奈美一区二区三区 | 成年人网站黄色 | 在哪里可以看黄色片 | 福利视频第一区 | 欧美日韩se | 日日摸夜夜添夜夜添国产精品 | 国产99视频精品免费专区 | 91原创国产 | 97视频免费 | 国产成人精品999在线观看 | 中国少妇videos呻吟 | 一级欧美在线 | 真人做作爱视频 | 噜噜在线视频 | 亚洲区中文字幕 | 小说区亚洲综合第1页 | 国产卡二卡三卡四卡免费网址 | 日韩精品在线播放视频 | 91久久久久久久久久久久久 | 精品人妻系列无码人妻免费视频 | 久久在精品线影院 | 日日澡夜夜澡人人高潮 | 亚洲视频欧美视频 | 国产乱码免费卡1卡二卡3 | 豆国产95在线 | 亚洲 | 国产精品国产三级国产aⅴ9色 | 痉挛高潮喷水av无码免费 | 国产亚洲日韩在线aaaa | 中文字幕在线观看第一页 | 内射人妻无码色ab麻豆 | 国产精品对白久久久久粗 | 亚洲国产综合精品中文第一 | 久久国产劲暴∨内射新川 | 93精品国产乱码久久久 | 69av在线视频 | 高清成人综合 | 亚洲成人综合在线 | 久久中文娱乐网 | 美女视频福利 | 亚洲第一综合色 | 最新地址在线观看 | 成人在线激情网 | 美脚の诱脚舐め脚责91 | 亚洲深夜在线 | 免费无码午夜福利片 | 久久天天躁狠狠躁夜夜2020一 | 亚洲国产精品久久久久久 | 成人黄色片网站 | 久久久精品国产免费观看一区二区 | 日本国产网曝视频在线观看 | 国产爽视频在线观看视频 | 久久久久久艹 | 一级欧美一级日韩片 | 不卡一区二区在线 | 丁香婷婷综合激情 | 久久人人爽人人爽人人片av麻烦 | 精品h动漫无遮挡在线看中文 | 欧美顶级丰满另类xxx | 免费99精品国产人妻自在现线 | 国产一精品一av一免费 | 国产日韩大片 | 超碰在线资源 | 国产一区二区三区色淫影院 | 亚洲伊人色综合网站 | 性做爰高清视频在线观看视频 | 艹b视频在线观看 | 日韩成人在线视频 | 日韩 精品 综合 丝袜 制服 | 欧美成人三级在线播放 | 精品福利视频一区二区 | 日本久久网 | 欧美顶级少妇作爱 | 香港日本三级亚洲三级 | 黄色一级视频在线观看 | 国产精品久久..4399 | 一本色综合亚洲精品 | 亚洲处破女av一区二区中文 | 在线播放日韩精品 | 中文字幕永久在线 | 中文字幕乱码一区二区三区四区 | xxxxx毛片| 免费黄色在线视频网站 | 欧美大胆老熟妇乱子伦视频 | 色网址在线观看 | 亚洲日韩一区二区一无码 | 成人福利院 | 成人无号精品一区二区三区 | 亚洲精品国产美女在线一区 | 欧美第一黄网免费网站 | 国产精品久久久久久爽爽爽 | 日本专区在线 | 精品无人码麻豆乱码1区2区 | 97国产大学生情侣白嫩酒店 | 日韩午夜伦 | 2019av在线视频| 亚洲欧洲日产国码高潮αv 色综合色 | 日日噜噜噜夜夜爽爽狠狠蜜臀av | 永久av免费在线观看 | 爱情岛亚洲论坛入口网站 | 337p日本大胆欧洲亚洲色噜噜 | 噼里啪啦大全免费观看 | 少妇厨房愉情理9仑片视频下载 | 伊人三区 | 亚洲欧美人色综合婷婷久久 | 偷拍25位美女撒尿视频在线观看 | 欧美一级网| 人妻无码vs中文字幕久久av爆 | 久久91网 | 92国产精品 | 少妇娇喘呻吟出水好深一区二区 | 四虎成人精品永久免费av九九 | 国产精品高潮呻吟伦理之爱欲 | 青青成人| 日韩一区二区免费在线观看 | 丁香花视频高清在线观看 | 无修无码h里番在线播放网站 | 色婷婷综合和线在线 | 真实国产精品vr专区 | 2018久久| 亚洲女线av影视宅男宅女天堂 | 亚洲和欧洲一码二码区别7777 | 日韩久久精品一区二区三区 | 亚洲精品成人无码中文毛片不卡 | 久久在线视频免费观看 | 亚洲午夜av久久久精品影院色戒 | 在线一区av| 黑人操日本女优 | 色偷偷av男人的天堂 | 亚洲第一页在线 | 国产福利精品一区二区 | 亚洲精品你懂的在线观看 | 日本mv高清在线成人高清 | 激情视频一区 | 肉体裸交丰满丰满少妇在线观看 | 曰曰摸夜夜添夜夜添高潮出水 | 夜夜骑天天射 | 五月天av网站 | 天堂8资源8地址8 | 亚洲aⅴ无码专区在线观看春色 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 波多野结衣电车痴汉 | 日韩网站免费观看 | 亚洲欧美自偷自拍视频图片 | 亚洲一卡二新区乱码绿踪林 | 欧美小视频在线 | 欧美日韩在线视频免费 | 人人妻在人人 | 浴室人妻的情欲hd三级 | 国产日韩欧美不卡在线二区 | 天天操天天操天天操天天 | 在线观看国产精品电影 | 国产精品视频露脸 | 国产成人啪精品视频免费网 | 波多野结衣先锋影音 | 亚洲综合三区 | 爽爽影院在线免费观看 | 亚洲激情三级 | 欧美熟妇xxxxx欧美老妇不卡 | 久久精品国产亚洲一区二区 | 亚洲日韩久热中文字幕 | 亚洲国产日韩在线视频 | 天天干视频网站 | 日本中文字幕一区二区高清在线 | 少妇熟女高潮流白浆 | 久久不见久久见www电影免费 | 三级特黄60分钟在线播放 | 少妇一区二区视频 | 欧美一区二区三区,视频 | 无码日韩精品国产av | 亚洲视频网站在线 | 日韩在线你懂的 | 色综合欧美 | av在线免费观看一区二区 | 中出乱码av亚洲精品久久天堂 | 噜噜噜久久亚洲精品国产品91 | 亚洲免费网站观看视频 | 狠狠爱www人成狠狠爱综合网 | 思思久久96热在精品国产, | 麻豆国产97在线 | 欧美 | 国内国外精品影片无人区 | 一级特黄少妇高清毛片 | 久久精品一本到东京热 | 午夜欧美艳情视频免费看 | 亚洲成aⅴ人片在线观看 | 丰满岳妇乱中文字幕 | 人妻乳哺乳无码一区二区 | 亚洲 校园 欧美 国产 另类 | 色欲av蜜桃一区二区三 | 在线日本视频 | 国产免费永久精品无码 | 免费在线中文字幕 | 青娱乐极品视觉盛宴av | 日韩一区二区三区无码影院 | 男人都懂得网站 | 色婷婷综合在线 | 狠狠精品干练久久久无码中文字幕 | 日本最新偷拍小便视频 | 亚洲精品久久久久久中文字幕 | 日韩精品一区二区三区四区新区 | 免费国产黄网站在线观看视频 | 大地资源中文在线观看官网第二页 | 国产一区视频在线 | 自拍视频啪 | 美日韩中文字幕 | 久久久久久久久久综合 | 国产91在线视频观看 | 国产一区二区三区视频在线观看 | 丰满熟女人妻中文字幕免费 | 国产偷窥自拍视频 | 91国偷自产一区二区三区女王 | 亚洲中文欧美在线视频 | 国产真实伦实例对白 | 综合激情亚洲丁香社区 | 欧美日韩国产成人在线观看 | 欧美偷拍综合 | 欧美精品久久久久久久监狱 | 又爽又黄又无遮掩的免费视频 | 主播大秀一区二区三区 | 国产一级淫片a免费播放 | 黄色精品一区二区 | 免费的美女色视频网站 | 黄色小说在线视频 | 99riav.6国产情侣在线看 | 国产精品美女久久久免费 | 国产精品内射后入合集 | 都市激情自拍 | 亚洲aaaa级特黄毛片 | 国产麻无矿码直接观看 | 伊人婷婷六月狠狠狠去 | 亚洲天堂狠狠干 | 色惰日本视频网站www | 好爽毛片一区二区三区四 | 亚洲精品一区二区在线观看 | 午夜精品欧美 | 久久久香蕉视频 | 97久久国产露脸精品国产 | 国产又色又爽又黄刺激视频 | 亚洲一区二区三区四区在线 | 激烈的性高湖波多野结衣 | 涩涩视屏 | 少妇乳大丰满诱人成熟 大胆 | 日本成人一区二区三区 | 午夜亚洲国产理论片中文飘花 | 亚洲精品国产成人 | 欧美xxxxx做受vr91九色 | www天堂网 | 尤物av午夜精品一区二区入口 | 乱子伦农村xxxxbbb | 中文字幕av一区 | 免费无码黄十八禁网站在线观看 | 另类亚洲专区 | 久久精品国产精品青草 | 黄色国产免费 | 一个人看的www在线高清视频 | 黄色av免费网站 | 黑人巨大白妞出浆 | 久久国产欧美一区二区三区免费 | 人妻少妇精品视频无码综合 | 啪一啪射一射插一插 | 日韩在线视频导航 | 亚洲a级黄色片 | 精品视频一区二区三区中文字幕 | 国产亚洲午夜高清国产拍精品 | 国产精品久久久久久久久久久久久久 | 岛国午夜视频 | 一级又爽又黄的免费毛片视频 | 黑人干亚洲人 | 久久成人人人人精品欧 | 一级黄色国产 | 色综合中文字幕 | 永久免费观看国产裸体美女 | 日韩第一页在线 | 在线看的免费网站 | 欧美在线观看免费做受视频 | 免费看欧美黄色片 | 国产艳妇av在线出轨 | 又大又长粗又爽又黄少妇毛片 | 国产成人无码3000部 | 亚洲欧美视频在线 | 插鸡网站在线播放免费观看 | 日韩精品久久久久久久的张开腿让 | 成人精品一区二区户外勾搭野战 | 亚洲福利影院 | 天堂√最新版中文在线天堂 | 久久人人超碰精品caoporen | 裸体丰满白嫩大尺度尤物 | 中文字幕日本在线 | 久久久无码精品亚洲a片0000 | 国产精品一区二区在线观看网站 | 狼群社区www中文视频 | 日韩免费二区 | 日韩欧美在线观看 | 99精产国品一二三产区网站 | 中文字幕一区三级久久日本 | 又色又爽又激情的59视频 | 国产精品成人av久久 | 日韩av看| 亚洲国产精品久久久久4婷婷 | 久久精品无码一区二区app | 18禁无遮挡羞羞啪啪免费网站 | 天堂网久久 | 青青草国产久久精品 | 乡下人产国偷v产偷v自拍 | 国产成+人+综合+亚洲欧美丁香花 | 2019精品手机国产品在线 | 久久丫免费无码一区二区 | 久久精品极品盛宴观看 | 亚洲夜夜欢a∨一区二区三区 | 国产97超碰 | 日本乱偷人妻中文字幕在线 | 成人免费淫片 | 国产精品a级 | 黄色aaa视频 | 亚洲色18禁成人网站www | 国产精品一区饥渴老女人 | 激情综合亚洲色婷婷五月 | 一本久道视频一本久道 | 五月天综合社区 | 天天天干 | 精品日韩欧美一区二区三区 | 国产美女av在线 | 久久婷婷丁香五月综合五 | 国产爆乳无码视频在线观看3 | 免费黄色亚洲 | 国内揄拍国内精品人妻 | 国产婷婷在线视频 | 国产精品99久久久久久宅男 | 熟妇人妻无码xxx视频 | 亚洲综合无码一区二区 | 欧美性xxxxx极品老少 | 久久这里只精品国产免费99热4 | 尹人久久 | 69福利网| 3344永久在线观看视频免费 | 欧美一区二区色 | 国产又色又爽又黄刺激的视频 | 肉体粗喘娇吟国产91 | 国产亚洲精品国产福利你懂的 | 丰满少妇夜夜爽爽高潮水 | 欧美群p视频 | 国内精品伊人久久久久影院对白 | 再深点灬舒服灬太大了在线视频 | 日本一级黄色毛片 | 手机成人在线视频 | 无码av免费一区二区三区 | 国产精品粉嫩懂色av | 欧美成人一卡二卡 | 国产极品久久久久久久久 | 亚洲国内精品自在线影院牛牛 | 黑色丝袜老师色诱视频国产 | 亚洲女教师丝祙在线播放 | 色婷婷九月 | 天天操夜夜操狠狠操 | 91精品国产91久久久久游泳池 | 一本一本久久a久久精品综合麻豆 | 99av在线| 91国偷自产一区二区三区女王 | 婷婷丁香狼人久久大香线蕉 | 狠狠躁夜夜躁人人躁婷婷视频 | 男人添女人囗交做爰的技巧 | 一卡二卡3卡4卡视频免费播放 | 伊人久久97 | 色伊人亚洲综合网站 | 姑娘第5集在线观看免费好剧 | 国产成人无码一区二区在线播放 | 成人片黄网站a毛片免费观看 | 久久综合给综合给久久 | 中文字幕韩在线第一页 | 久久婷婷成人综合色综合 | 精品999在线 | 欧美精品乱码99久久蜜桃 | 亚洲精品有限 | 欧洲女人牲交性开放视频 | 狠狠色噜噜狠狠狠狠黑人 | 久久18p | 日韩精品一 | 欧美性视屏 | 人妻少妇乱子伦精品无码专区电影 | 成人午夜电影福利免费 | 狠狠躁18三区二区一区张津瑜 | 免费av网站在线 | 国内精品国产三级国产a久久 | 乱人伦人妻中文字幕无码久久网 | 久操视频精品 | 久久久久久久久久久久久9999 | 国产精品一区二区av片 | 在线 | 18精品免费1区2 | 免费1级做爰片在线观看爱 日本精品三级 | 国产极品免费 | 九一毛片 | 久久精品成人免费国产片小草 | 国产精品涩涩屋www在线观看 | 色悠久久久久久久综合网 | 亚洲免费a视频 | 人人澡人人看 | 中文字幕高清av | 欧美色欧美亚洲高清在线视频 | 国产成人在线视频 | 99久久精品国产综合一区 | 欧美v日韩v亚洲v最新在线 | 小鲜肉洗澡时自慰网站xnxx | 成人亚洲欧美一区二区三区 | 伊人久久精品无码麻豆一区 | 久久久久人妻啪啪一区二区 | 扒开女人内裤猛进猛出免费视频 | 久久免费看少妇高潮v片特黄 | 欧美福利在线观看 | 国产野外作爱视频播放 | 毛片基地在线播放 | 日韩精品一区二区在线观看 | 一亚洲乱亚洲乱妇23p | 亚洲国产成人av片在线播放 | 五月婷婷在线观看视频 | 国产激情无码一区二区app | 亚洲一区二区三区日本久久九 | 国产乱子伦一区二区三区四区五区 | 国产午夜福利在线观看视频_ | av蓝导航精品导航 | 国产情侣久久久久aⅴ免费 五月婷婷激情久久 | 成人区人妻精品一区二区不卡视频 | 无码精品尤物一区二区三区 | 国产成人亚洲精品无码电影不卡 | 男人的亚洲天堂 | 日日色综合 | 在线播放午夜理论片 | 国产黄色av片 | 欧美精品亚洲精品日韩专区va | 99re在线视频 | 欧美大片va欧美在线播放 | 亚洲最新版av无码中文字幕一区 | 成人亚洲欧美日韩在线观看 | 久久久久亚洲精品国产 | 国产一区二区三区成人欧美日韩在线观看 | 亚洲网站免费观看 | 韩日av片 | 日韩字幕在线 | 人人搞人人射 | 无码国内精品人妻少妇蜜桃视频 | 国产精品欧美久久久久无广告 | 日韩在线亚洲 | 日韩播放 | 婷婷色视频| 久久夜色精品国产亚洲 | 特殊重囗味sm在线观看无码 | 亚洲在线天堂 | 超碰久草| 尤物精品在线观看 | 日本一区二区三区精品福利视频 | 亚洲码国产岛国毛片在线 | 欧美乱人伦视频在线观看 | 国产无套护士在线观看 | 不卡日韩av | 春色激情 | 国产成人亚洲综合无码18禁h | 久久精品国产99国产精品 | 国产又粗又长又大又黄 | 最新国产一区 | 国产aⅴ爽av久久久久电影渣男 | 永久免费观看的毛片手机视频 | 精品视频一区二区在线观看 | 97超碰人人澡人人 | 国产又粗又猛又黄又爽无遮挡 | 国产精品免费一区二区三区四区 | 国产又色又爽又黄刺激的视频 | 国产免费无遮挡吸乳视频下载 | 欧美一级片 | 国产熟睡乱子伦视频在线观看 | 亚洲色 国产 欧美 日韩 | 视频在线日韩 | 久一精品 | 色97色 | 日本黄色播放器 | 香港日本三级亚洲三级 | 调教重口xx区一精品网站 | 久草在线视频免费资源观看 | 国产精品视频免费网站 | 国产日产欧产精品精品首页 | 中文字幕日本精品一区二区三区 | 久久久午夜爽爽一区二区三区三州 | 国产一区二区在线视频观看 | 欲色影视天天一区二区三区色香欲 | 精品久久久一区二区 | 国产精品国产亚洲区艳妇糸列短篇 | 老太婆黄色片 | 日韩一级片中文字幕 | 少妇精品无码一区二区免费视频 | 兔费看少妇性l交大片免费 天堂自拍 | 国产成人亚洲综合网色欲网久下载 | 亚洲伊人色 | 男人和女人上床视频 | 日本少妇做爰全过程毛片 | 亚洲图片自拍偷图区 | 宝贝腿开大点我添添公视频免费 | 少妇挑战三个黑人惨叫4p国语 | 中国一级a毛片 | 欧美三级精品 | 强开乳罩摸双乳吃奶羞羞www | 天天干天天草天天射 | 亚洲乱亚洲乱妇91p丰满 | 97黄色片 | 国产欧美va天堂在线观看视频下载 | 日韩有码第一页 | 青青草原综合久久大伊人精品 | 夜夜嗨国产露脸精品国产 | 久久草在线视频播放 | 狠狠干婷婷 | 伊人久久大香线蕉av色婷婷色 | 偷窥自拍色图 | 无遮挡裸体免费视频尤物 | 两性毛片 | 亚洲不乱码卡一卡二卡4卡5 | 不卡的av在线免费观看 | 亚洲乱码中文字幕在线 | 青青在线免费观看 | 久久亚洲中文字幕精品有坂深雪 | 九九热最新网址 | 亚洲人成综合 | 黄网站免费永久在线观看下载 | 老司机免费精品视频 | 国产精品对白交换绿帽视频 | 国产精品久久久久久婷婷 | 欧美国产精品一区二区三区 | 男女做爰猛烈啪啪吃奶图片 | 日韩欧美亚洲国产精品 | 99国内精品久久久久久久夜夜嗨 | 亚洲在线免费观看视频 | 精品卡一卡二卡3卡高清乱码 | 乱中年女人伦av二区 | 久久久久久久亚洲国产精品87 | 国产真实夫妇交换视频 | 久久久久久亚洲精品成人 | 色资源av中文无码先锋 | 亚洲一区二区免费视频 | 性虎精品无码av导航 | 天天躁日日躁狠狠躁av麻豆男男 | 国产a国产片 | 免费一区二区无码东京热 | 日韩aaa视频 | 亚洲精品国产成人av在线 | 性中国少妇熟妇xxxx农村 | 免费久久99精品国产自在现 | 天天精品综合 | 91精品国产综合久久久久久久久久 | 亚洲一级黄色大片 | 亚洲高清视频免费看 | 学生和学生三级在线看 | 91三级大片视频 | 欧美成人黄色片 | 18禁美女裸体网站无遮挡 | 忘忧草在线影院www日本 | 在线观看成人小视频 | 国产12页| 国产精品亚洲а∨天堂123 | 少妇被又大又粗猛烈进出视频 | 亚洲一区二区三区四区五区乱码 | 国产精品第五页 | 欧美日韩在线观看成人 | www国产成人 | 日本三级黄在线观看 | 最新欧美激情-推荐欧美激情 - 右手影院 | 天堂在线www天堂中文在线 | 欧美日韩无套内射另类 | 四虎免费最新在线永久4hu | 免费裸体黄网站18禁免费 | 国产午夜伦理片 | 亚洲自偷自偷偷色无码中文 | 久久精品免费一区二区 | 成人午夜在线观看 | 国产在线精品一区二区不卡 | 国产无遮挡裸露视频免费 | 99国产伦精品一区二区三区 | 国产一区欧美日韩 | 国产在线第一页 | 五月天久久久久久九一站片 | 国产精品一区二区在线看 | 亚洲天堂999 | 中文字幕在线乱 | 国产成人午夜福利在线视频 | 亚洲欧美日韩中文无线码 | 丰满少妇裸体性激交 | 欧美人体西西444www | 成人精品动漫一区二区三区 | 国产情侣真实54分钟在线 | 日本特黄特色大片免费视频网站 | 青青草针对华人 | 亚洲国产成人手机在线电影 | aaaaaabbbbbb毛片| 在线观看黄网址 | 日韩激情网 | 日韩乱码一区二区 | 日本美女一区二区三区 | 无码东京热一区二区三区 | 无码无遮挡又大又爽又黄的视频 | 国产黄色在线网站 | 在线天堂www在线资源下载 | 麻花传媒mv一二三区别在哪里看 | 佐山爱巨大黑人司机在线观看 | 老司机精品久久 | 日韩精品一区二区三区四区 | 成人禁污污啪啪入口 | 俺也去射 | 中文字幕欧美日韩va免费视频 | 亚洲巨乳自拍 | 婷婷色香五月综合激激情 | 日韩久久一区二区三区 | 人人妻人人a爽人人模夜夜夜 | 亚洲 丝袜 另类 校园 欧美 | 裸体女人高潮毛片 | 五月婷婷六月综合 | 久久综合狠狠综合久久综合88 | 亚洲日本中文字幕乱码中文 | 窝窝午夜看片国产精品 | 亚洲高潮喷水无码av电影 | 午夜精品久久久久久久99樱桃 | 久操91 | 中文无码一区二区三区在线观看 | 亚洲精品国产a久久久久久 亚洲精品国产av成拍色拍 | 日本九九热在线观看官网 | 综合激情网五月 | 产精品无码久久_亚洲国产精 | 黑人超碰 | 亚洲精品无码久久千人斩 | 国产人妖一区二区 | 国产二区视频 | 日韩高清在线观看不卡一区二区 | 日本在线不卡免费 | 北条麻妃一二三区 | 久青草国产视频 | 国产亚洲aⅴ在线电影 | 99re在线视频播放 | 久久综合五月丁香六月丁香 | 无码国产精品一区二区免费久久 | 天干夜天天夜天干天 | 人妻少妇乱孑伦无码专区蜜柚 | com超碰| 亚洲精品久久久蜜桃网尤妮丝 | 日本视频网 | 日本一级特黄高潮 | 精品无码人妻一区二区免费蜜桃 | 天天天天射 | 5x社区性生免费播放5x | 亚洲 欧美 国产 制服 动漫 | 国产精品国产a级 | 三上悠亚在线精品二区 | 欧美精品二区三区 | 亚洲视频一区二区在线观看 | 妇女av| 农村乱视频一区二区三区 | 欧美性色xxxx | 果冻传媒av精品一区 | 国产在线不卡视频 | 色一情一伦一区二区三 | 日韩欧美一区二区三区视频 | 日本一区二区免费在线 | 伊人久久大香线蕉av不卡 | 神马午夜福利不卡片在线 | 国产成人精品a视频免费福利 | 国产久一 | 无码国内精品人妻少妇蜜桃视频 | 奇米影视7777狠狠狠狠色 | 伊人久久九 | 精品伊人久久久大香线蕉下载 | 极品少妇第一次偷高潮哇哇大 | 九色蝌蚪国产 | 四虎成人精品一区二区免费网站 | 丰满人妻一区二区三区免费视频 | 中文字幕亚洲综合久久筱田步美 | 曰本女人牲交全视频播放 | 中国毛片免费观看 | 国产精品边做奶水狂喷 | 国产精品欧美日韩在线 | 综合亚洲欧美 | 中文在线永久免费观看 | 国产好爽…又高潮了毛片 | 欧美性猛交xxxx乱大交视频 | 欧美一区二区三区艳史 | 成人aaaaa日本黄绝录象片 | 国精精品一区二区三区有限公司 | 午夜精品久久久久久久四虎美女版 | 欧美精品一区二区在线播放 | 午夜福利一区二区三区高清视频 | 欧美日韩免费一区二区 | 手机日韩av | 羞国产在线拍揄自揄视频 | 国产免费一区二区视频 | 亚洲爽爽网 | 免费成人在线视频网站 | 天天躁日日躁狠狠躁婷婷 | 色8激情欧美成人久久综合电影 | 国产精品无码a∨精品影院app | 日韩黄色欧美 | 狠狠色噜噜狼狼狼色综合久 | 国产成人高清亚洲一区妲妃 | 开心综合网 | 亚洲天堂2017无码 | 一级黄色a视频 | 在线亚洲午夜理论av大片 | 在线 v亚洲 v欧美v 专区 | 亚洲中亚洲中文字幕无线乱码 | 国产现实无码av | 色一级片 | 超碰97av| 与子乱对白在线播放单亲国产 | 91九色porny蝌蚪| 色播综合 | 午夜在线不卡 | 亚洲一二三区视频 | 成人女人看片免费视频放人 | 极品另类欧美人妖 | 日本黄色特级片 | 奇米欧美| 四虎成人永久在线精品免费 | 久草视频免费在线 | 国产成人愉拍免费视频 | 午夜伦理视频 | 天天操夜夜骑 | 亚洲国产精品区 | 天天色综合天天色 | 久久不见久久见免费视频下载 | 中文人妻av高清一区二区 | 黑人粗长大战亚洲女 | 极品少妇被猛得白浆直流草莓视频 | 韩国三级丰满少妇高潮 | 国产日韩久久久久 | 又粗又硬又大又爽免费视频播放 | 亚洲欧美男人天堂 | 麻豆乱码国产一区二区三区 | 十八禁真人啪啪免费网站 | 毛片视频在线免费观看 | 男人的天堂三级 | 第一色综合| 日本按摩高潮 | 国产在线视频福利资源站 | 亚洲最大日夜无码中文字幕 | 丰满人妻一区二区三区无码av | 看免费的无码区特aa毛片 | 精品免费在线观看 | 日本不卡三区 | 亚洲激情在线 | 久久午夜夜伦鲁鲁片免费无码 | 97欧美视频 | 手机av在线网址 | 人妻精品制服丝袜久久久 | 日本内谢少妇xxxxx8老少交 | 国产美女午夜福利视频 | 国产揄拍国内精品对白 | 亚洲综合伊人久久综合 | 精品久久a| 香港三级午夜理伦三级 | 久久国产精品99精品国产987 | 日日鲁夜夜视频热线播放 | 亚洲乱妇老熟女爽到高潮的片 | 茄子视频国产在线观看 | 岛国av网站| av免费观看入口 | 免费在线成人网 | 免费一级片| 亚洲国产黄色 | 欧美丰满熟妇多毛xxxxx | 蜜臀av网站| 老司机福利精品 | 三级慰安女妇威狂放播 | 中文字幕天堂中文 | 中文资源在线天堂库8 | 酒店偷拍毛片高潮 | 亚洲国产aⅴ精品一区二区 欧美疯狂性受xxxxx喷水 | 色拍拍欧美视频在线看 | 黑人入室粗暴人妻中出 | 狠狠色噜噜狠狠狠狠97 | 午夜精品一区二区三区三上悠亚 | 久草一区二区 | 人妻免费一区二区三区最新 | 秋霞一区二区 | 欧美成人777 | 天天天操 | 爱色av·com| 亚洲美女做爰av人体图片 | 亚洲欧美日韩成人高清在线一区 | 精品久久久久一区 | 日本大尺度吃奶呻吟视频 | 91一区二区三区四区 | 成人午夜天 | 五月丁香久久综合网站 | 美女扒开尿口让男人桶 | 最新中文字幕在线 | 亚洲伊人色综合网站 | 亚洲人色 | 亚洲综合视频在线 | 国产女人夜夜春夜夜爽免费看 | 四虎最新紧急更新地址 | 亚洲精品无码成人片 | 欲色欲色天天天www 在线亚洲天堂 | 国产成人av在线婷婷不卡 | 国产农村妇女毛片精品 | 开心五月激情综合婷婷色 | 欧美三级免费网站 | 国产做爰又粗又大又爽动漫 | 中国黄色毛片 大片 | 摸进她的内裤里疯狂揉她动图视频 | 日本熟妇厨房xxxxx乱 | 曰韩一级片 | 色视频在线播放 | 粗大的内捧猛烈进出小视频 | 欧美精品在线观看一区二区 | 青青草视频偷拍 | 亚洲h成年动漫在线观看网站 | 四虎影视国产精品免费久久 | 婷婷爱五月天 | 精品久久久久久777米琪桃花 | 无翼乌18禁全肉肉无遮挡彩色 | 欧美成年人在线观看 | 亚洲精品在线观看网站 | 99热欧美| 特黄色毛片 | av天天网| 麻豆国产丝袜白领秘书在线观看 | 边吃奶边添下面好爽 | 免费无遮挡很爽很污很黄的网站 | 国产精品内射后入合集 | 成人在线视频网 | 国产精品一区视频 | 欧美综合自拍亚洲图久青草 | 欧美体内谢she精2性欧美 | 中文字幕高清在线中文字幕 | 男女啪啪做爰高潮www成人福利 | 亚洲精品无码mv在线观看网站 | 亚洲综合在线成人 | 国产亚洲小视频线播放 | 看一级黄色片 | 亚洲色播爱爱爱爱爱爱爱 | 一级视频在线观看免费 | 日本大片免a费观看视频的特点 | 乱人伦人妻中文字幕无码久久网 | 人妻 色综合网站 | 亚洲第一网站 | 天堂久久天堂av色综合 | 久久这里只有精品9 | 性史性农村dvd毛片 曰韩无码av片免费播放不卡 | 亚洲久在线 | 97se亚洲国产一区二区三区 | 爆乳喷奶水无码正在播放 | 午夜福利18以下勿进免费 | 可以免费观看av毛片 | 国产内射爽爽大片视频社区在线 | 97se色综合一区二区二区 | 狠狠人妻久久久久久综合蜜桃 | 久热国产精品视频一区二区三区 | 91精品视频免费看 | 51精品久久久久久久蜜臀 | 97久久超碰亚洲视觉盛宴 | 亚洲欧洲日产韩国2020 | 91亚洲国产成人久久精品网站 | 久久婷婷五月国产色综合 | 99插插 | 久久久婷婷五月亚洲97色 | 中文字幕一区二区三区第十负 | 久久福利视频导航 | 国产情侣作爱视频免费观看 | 久久69精品久久久久久hb | 黄色aa网站| 国产精品天堂avav在线观看 | 亚洲拍拍视频 | 80s毛片 | 女上男下啪啪激烈高潮无遮盖 | 欧美日一级片 | 国产福利视频在线观看 | 亚洲人成77777 | 中文字幕人乱码中文字幕 | 69国产精品 | 欧美最猛性xxxxx亚洲精品 | 国产精品乱码一区二区视频 | 日日摸夜夜添夜夜无码区 | 国产人成无码视频在线观看 | 亚洲 欧美 偷自乱 图片 | 美女自拍视频 | 国产精品久久久影视青草 | 韩国精品视频一区二区在线播放 | 国产一区二区三区色 | 国产成人精品精品日本亚洲 | 桃色视频网址 | 欧美视频一区在线 | 夜夜躁日日躁狠狠久久88av | 天天狠天天透天干天天怕∴ | 一级a毛片| 波多野结av在线无码中文免费 | 国产黄色在线观看 | 国产偷窥老熟盗摄视频 | 中文字幕息子101在线 | 另类老妇性bbwbbwbbw | 亚洲影视在线观看 | 国产一级黄色大片 | 欧美性猛交xxx乱大交3 | 一本到亚洲中文无码av | 久久精品av一区二区三 | 日本熟妇美熟bbw | 精品久久久久久一区二区里番 | 成人h无码动漫在线观看 | 天天综合网天天综合色 | 极品魔鬼身材女神啪啪96 | 久久久久四虎精品免费入口 | 人人艹人人爱 | 天堂av网手机版 | 午夜精品久久久久久久91蜜桃 | 你懂的福利视频 | 亚洲富人天堂视频 | 日本一二三区视频 | 欧美jizzhd精品欧美巨大 | 就爱色站| 人妻免费一区二区三区最新 | 91久久久精品国产一区二区蜜臀 | 91精品国产乱码在线观看 | 国产大片内射1区2区 | 成人国产综合 | 久婷婷 | 在线 | 国产精品99传媒丿 | 久久香蕉精品 | 国产又a又黄又潮娇喘视频 精品伊人久久 | 性色av一区二区三区免费看开蚌 | 久久亚洲高清 | 极品少妇被猛得白浆直流草莓视频 | 国产精品久久久久久久久快鸭 | 亚洲国产一区二区在线 | 国产免费拔擦拔擦8x高清在线人 | 狠狠狠久久久 | 国产人免费人成免费视频 | 国产成人女人毛片视频在线 | 青青草视频偷拍 | 97伊人超碰| 国产偷国产偷av亚洲清高 | 嫩草影院永久入口 | 美女网站免费视频 | 欧美人与性禽动交情品 | 成人亚洲性情网站www在线观看 | 啪啪.com | 99久久精品免费看国产免费粉嫩 | 色婷婷激情一区二区三区 | 依人在线| 亚洲精品亚洲人成在线观看下载 | 97日日碰人人模人人澡分享吧 | 久久久综合色 | 亚洲aⅴ天堂av天堂无码麻豆 | 欧洲熟妇色xxxx欧美老妇软件 | 日韩福利视频一区 | 欧美三级日韩 | 丰满女人与性猛交视频 | 欧美猛少妇色xxxxx欧美片 | 艳妇乳肉豪妇荡欧美片堕落 | 嫩草视频在线看 | 在线a∨ |