我想看看如何在redis中根据这些键的值来选择键。我使用redis是为了为每个英文单词存储一个“单词分数”,以便在我的网站上提供搜索建议。词得分越大,这个词在网站上就越常见,因此当用户在搜索栏中键入内容时,推荐的词就越多。如果没有类似于sql中where子句的东西,我就无法实现这个特性,那么redis中有这种行为吗?我应该为这个问题实现不同类型的数据库吗(我选择redis是因为它很快)。
agxfikkp1#
redis主要是一个内存数据存储。这意味着在某个时间点,某些键可能会被逐出。设计决策很简单——如果您希望所有数据永久保存,那么redis在这里肯定是一个错误的选择。但是,如果这是暂时的,并且您可以处理一些错误,那么您可以使用redis。即使无法直接模拟 WHERE 从句行为,是可以做到的。为此,您可以使用 ZRANGEBYSCORE redis中的命令。所以,你能做的是,当单词出现时,使用 ZSCORE 命令获取当前分数并使用 ZADD 命令。查询时,请使用 ZRANGEBYSCORE 命令获取整个列表,然后根据需要选择条目。
WHERE
ZRANGEBYSCORE
ZSCORE
ZADD
qlvxas9a2#
redis没有针对二级索引的内置解决方案,但是您可以使用内置的数据结构构建自己的可搜索索引请参见:redis的二级索引。另一种选择是添加redis扩展模块,提供简单的索引机制和扩展的查询语言。
2条答案
按热度按时间agxfikkp1#
redis主要是一个内存数据存储。这意味着在某个时间点,某些键可能会被逐出。设计决策很简单——如果您希望所有数据永久保存,那么redis在这里肯定是一个错误的选择。但是,如果这是暂时的,并且您可以处理一些错误,那么您可以使用redis。
即使无法直接模拟
WHERE
从句行为,是可以做到的。为此,您可以使用
ZRANGEBYSCORE
redis中的命令。所以,你能做的是,当单词出现时,使用
ZSCORE
命令获取当前分数并使用ZADD
命令。查询时,请使用
ZRANGEBYSCORE
命令获取整个列表,然后根据需要选择条目。qlvxas9a2#
redis没有针对二级索引的内置解决方案,但是您可以使用内置的数据结构构建自己的可搜索索引请参见:redis的二级索引。
另一种选择是添加redis扩展模块,提供简单的索引机制和扩展的查询语言。