カテゴリー Home > kvs | ruby > redisでユーザをfollowしたときにTimeLineをsortして再構築

redisでユーザをfollowしたときにTimeLineをsortして再構築

  • ( 0 )
  • ( 0 )
  • ( 0 )
  •  2010/03/27 (Sat)

前回のつづき。

課題の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

Comment Form

コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。

Remember personal info
           

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

Home > kvs | ruby > redisでユーザをfollowしたときにTimeLineをsortして再構築

Search
Feeds
Google Adsense

Page Top