成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁(yè) > 知識(shí)庫(kù) > CI框架(CodeIgniter)操作redis的方法詳解

CI框架(CodeIgniter)操作redis的方法詳解

熱門標(biāo)簽:400電話辦理福州市 離石地圖標(biāo)注 南寧高頻外呼回?fù)芟到y(tǒng)哪家好 江蘇外呼電銷機(jī)器人報(bào)價(jià) 深圳外呼系統(tǒng)收費(fèi) 長(zhǎng)沙crm外呼系統(tǒng)業(yè)務(wù) 電話機(jī)器人危險(xiǎn)嗎 專業(yè)電話機(jī)器人批發(fā)商 400電話申請(qǐng)方法收費(fèi)

本文實(shí)例講述了CI框架(CodeIgniter)操作redis的方法。分享給大家供大家參考,具體如下:

1. 在autoload.php 中加入 如下配置行

$autoload['libraries'] = array('redis');

2. 在/application/config 中加入文件 redis.php

文件內(nèi)容如下:

?php
// Default connection group
$config['redis_default']['host'] = 'localhost';   // IP address or host
$config['redis_default']['port'] = '6379';     // Default Redis port is 6379
$config['redis_default']['password'] = '';     // Can be left empty when the server does not require AUTH
$config['redis_slave']['host'] = '';
$config['redis_slave']['port'] = '6379';
$config['redis_slave']['password'] = '';
?>

3. 在 /application/libraries 中加入文件 Redis.php

文件來(lái)源:redis庫(kù)文件包

文件內(nèi)容:

?php defined('BASEPATH') OR exit('No direct script access allowed');
/**
 * CodeIgniter Redis
 *
 * A CodeIgniter library to interact with Redis
 *
 * @package     CodeIgniter
 * @category    Libraries
 * @author     Joël Cox
 * @version     v0.4
 * @link      https://github.com/joelcox/codeigniter-redis
 * @link      http://joelcox.nl
 * @license     http://www.opensource.org/licenses/mit-license.html
 */
