【问题标题】:Eliminate magic number in Redis消除 Redis 中的幻数
【发布时间】:2013-07-10 10:21:37
【问题描述】:

我正在使用 Redis 使用排序集创建索引。我想要匹配结果的以下顺序(首先是较小的字符串):

a
ar
art
artu
artur
arturo

来自Redis documentation我使用分数来存储数据:

元素被认为是按从高到低的顺序排列的 最低分。

我为实现这一点而编写的代码有一个幻数 1000,但这是一个任意数字,足以比我必须存储的最大字符串大(我也不知道确切的最大字符串长度是多少,但我确定小于 1000)

Hash[
  'elem'  => string
  'score' => 1000 - string.size
]

你如何用sense删除这个神奇的数字?

【问题讨论】:

  • 这不是字典顺序吗?
  • 降序字典顺序用于得分相等的元素。
  • 你能举个例子吗?
  • 这对我的问题并不重要,但如果你有tomart 我认为tom 是第一位的,因为我使用的是逆序。

标签: redis magic-numbers


【解决方案1】:

分数必须是正数吗?如果没有:

'score' => -string.size

本质上,这是用 0 代替 1000。0 是您可以使用的数字之一,而不会被认为是魔法!

【讨论】:

  • 好点,似乎有效!但这就像一个诡计,如果不允许负数会发生什么?
猜你喜欢
  • 2018-03-10
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 2015-12-26
  • 2019-05-15
  • 1970-01-01
  • 2022-01-24
  • 1970-01-01
相关资源
最近更新 更多