[redis] More connection pooling changes

This commit is contained in:
Fosco Marotto
2021-01-17 17:36:20 -05:00
parent d2d381eb90
commit 002441af1f
11 changed files with 89 additions and 49 deletions

View File

@@ -9,15 +9,19 @@ class ActivityTracker
def increment(prefix)
key = [prefix, current_week].join(':')
redis.incrby(key, 1)
redis.expire(key, EXPIRE_AFTER)
redis.with do |conn|
conn.incrby(key, 1)
conn.expire(key, EXPIRE_AFTER)
end
end
def record(prefix, value)
key = [prefix, current_week].join(':')
redis.pfadd(key, value)
redis.expire(key, EXPIRE_AFTER)
redis.with do |conn|
conn.pfadd(key, value)
conn.expire(key, EXPIRE_AFTER)
end
end
private

View File

@@ -4,7 +4,7 @@ require 'singleton'
class FeedManager
include Singleton
include Redisable
# include Redisable
MAX_ITEMS = 150

View File

@@ -19,17 +19,24 @@ class PotentialFriendshipTracker
key = "interactions:#{account_id}"
weight = WEIGHTS[action]
redis.zincrby(key, weight, target_account_id)
redis.zremrangebyrank(key, 0, -MAX_ITEMS)
redis.expire(key, EXPIRE_AFTER)
redis.with do |conn|
conn.zincrby(key, weight, target_account_id)
conn.zremrangebyrank(key, 0, -MAX_ITEMS)
conn.expire(key, EXPIRE_AFTER)
end
end
def remove(account_id, target_account_id)
redis.zrem("interactions:#{account_id}", target_account_id)
redis.with do |conn|
conn.zrem("interactions:#{account_id}", target_account_id)
end
end
def get(account_id, limit: 10, offset: 0)
account_ids = redis.zrevrange("interactions:#{account_id}", offset, limit)
account_ids = []
redis.with do |conn|
account_ids = conn.zrevrange("interactions:#{account_id}", offset, limit)
end
return [] if account_ids.empty?
Account.searchable.where(id: account_ids).local
end

View File

@@ -10,11 +10,16 @@ class VerifiedSuggestions
def set(account_ids)
return if account_ids.nil? || account_ids.empty?
redis.setex(KEY, EXPIRE_AFTER, account_ids)
redis.with do |conn|
conn.setex(KEY, EXPIRE_AFTER, account_ids)
end
end
def get(account_id)
account_ids = redis.get(KEY)
account_ids = []
redis.with do |conn|
account_ids = conn.get(KEY)
end
if account_ids.nil? || account_ids.empty?
account_ids = Account.searchable
@@ -24,7 +29,7 @@ class VerifiedSuggestions
.local
.limit(MAX_ITEMS)
.pluck(:id)
set(account_ids) if account_ids.nil? || account_ids.empty?
else
account_ids = JSON.parse(account_ids)