つかびーの技術日記

情報系修士卒のWeb系技術日記です。現在のフォーカス分野はアドテクです。

Play FrameworkのRedis PluginでRedisに突っ込んだオブジェクトを確認する

   

前回の記事ではPlay FrameworkのRedis Pluginについて簡単に書きました。

今回はこのプラグインについてもう少し書いて行きます。

Redisに格納されたオブジェクトを見る

おそらくほとんどの人が「プラグインで突っ込んだRedis上のオブジェクトを直接見たい!」と思うでしょう。Redisはキャッシュ用途であれ永続化用のDB用途であれ、データストアには代わりありませんので、そりゃ直接見たくなるでしょう。「この処理でRedisに値突っ込むけど、手軽にredis-cli経由で素早く見たい!」みたいな。

では実際に見てみます。

まずは以下のようなコードで適当に値を突っ込んでおきます。

適当に色々突っ込んでおいた物を以下の手順で確認します。

string-keyの値としてoos-rO0ABXQABEFCQ0Q=が取れました。

Redis Pluginが格納するオブジェクトについて

上記の例ではstring-keyの値としてoos-rO0ABXQABEFCQ0Q=が取れました。コードでは値ABCDを突っ込んだのに実際は謎の文字列です。

これは何かというとprefixであるoos-と直列化されたデータです。ようするにRedis Pluginで格納したオブジェクトは直列化されているので普通には見れません。

詳しくは以下のコードを見ると良いかと思います。

https://github.com/typesafehub/play-plugins/blob/master/redis/src/main/scala/com/typesafe/plugin/RedisPlugin.scala

どうやってRedis Pluginで格納したデータを見れば良いのか

上記のコードを参考にして全く逆の操作を行うツールを作ろうかな、と思ったのですが、これは現実的ではありません。なぜならデシリアライズするときに対象のクラスの情報が無くてはならないので、スタンドアローンなツールを作ることはできないからです。

という訳で手っ取り早く以下のようなメソッドを作ってしまうのが良いと思います。

適当なコントローラクラスに以下を追記します。

routeにも追記します。

この状態で/viewにアクセスすると先ほど格納したデータが以下のように見えます。

これでオブジェクトが見れます。

とはいえ、実際に上記のコードをプロダクトコードと一緒にリリースする訳にはいかないので、もう少し工夫が必要ですね。

これについてはいい方法を思いついたらまた書くことにします。

 - Play Framework