redis ( redis to go ) でリアルタイム?ランキング集計してみたby ruby 2 ( msgpack )
前回でredisでランキング集計できたけど
redis ( redis to go ) でランキング集計してみたby ruby - shoprevのブログ
redis to goの無料プランが5Mなので5M溢れたら?てことで
redis to goのサイトで設定を確認すると
# = Limits =================================================================== maxmemory 5242880 # LRUアルゴリズムを使用し、期限切れになったセットのキーを削除します maxmemory-policy volatile-lru maxmemory-samples 3 maxclients 10 timeout 150
古いやつから削除?
データ入れて5M溢れさすのも負荷かけてしまいそうなので断念
最後に、redisにオブジェクト入れるときシリアライズが必要みたいなので
jsonじゃなくてmsgpackためしてみた
require 'uri' require 'redis' require 'msgpack' uri = URI.parse("redis://redistogo:password@barreleye.redistogo.com:11444/") redis = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password) key="ranking" redis.del key value = {:id=>"1",:value=>"foo"}.to_msgpack redis.set key, value p MessagePack.unpack(redis.get(key)) #=>{:id=>"1",:value=>"foo"}
こんだけでリアルタイムランキング集計機能つけれてしかも速いってすごい
参考
redis/redis-rb · GitHub
msgpack/msgpack-ruby · GitHub