LoginSignup
0
0

More than 1 year has passed since last update.

twitter/pelikanをPHPから使う

Posted at

最近Twitterでtwitter/pelikanというものを目にしました。

MemcachedやRedisのようなキャッシュサービスで、上記リポジトリのREADMEによると既存のMemcachedクライアントで操作できるようです。
というわけで、PHPのMemcachedモジュールを使って試してみました。

検証環境

  • Ubuntu 18.04.6 on WSL
    • Windows 10 Home
  • PHP 8.1.11
  • Rust 1.64.0

インストール

Pelikan

基本的には https://github.com/twitter/pelikan#building-pelikan の通りですが、cmake が apt でインストールした 3.10 では動かなかったので、こちらを参考に 3.23 を別途インストールしました1

PHP

APT のppa:ondrej/phpリポジトリからインストールします。Memcached モジュールもphp8.1-memcachedでインストールできます

動かす

サーバを起動

Pelikanをビルドすると、target/releaseディレクトリに各種実行ファイルができるので、その中のpelikan_segcache_rsを起動します。

$ target/release/pelikan_segcache_rs
2022-10-17T03:55:12.172+00:00 INFO [admin] running admin on: 127.0.0.1:9999
2022-10-17T03:55:12.172+00:00 INFO [server::listener] running server on: 0.0.0.0:12321

999912321の2ポートでサーバが起動していますが、通常のデータの操作で使うのは12321の方です。

PHPで接続

pelikan.php
<?php
declare(strict_types=1);

$client = new Memcached();
$client->addServer('localhost', 12321);

$client->set('string', 'foo');
$client->set('array', ['foo' => 1, 'bar' => 'baz', 0 => 'qux']);
$client->set('object', (object)['foo' => 1, 'bar' => 'baz', 0 => 'qux']);
$client->set('int', 0);
$client->increment('int');

var_dump(
    $client->get('string'),
    $client->get('array'),
    $client->get('object'),
    $client->get('int'),
);

上記コードを動かすと、以下の出力となり、ちゃんと値が保存されていることがわかります。

/path/to/pelikan/pelikan.php:17:
string(3) "foo"
/path/to/pelikan/pelikan.php:17:
array(3) {
  'foo' =>
  int(1)
  'bar' =>
  string(3) "baz"
  [0] =>
  string(3) "qux"
}
/path/to/pelikan/pelikan.php:17:
class stdClass#2 (3) {
  public $foo =>
  int(1)
  public $bar =>
  string(3) "baz"
  public $0 =>
  string(3) "qux"
}
/path/to/pelikan/pelikan.php:17:
int(1)

一方、getVersion()getStats()といったメソッドは上手く動作しませんでした(ポートを9999に変えてもダメでした)。

まとめ

基本的な操作であれば、PHP の Memcached モジュールを使って Pelikan を利用できました。
一部利用できないメソッドもあるものの、シンプルな使い道であれば利用できるかもしれません。

  1. READMEにはcmake (>= 3.2)と書いてあったのに……

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0