【发布时间】:2019-01-04 14:56:14
【问题描述】:
我正在尝试使用 redis 来缓存我的站点搜索的自动完成。我遇到了一个教程,该教程向您展示了如何存储纯字符串:
$redis.zincrby "search-suggestions:#{prefix.downcase}", 1, term.downcase
我想知道是否有一种方法可以存储散列,同时仍然使用ZINCRBY。我正在考虑尝试做这样的事情:
$redis.zincrby "search-suggestions:#{prefix.downcase}", 1, {key: val, ...}
完整代码示例:
class SearchSuggestion
def self.terms_for(prefix)
$redis.zrevrange "search-suggestions:#{prefix.downcase}", 0, 9
end
def self.index_products
Product.find_each do |product|
index_term(product.name)
product.name.split.each { |t| index_term(t) }
index_term(product.category)
end
end
def self.index_term(term)
1.upto(term.length - 1) do |n|
prefix = term[0, n]
$redis.zincrby "search-suggestions:#{prefix.downcase}", 1, term.downcase
end
end
end
【问题讨论】:
标签: ruby-on-rails ruby redis