From ab3055c04b175a184ad511b8871195b361541f86 Mon Sep 17 00:00:00 2001 From: Will Cosgrove Date: Mon, 21 Nov 2011 03:20:22 -0600 Subject: [PATCH] Added very basic redis pipelining functionality --- lib/soulmate/loader.rb | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/soulmate/loader.rb b/lib/soulmate/loader.rb index 3061d0d..1f9c2be 100644 --- a/lib/soulmate/loader.rb +++ b/lib/soulmate/loader.rb @@ -36,8 +36,10 @@ def add(item, opts = {}) Soulmate.redis.hset(database, item["id"], MultiJson.encode(item)) phrase = ([item["term"]] + (item["aliases"] || [])).join(' ') prefixes_for_phrase(phrase).each do |p| - Soulmate.redis.sadd(base, p) # remember this prefix in a master set - Soulmate.redis.zadd("#{base}:#{p}", item["score"], item["id"]) # store the id of this term in the index + Soulmate.redis.pipelined do + Soulmate.redis.sadd(base, p) # remember this prefix in a master set + Soulmate.redis.zadd("#{base}:#{p}", item["score"], item["id"]) # store the id of this term in the index + end end end @@ -50,8 +52,10 @@ def remove(item) Soulmate.redis.hdel(database, prev_item["id"]) phrase = ([prev_item["term"]] + (prev_item["aliases"] || [])).join(' ') prefixes_for_phrase(phrase).each do |p| - Soulmate.redis.srem(base, p) - Soulmate.redis.zrem("#{base}:#{p}", prev_item["id"]) + Soulmate.redis.pipelined do + Soulmate.redis.srem(base, p) + Soulmate.redis.zrem("#{base}:#{p}", prev_item["id"]) + end end end end