【发布时间】:2017-02-04 03:46:09
【问题描述】:
我有一个很大的字符串列表(包含用户名,大约 35 万条记录)。我需要按字典顺序存储它,并且应该能够有效地检索成员存在*和成员相似度**。 Redis 排序集看起来像作业的数据类型。
但是,我似乎在第一个障碍中跌倒了。具体来说,我的一个关键要求是将不同的字母大小写放在一起,只要它们以相同的字母开头。例如。 Bender 和 bender 最终都应该并排订购。但是,redis 的排序集严格遵循字典排序规则,因此所有以大写开头的字符串默认排在所有以小写开头的字符串之前(例如,Z 在a 之前排序,但在A 之后排序)。
有什么办法可以解决这个问题,并且仍然使用 redis 排序集来满足我的要求吗?仅供参考,我使用的是 redis 2.8.4 版。提前致谢。
*成员存在:给定一个用户名,检查存储集中是否已经存在
**成员相似度:给定一个用户名,拉出 N 个存储的与给定用户名最相似的用户名
【问题讨论】:
-
@thepirat000:这是一篇很棒的文章。唯一的问题是它使用了 ZRANGEBYLEX,它不适用于 redis 2.8.4。我可以实现相同的早期版本:oldblog.antirez.com/post/autocomplete-with-redis.html,但它与字典无关。
标签: sorting redis sortedset lexicographic