【问题标题】:Storing a hash using ZINCRBY in redis在 redis 中使用 ZINCRBY 存储哈希
【发布时间】: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

来源:Railscast: Episode #399

【问题讨论】:

    标签: ruby-on-rails ruby redis


    【解决方案1】:

    zincrby 使用已排序的字符串集,但没有什么能阻止您使用对象的 JSON 表示:

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

    【讨论】:

      猜你喜欢
      • 2012-10-01
      • 2015-08-14
      • 1970-01-01
      • 2015-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-13
      • 2012-05-08
      相关资源
      最近更新 更多