Ruby on rails 在redis中使用ZINCRBY存储哈希

Ruby on rails 在redis中使用ZINCRBY存储哈希,ruby-on-rails,ruby,redis,Ruby On Rails,Ruby,Redis,我正在尝试使用redis缓存我的站点搜索的自动完成。我遇到了一个教程,它向您展示了如何按如下方式存储普通字符串: $redis.zincrby "search-suggestions:#{prefix.downcase}", 1, term.downcase 我想知道是否有一种方法可以代替存储散列,同时仍然使用ZINCRBY。我想尝试这样做: $redis.zincrby "search-suggestions:#{prefix.downcase}", 1, {key: val, ...}

我正在尝试使用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
来源:

使用已排序的字符串集,但没有任何东西阻止您使用对象的JSON表示:

$redis.zincrby "search-suggestions:#{prefix.downcase}",
               1,
               JSON.dump({key: val, ...})