初めに
最近プライベートでは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
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のバージョンを上げた方がよろしかろうということで
rustup update stable
2022/9/22に1.64の安定版が出ていました。ありがたし。
https://blog.rust-lang.org/2022/09/22/Rust-1.64.0.html
無事ビルドができたので
実行
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
開いているポートがあれば刺してあげるのが礼儀です。
telnet localhost 12321
Memcachedを全く知らない私が見ようみまねで値を登録してみます。
setで値を登録。
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
set foo 0 0 3
bar
STORED
getで値を取得。
get foo
bar
END
Memcachedのコマンドの扱いはコチラが分かりやすかったです。感謝。
終わりに
今回は「とりあえず動かしてみた」です。
実際にMemcachedやRedisなどの実績があるものを評価作業なしのエイヤで置き換えることにはならないと思いますが(そもそも自分は使ってない)、Rust製か〜、萌えるな〜と悦に入るにはオツな一品でした。
補足:Windowsの場合
WSL2上でも環境作りました。
(純粋なWindows上ではないですが・・・。)
cmakeとclangが素のWSL2に入っていなかったので、aptで入れました。
それ以外は特に手順的に変わるところはありません。
補足:開発者からの説明動画