class CI_Redis {
  /**
   * CI
   *
   * CodeIgniter instance
   * @var   object
   */
  private $_ci;
  /**
   * Connection
   *
   * Socket handle to the Redis server
   * @var   handle
   */
  private $_connection;
  /**
   * Debug
   *
   * Whether we're in debug mode
   * @var   bool
   */
  public $debug = FALSE;
  /**
   * CRLF
   *
   * User to delimiter arguments in the Redis unified request protocol
   * @var   string
   */
  const CRLF = "\r\n";
  /**
   * Constructor
   */
  public function __construct($params = array())
  {
    log_message('debug', 'Redis Class Initialized');
    $this->_ci = get_instance();
    $this->_ci->load->config('redis');
    // Check for the different styles of configs
    if (isset($params['connection_group']))
    {
      // Specific connection group
      $config = $this->_ci->config->item('redis_' . $params['connection_group']);
    }
    elseif (is_array($this->_ci->config->item('redis_default')))
    {
      // Default connection group
      $config = $this->_ci->config->item('redis_default');
    }
    else
    {
      // Original config style
      $config = array(
        'host' => $this->_ci->config->item('redis_host'),
        'port' => $this->_ci->config->item('redis_port'),
        'password' => $this->_ci->config->item('redis_password'),
      );
    }
    // Connect to Redis
    $this->_connection = @fsockopen($config['host'], $config['port'], $errno, $errstr, 3);
    // Display an error message if connection failed
    if ( ! $this->_connection)
    {
      show_error('Could not connect to Redis at ' . $config['host'] . ':' . $config['port']);
    }
    // Authenticate when needed
    $this->_auth($config['password']);
  }
  /**
   * Call
   *
   * Catches all undefined methods
   * @param  string method that was called
   * @param  mixed  arguments that were passed
   * @return mixed
   */
  public function __call($method, $arguments)
  {
    $request = $this->_encode_request($method, $arguments);
    return $this->_write_request($request);
  }
  /**
   * Command
   *
   * Generic command function, just like redis-cli
   * @param  string full command as a string
   * @return mixed
   */
  public function command($string)
  {
    $slices = explode(' ', $string);
    $request = $this->_encode_request($slices[0], array_slice($slices, 1));
    return $this->_write_request($request);
  }
  /**
   * Auth
   *
   * Runs the AUTH command when password is set
   * @param  string password for the Redis server
   * @return void
   */
  private function _auth($password = NULL)
  {
    // Authenticate when password is set
    if ( ! empty($password))
    {
      // See if we authenticated successfully
      if ($this->command('AUTH ' . $password) !== 'OK')
      {
        show_error('Could not connect to Redis, invalid password');
      }
    }
  }
  /**
   * Clear Socket
   *
   * Empty the socket buffer of theconnection so data does not bleed over
   * to the next message.
   * @return NULL
   */
  public function _clear_socket()
  {
    // Read one character at a time
    fflush($this->_connection);
    return NULL;
  }
  /**
   * Write request
   *
   * Write the formatted request to the socket
   * @param  string request to be written
   * @return mixed
   */
  private function _write_request($request)
  {
    if ($this->debug === TRUE)
    {
      log_message('debug', 'Redis unified request: ' . $request);
    }
    // How long is the data we are sending?
    $value_length = strlen($request);
    // If there isn't any data, just return
    if ($value_length = 0) return NULL;
    // Handle reply if data is less than or equal to 8192 bytes, just send it over
    if ($value_length = 8192)
    {
      fwrite($this->_connection, $request);
    }
    else
    {
      while ($value_length > 0)
      {
        // If we have more than 8192, only take what we can handle
        if ($value_length > 8192) {
          $send_size = 8192;
        }
        // Send our chunk
        fwrite($this->_connection, $request, $send_size);
        // How much is left to send?
        $value_length = $value_length - $send_size;
        // Remove data sent from outgoing data
        $request = substr($request, $send_size, $value_length);
      }
    }
    // Read our request into a variable
    $return = $this->_read_request();
    // Clear the socket so no data remains in the buffer
    $this->_clear_socket();
    return $return;
  }
  /**
   * Read request
   *
   * Route each response to the appropriate interpreter
   * @return mixed
   */
  private function _read_request()
  {
    $type = fgetc($this->_connection);
    // Times we will attempt to trash bad data in search of a
    // valid type indicator
    $response_types = array('+', '-', ':', '$', '*');
    $type_error_limit = 50;
    $try = 0;
    while ( ! in_array($type, $response_types)  $try  $type_error_limit)
    {
      $type = fgetc($this->_connection);
      $try++;
    }
    if ($this->debug === TRUE)
    {
      log_message('debug', 'Redis response type: ' . $type);
    }
    switch ($type)
    {
      case '+':
        return $this->_single_line_reply();
        break;
      case '-':
        return $this->_error_reply();
        break;
      case ':':
        return $this->_integer_reply();
        break;
      case '$':
        return $this->_bulk_reply();
        break;
      case '*':
        return $this->_multi_bulk_reply();
        break;
      default:
        return FALSE;
    }
  }
  /**
   * Single line reply
   *
   * Reads the reply before the EOF
   * @return mixed
   */
  private function _single_line_reply()
  {
    $value = rtrim(fgets($this->_connection));
    $this->_clear_socket();
    return $value;
  }
  /**
   * Error reply
   *
   * Write error to log and return false
   * @return bool
   */
  private function _error_reply()
  {
    // Extract the error message
    $error = substr(rtrim(fgets($this->_connection)), 4);
    log_message('error', 'Redis server returned an error: ' . $error);
    $this->_clear_socket();
    return FALSE;
  }
  /**
   * Integer reply
   *
   * Returns an integer reply
   * @return int
   */
  private function _integer_reply()
  {
    return (int) rtrim(fgets($this->_connection));
  }
  /**
   * Bulk reply
   *
   * Reads to amount of bits to be read and returns value within
   * the pointer and the ending delimiter
   * @return string
   */
  private function _bulk_reply()
  {
    // How long is the data we are reading? Support waiting for data to
    // fully return from redis and enter into socket.
    $value_length = (int) fgets($this->_connection);
    if ($value_length = 0) return NULL;
    $response = '';
    // Handle reply if data is less than or equal to 8192 bytes, just read it
    if ($value_length = 8192)
    {
      $response = fread($this->_connection, $value_length);
    }
    else
    {
      $data_left = $value_length;
        // If the data left is greater than 0, keep reading
        while ($data_left > 0 ) {
        // If we have more than 8192, only take what we can handle
        if ($data_left > 8192)
        {
          $read_size = 8192;
        }
        else
        {
          $read_size = $data_left;
        }
        // Read our chunk
        $chunk = fread($this->_connection, $read_size);
        // Support reading very long responses that don't come through
        // in one fread
        $chunk_length = strlen($chunk);
        while ($chunk_length  $read_size)
        {
          $keep_reading = $read_size - $chunk_length;
          $chunk .= fread($this->_connection, $keep_reading);
          $chunk_length = strlen($chunk);
        }
        $response .= $chunk;
        // Re-calculate how much data is left to read
        $data_left = $data_left - $read_size;
      }
    }
    // Clear the socket in case anything remains in there
    $this->_clear_socket();
  return isset($response) ? $response : FALSE;
  }
  /**
   * Multi bulk reply
   *
   * Reads n bulk replies and return them as an array
   * @return array
   */
  private function _multi_bulk_reply()
  {
    // Get the amount of values in the response
    $response = array();
    $total_values = (int) fgets($this->_connection);
    // Loop all values and add them to the response array
    for ($i = 0; $i  $total_values; $i++)
    {
      // Remove the new line and carriage return before reading
      // another bulk reply
      fgets($this->_connection, 2);
      // If this is a second or later pass, we also need to get rid
      // of the $ indicating a new bulk reply and its length.
      if ($i > 0)
      {
        fgets($this->_connection);
        fgets($this->_connection, 2);
      }
      $response[] = $this->_bulk_reply();
    }
    // Clear the socket
    $this->_clear_socket();
    return isset($response) ? $response : FALSE;
  }
  /**
   * Encode request
   *
   * Encode plain-text request to Redis protocol format
   * @link  http://redis.io/topics/protocol
   * @param  string request in plain-text
   * @param  string additional data (string or array, depending on the request)
   * @return string encoded according to Redis protocol
   */
  private function _encode_request($method, $arguments = array())
  {
    $request = '$' . strlen($method) . self::CRLF . $method . self::CRLF;
    $_args = 1;
    // Append all the arguments in the request string
    foreach ($arguments as $argument)
    {
      if (is_array($argument))
      {
        foreach ($argument as $key => $value)
        {
          // Prepend the key if we're dealing with a hash
          if (!is_int($key))
          {
            $request .= '$' . strlen($key) . self::CRLF . $key . self::CRLF;
            $_args++;
          }
          $request .= '$' . strlen($value) . self::CRLF . $value . self::CRLF;
          $_args++;
        }
      }
      else
      {
        $request .= '$' . strlen($argument) . self::CRLF . $argument . self::CRLF;
        $_args++;
      }
    }
    $request = '*' . $_args . self::CRLF . $request;
    return $request;
  }
  /**
   * Info
   *
   * Overrides the default Redis response, so we can return a nice array
   * of the server info instead of a nasty string.
   * @return array
   */
  public function info($section = FALSE)
  {
    if ($section !== FALSE)
    {
      $response = $this->command('INFO '. $section);
    }
    else
    {
      $response = $this->command('INFO');
    }
    $data = array();
    $lines = explode(self::CRLF, $response);
    // Extract the key and value
    foreach ($lines as $line)
    {
      $parts = explode(':', $line);
      if (isset($parts[1])) $data[$parts[0]] = $parts[1];
    }
    return $data;
  }
  /**
   * Debug
   *
   * Set debug mode
   * @param  bool  set the debug mode on or off
   * @return void
   */
  public function debug($bool)
  {
    $this->debug = (bool) $bool;
  }
  /**
   * Destructor
   *
   * Kill the connection
   * @return void
   */
  function __destruct()
  {
    if ($this->_connection) fclose($this->_connection);
  }
}
?>

