前回のつづき。
課題の1つに挙げてた中で、「Followした瞬間に、そのユーザの過去のTweetを自分のTLに追加できていない」というのがありましたが、こんなかんじでいいのかな。自分のTLに他人のTLを混ぜて、sortしてstoreし直し。(redis-rbが0.2.0じゃないと動かないかも)
def merge_timeline(user_id)
my_id = @login_user[:id]
return if @redis.type?("uid:#{user_id}:posts") == "none"
user_statuses = @redis.lrange("uid:#{user_id}:posts", 0, 100)
user_statuses.each do |status|
@redis.lpush("uid:#{my_id}:home", status)
end
@redis.sort("uid:#{my_id}:home", :order => "desc alpha", :store => "uid:#{my_id}:home")
end
でも、そうしたあとにremoveしたときにまた再構築し直さないと駄目なことに気づいた。。と、いうかremove面倒ですねぇ、どうするんだろう。泥臭く全statusを走査し直しなのか、それとも順序付Setとか使えば楽にremoveできるのかな。また考え直しです。
あと、このupdateについて、github上のRedTweetのコードもpushし直してますので、興味ある方はご確認ください。
Google Adsense
Social bookmark comment : 0
No comment.
Comment : 0
Trackback : 0
- TrackBack URL for this entry
- http://blog.katsuma.tv/mt-tb.cgi/219
- Listed below are links to weblogs that reference
- redisでユーザをfollowしたときにTimeLineをsortして再構築 from blog.katsuma.tv
2010/03/27 (Sat)