LoginSignup
1
0

More than 1 year has passed since last update.

Twitter / Pelikanをちょっとお試し

Last updated at Posted at 2022-10-11

初めに

最近プライベートではRustで遊ぶことが多いのですが、Twitterでブラブラしていたらコレに触れている方がいたので興味を持ちました、が今日のお話。

ポエム程度の記録記事です。

サイト

Peli"c"anではなく、peli"k"an

ソースはこちら。

Pelikanとは

  • Rust製キャッシュフレームワーク
  • Twitter社でTwemcache(MemcachedをTwitterがフォークしたもの)とRedisを使ってたけど色々問題あったので開発
  • Twemcache、RedisとAPI互換

説明の原典はコチラ。

お試し

そもそもMemcachedも使ったことありませんな私ですが、試すだけ試します。

お試し環境はM1 MacBook Air(M1, 2020) Monterey 12.6

Terminal
git clone https://github.com/twitter/pelikan.git
cd pelikan
cargo build --release

workspace-inheritanceが必要だけど安定版には入っていないということでビルド失敗。
Rustのバージョンが1.64からは入っている。(自分の環境は1.63でした。)

error: failed to load manifest for workspace member `/Users/xxxxxx/projects/pelikan/src/common`

Caused by:
  failed to parse manifest at `/Users/xxxxxx/projects/pelikan/src/common/Cargo.toml`

Caused by:
  feature `workspace-inheritance` is required

  The package requires the Cargo feature called `workspace-inheritance`, but that feature is not stabilized in this version of Cargo (1.63.0 (fd9c4297c 2022-07-01)).
  Consider adding `cargo-features = ["workspace-inheritance"]` to the top of Cargo.toml (above the [package] table) to tell Cargo you are opting in to use this unstable feature.
  See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#workspace-inheritance for more information about the status of this feature.

ありがたいお言葉通りCargo.tomlに足してもいいのですが、Cargo.tomlが複数ありますし(めんどい)、素直にRustのバージョンを上げた方がよろしかろうということで

Terminal
rustup update stable

2022/9/22に1.64の安定版が出ていました。ありがたし。
https://blog.rust-lang.org/2022/09/22/Rust-1.64.0.html

無事ビルドができたので

実行

Terminal
target/release/pelikan_segcache_rs

Pelikanさんがポート12321を開けて待ってます。

2022-10-11T12:23:46.141+00:00 INFO [admin] running admin on: 127.0.0.1:9999
2022-10-11T12:23:46.141+00:00 INFO [server::listener] running server on: 0.0.0.0:12321

開いているポートがあれば刺してあげるのが礼儀です。

Terminal
telnet localhost 12321

Memcachedを全く知らない私が見ようみまねで値を登録してみます。
setで値を登録。

Terminal
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
set foo 0 0 3
bar
STORED

getで値を取得。

Terminal
get foo
bar
END

Memcachedのコマンドの扱いはコチラが分かりやすかったです。感謝。

終わりに

今回は「とりあえず動かしてみた」です。

実際にMemcachedやRedisなどの実績があるものを評価作業なしのエイヤで置き換えることにはならないと思いますが(そもそも自分は使ってない)、Rust製か〜、萌えるな〜と悦に入るにはオツな一品でした。

補足:Windowsの場合

WSL2上でも環境作りました。
(純粋なWindows上ではないですが・・・。)

cmakeとclangが素のWSL2に入っていなかったので、aptで入れました。

それ以外は特に手順的に変わるところはありません。

補足:開発者からの説明動画

1
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
1
0