4. 然后你就可以 在文件中這樣使用了

?php
  if($this->redis->get('mark_'.$gid) === null){ //如果未設(shè)置
    $this->redis->set('mark_'.$gid, $giftnum); //設(shè)置
    $this->redis->EXPIRE('mark_'.$gid, 30*60); //設(shè)置過(guò)期時(shí)間 (30 min)
  }else{
    $giftnum = $this->redis->get('mark_'.$gid); //從緩存中直接讀取對(duì)應(yīng)的值
  }
?>

5. 重點(diǎn)是你所需要的 東東在這里很詳細(xì)的講解了

所有要用的函數(shù)只需要更改 $redis  ==> $this->redis

php中操作redis庫(kù)函數(shù)功能與用法可參考本站https://www.jb51.net/article/33887.htm

需要注意的是:

(1)你的本地需要安裝 redis服務(wù)(windows安裝)
(2)并開啟redis 服務(wù)
(3)不管是windows 還是linux 都需要裝 php對(duì)應(yīng)版本的 redis擴(kuò)展

更多關(guān)于CodeIgniter相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《codeigniter入門教程》、《CI(CodeIgniter)框架進(jìn)階教程》、《php優(yōu)秀開發(fā)框架總結(jié)》、《ThinkPHP入門教程》、《ThinkPHP常用方法總結(jié)》、《Zend FrameWork框架入門教程》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《php+mysql數(shù)據(jù)庫(kù)操作入門教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》

