我尝试使用PHPredis操作ElastiCache(Redis)

我用PHPredis这个C语言扩展库来实现了对Redis的CRUD应用程序,因为它的处理速度比Predis快,而且Predis似乎已经不再进行维护了。

在Linux(RHEL/CentOS)上安装库的方法很简单,只需使用yum install php-pecl-redis命令即可。

<html>
<title>Predis connection test</title>
<body>
  <table border=1>
  <form method="POST" action="">
  <input type="submit" value="登録" style="width:110px;height:40px" name="sub1">
  key: <input type="text" name="key1">
  value: <input type="text" name="value"><br>
  <input type="submit" value="削除" style="width:110px;height:40px" name="sub1">
  key: <input type="text" name="key2"><br>
  <input type="submit" value="全削除" style="width:110px;height:40px" name="sub1"><br>
  <input type="submit" value="全検索" style="width:110px;height:40px" name="sub1"><br>
  <input type="submit" value="セッション登録" style="width:110px;height:40px" name="sub1">
  uid: <input type="text" name="key3"><br>
  </form>
<?php
use Predis\Client;
class RedisCon{
  protected $host;
  protected $port;
  public function __construct(){
    $host = "*****"; #Redisエンドポイント
    $port = 6379;
    $this->redis = new Redis();
    $this->redis->connect($host, $port);
    if (!$this->redis->connect($host, $port)){
      throw new Exception ('failed to connect elasticache redis host.');
    }
  }
  public function SetSession($uid){
    session_start();
    $_SESSION['uid'] = $uid;
    echo "<script type='text/javascript'>alert('Session".$uid." has been registered.');</script>";
  }
  public function SetKey($key, $value){
    if (empty($key)){
      echo "<script type='text/javascript'>alert('Enter some key to delete.');</script>";
      exit;
    }
    $res = $this->redis->exists($key);
      if (!($res)){
        echo "<script type='text/javascript'>alert('". $key. " is NOT found, set key in store.');</script>";
          try{
            $this->redis->set($key, $value);
          }catch(Exception $e){
            echo $e;
          }
      }else{
        echo "<script type='text/javascript'>alert('". $key. " is already exist.');</script>";
      }
  }
  public function DeleteKey($key){
    $res = $this->redis->exists($key);
    if(!($res)){
      echo "<script type='text/javascript'>alert('". $key. " is NOT found. Please enter existing key.');</script>";
      exit;
      }else{
        try{
          $res = $this->redis->del($key);
          echo "<script type='text/javascript'>alert('". $key. " has been deleted.');</script>";
        }catch(Exception $e){
          echo $e;
        }
      }
  }
  public function flashKeys(){
    try{
      $this->redis->flushAll();
      echo "<script type='text/javascript'>alert('All keys have been flushed.');</script>";
    }catch(Exception $e){
      echo $e;
    }
  }
  public function GetAllkeys(){
    $keys = $this->redis->keys('*');
    echo "<th>KEY</th><th>VALUE</th>";
    foreach($keys as $key){
      $value = $this->redis->get($key);
      echo "<tr>";
      echo "<td>".$key."</td>";
      echo "<td>".$value."</td>";
      echo "<tr>";
      }
    }
}
$redis = new RedisCon();
if (isset($_POST["sub1"])){
  $kbn = htmlspecialchars($_POST["sub1"], ENT_QUOTES, "UTF-8");
  switch ($kbn) {
    case "登録": $redis->SetKey($_POST["key1"], $_POST["value"]); break;
    case "削除": $redis->DeleteKey($_POST["key2"]); break;
    case "全削除": $redis->flashKeys(); break;
    case "全検索": $redis->GetAllkeys(); break;
    case "セッション登録": $redis->SetSession($_POST["key3"]); break;
  }
}
?>
</table>
</body>
</html>
广告
将在 10 秒后关闭
bannerAds