希望本文所述對(duì)大家基于CodeIgniter框架的PHP程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • Thinkphp 3.2框架使用Redis的方法詳解
  • thinkPHP框架通過(guò)Redis實(shí)現(xiàn)增刪改查操作的方法詳解
  • thinkphp5框架擴(kuò)展redis類方法示例
  • Spring Boot單元測(cè)試中使用mockito框架mock掉整個(gè)RedisTemplate的示例
  • Laravel框架使用Redis的方法詳解
  • Python的Flask框架使用Redis做數(shù)據(jù)緩存的配置方法
  • PHP的Laravel框架結(jié)合MySQL與Redis數(shù)據(jù)庫(kù)的使用部署
  • Redis框架Jedis及Redisson對(duì)比解析

標(biāo)簽:南昌 白酒營(yíng)銷 濱州 太原 南京 興安盟 曲靖 株洲

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《CI框架(CodeIgniter)操作redis的方法詳解》,本文關(guān)鍵詞  框架,CodeIgniter,操作,redis,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《CI框架(CodeIgniter)操作redis的方法詳解》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于CI框架(CodeIgniter)操作redis的方法詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    九九热精品免费视频| 中文字幕日韩欧美在线视频| 欧美色图激情小说| 欧美日韩精品中文字幕一区二区| 日本中文字幕二区| 日本一区免费视频| 国产传媒在线观看| 狠狠操视频网| 久久综合国产精品| 丁香高清在线观看完整电影视频| 亚洲一区二区三区免费视频| 国产亚洲成av人在线观看导航| 国产一区 二区 三区一级| 久久精品国产第一区二区三区最新章节| 成人免费高清在线观看| 九七伦理97伦理| 亚洲777理论| 国产成人在线视频网站| 国产18精品乱码免费看| 色av吧综合网| 91欧美精品午夜性色福利在线| 中文字幕在线一区二区三区| 日韩精品日韩在线观看| 成年人视频免费在线播放| www成人免费视频| 欧美久久久影院| 美腿丝袜亚洲图片| 国产毛片一区二区三区va在线| 少妇荡乳情欲办公室456视频| 色香欲www7777综合网| 国产精品久久国产精麻豆96堂| palipali轻量版永久网页入口| 成人久久久精品国产乱码一区二区| 国产精品最新乱视频二区| 中国 免费 av| 国产精品一区二区三区在线播放| 亚洲理伦在线| 精品在线视频一区二区| 免费在线视频欧美| 亚洲天堂网在线视频| 超碰影院在线观看| 成人动漫一区二区在线| 国产成人免费视频| 国产精品乱码久久久久| 亚洲午夜电影在线观看| 国产精品毛片在线看| 日韩在线激情| 91成人在线观看喷潮| 91精品国偷自产在线电影| 美女福利精品视频| 在线视频一区二区三| 五月婷婷在线播放| 亚洲社区在线观看| 日本黄区免费视频观看| 91av精品| 99热久久这里只有精品| av电影免费在线| 亚洲国产精品福利| 男人的天堂在线播放| 中文字幕一区二区5566日韩| 欧美午夜久久| 91久久青草| 香蕉视频免费在线播放| 亚洲欧美精品suv| 波多野结衣在线网站| 手机在线免费av| 丁香桃色午夜亚洲一区二区三区| 黄视频在线观看网站| 999人在线精品播放视频| 丰满岳乱妇一区二区三区| 中文字幕乱码亚洲无线精品一区| 久久久久北条麻妃免费看| 国产91av在线播放| 欧美日韩激情电影| jizz.日本| 五月天综合激情网| 无码国产精品96久久久久| 在线视频福利一区| 日韩成人精品一区二区三区| 青青草国产精品97视觉盛宴| 人人干人人草| 国产寡妇色xxⅹ交肉视频| 男人天堂资源在线| 国产欧美日韩激情| 91ts人妖另类精品系列| 日日草天天干| 日韩video| 性欧美丰满熟妇xxxx性久久久| 色综合久久久久久中文网| 成人黄视频在线观看| 国产高清自拍一区| 插我舔内射18免费视频| av在线免费观看国产| 国产成人免费看一级大黄| 亚洲韩日在线| 欧美性猛交xxxx偷拍洗澡| 黑人巨大狂躁日本妞在线观看| 国产精品自拍亚洲| 漂亮人妻被黑人久久精品| 欧洲毛片在线视频免费观看| 欧美一区二区三区四区在线| 91高清国产| 国产伦精品一区二区三区高清版| 成年人网站在线| 成人高清在线观看| 欧美极品色图| 91久色国产| 丝瓜app色版网站观看| 国产精品福利导航| 东京干手机福利视频| 国产乱码精品一区二区三区亚洲人| 亚洲专区区免费| 国产一区二区三区精品在线| 第一会所亚洲原创| 成人av动漫| 视频在线观看入口黄最新永久免费国产| 蜜桃臀av在线| 夜色资源网av在先锋网站观看| 男人和女人做事情在线视频网站免费观看| 中日韩精品视频在线观看| 国产精品久久久久91| 同性恋视频一区| 国产一区免费视频| 狂野欧美性猛交xxxx乱大交| www.久久综合| 国产精品久久久久aaaa樱花| 亚洲а∨精品天堂在线| 国产香蕉97碰碰久久人人| 日本h视频在线观看| 美女毛片免费看| 99国产超薄肉色丝袜交足的后果| 日韩欧美一二三| 欧美黑人猛交的在线视频| 欧美亚洲色图校园春色| av在线免费观看网| 国产午夜精品无码| 97se亚洲国产一区二区三区| 一级毛片在线看| 色欧美片视频在线观看| 成人午夜激情免费视频| 天堂v在线视频| 免费看欧美黑人毛片| 亚洲精品国产suv| 欧美午夜精品| 邪恶网站在线观看| 成人一级视频在线观看| 亚洲第一页在线视频| 成人网在线视频| 日日摸夜夜添夜夜添毛片av| 不卡视频在线观看| 美女被c出白浆| 国内精品久久久久久影院老狼| 欧美日韩一区二| 一区二区三区四区视频免费观看| 精品一区二区在线观看视频| 国产一卡二卡3卡4卡四卡在线| 8x8x8国产精品| 日本高清不卡aⅴ免费网站| 黄色毛片在线观看| 激情欧美一区二区| 国产美女在线观看| 欧美一级做性受免费大片免费| 欧美三级电影在线| 精品日韩视频| 嗯啊主人调教在线播放视频| 伊人成综合网yiren22| 日韩不卡在线观看| 日韩高清中文字幕一区二区| 大香伊人久久精品一区二区| 特级特黄刘亦菲aaa级| 亚洲成人av资源网| 国产在线黄色片| 欧美 亚洲 视频| 热草久综合在线| 欧美 日本 国产| 国产性xxxx高清| 国产丝袜视频在线观看| 精品国产乱码久久久久久浪潮| 99精品国产热久久91蜜凸| 在线观看亚洲大片短视频| sm一区二区三区| 超碰人人爱人人| 一二三四中文字幕| 中文在线最新版天堂8| 免费成人蒂法网站| 最新黄色片网站| 亚洲精品精品亚洲| 亚洲欧美网站在线观看| xxxx性欧美| 欧美高清视频在线观看| 热re久久精品国产99热| 欧美成va人片在线观看| 国产精品毛片大码女人| 最全影音av资源中文字幕在线| 欧美日韩在线资源| 丰满人妻一区二区三区无码av| 亚洲国产综合视频| 精品国产日本| 先锋影音av中文资源| 成人免费在线视频网址| 久久精品ww人人做人人爽| 中文字幕乱在线伦视频乱在线伦视频| 三区视频在线观看| 日韩风俗一区 二区| 亚洲成av人片一区二区三区| jizz在线观看| 亚洲一区av在线播放| 欧美性猛xxx| 欧美一区二区三区红桃小说| 午夜成在线www| 日韩精品视频网站| 国产精品精品视频一区二区三区| bdsm在线观看播放视频| 亚洲一区二区国产| 中文字幕无码精品亚洲资源网久久| 中日韩免费视频中文字幕| 成人公开免费视频| 欧美最近摘花xxxx摘花| 婷婷国产在线综合| 色之综合天天综合色天天棕色| 亚洲国产成人精品激情在线| 欧美日韩高清在线一区| 成年人免费av| 午夜精品偷拍| 亚洲综合一区二区精品导航| 精品一区二区三区在线观看l| 黄色免费大全亚洲| 亚洲一区二区三区无码久久| 91电影在线| av大片在线播放| 国产日韩高清一区二区三区在线| 成人国产精品毛片| 天堂在线观看免费视频| 91精品国产九九九久久久亚洲| 色婷婷激情一区二区三区| 亚洲午夜久久久久久久久| 中午字幕在线观看| 在线亚洲天堂| 国产精品久久久久白浆| 在线中文字幕av| 性欧美video另类hd尤物| 秘密基地免费观看完整版中文| 91麻豆国产精品久久| 日韩视频在线观看一区二区三区| 国产乱码精品一区二区| 久久人人爽人人爽人人片av免费| 福利在线免费视频| 天天爱天天做天天操| 国产精品99久久久久久久久| 精品久久久久人成| 免费观看在线综合| 亚洲第一黄色网| 欧美日韩国产黄色| 欧美猛交免费看| 亚洲狼人在线| 成人1区2区| 国产欧美一区二区三区四区| 欧美色综合天天久久综合精品| 丰满爆乳一区二区三区| 91在线无精精品一区二区| 韩国三级电影一区二区| 中文字幕乱码人妻无码久久| 色伊人久久综合中文字幕| yes4444视频在线观看| 中文综合在线观看| av五月天在线| 一区视频二区视频| 欧美成人一区二区视频| 丰满人妻一区二区三区免费视频棣| 人人干人人插| 色综合天天综合色综合av| 国产福利第一页| 日韩一级在线播放| 久久国产精品亚洲人一区二区三区| 亚洲性av在线| 亚洲桃花岛网站| 精品动漫av| 久久av一区二区三区漫画| 国产美女明星三级做爰| 亚洲第一se情网站| 蜜桃久久久久久久| 免费男女羞羞的视频网站中文字幕| 国产精品夜间视频香蕉| 欧美另类极品videosbest最新版本| 国产成人精品视频| 亚洲色图欧洲色图婷婷| 日韩欧美中文字幕不卡| 九九热这里只有精品免费看| 日韩欧美国产综合一区| 一本一道波多野毛片中文在线| 伊人色综合久久久| 青青在线免费观看视频| 欧美亚洲一级| 日韩av一级大片| 爱爱的免费视频| 欧美精品黄色| 成人无号精品一区二区三区| 国产一区在线观看视频| 噜噜噜在线观看免费视频日韩| 成人9ⅰ免费影视网站| 亚洲国产女人aaa毛片在线| 成人精品一区二区三区四区| 黄色毛片视频| 哺乳挤奶一区二区三区免费看| 欧美精品一区二区三区中文字幕| 久久久久久久久久久久久久久久久| 久久精品 人人爱| 最好看的2019的中文字幕视频| 制服丝袜在线一区| 深夜福利视频在线观看| 五月婷婷六月色| 亚洲国产精品成人久久综合一区| www.国产自拍| 18禁裸乳无遮挡啪啪无码免费| 天天干在线播放| 色婷婷综合成人av| 国产96在线 | 亚洲| 日日碰狠狠躁久久躁婷婷| 欧美成人精品一区二区男人看| 狠狠色狠狠色综合日日tαg| 东京热加勒比无码少妇| 首页综合国产亚洲丝袜| 97超碰人人爱| 成人国产在线视频| 欧美艳星介绍134位艳星| 一二三四视频免费观看在线看| 蜜桃av中文字幕| www.亚洲成人|