我想把部分SQL查询转移到redis,遇到了redis没有类似JOIN
功能的问题
SQL中的示例。得到2个表:
CREATE TABLE `games` (
`id` MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',
`fname` CHAR(64) NOT NULL DEFAULT '',
...
);
CREATE TABLE `log` (
`id` MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',
`fgame_id` CHAR(64) NOT NULL DEFAULT ''
`finfo` MEDIUMTEXT NOT NULL
...
);
将通过游戏ID获得游戏名称:
SELECT log.fgame_id, games.fname, log.finfo
FROM log
LEFT JOIN games ON games.id = log.fgame_id
在Redis中,我创建了具有相同名称和类似结构的索引:
FT.CREATE games
ON HASH
PREFIX 1 "games:"
SCHEMA
id TAG SORTABLE
fname TEXT SORTABLE
FT.CREATE log
ON HASH
PREFIX 1 "log:"
SCHEMA
id TAG SORTABLE
fgame_id TEXT SORTABLE
finfo TEXT NOINDEX
是否可以在REDIS(FT.SEARCH/FT.AGGREGATE)上实现SQLJOIN
方法?
1条答案
按热度按时间deyfvvtc1#
不支持直接从Redis使用搜索加入。按照你的例子,你可以使用2个不同的PREFIX来Map不同的数据表(游戏:和log:)。例如:
以及使用共享密钥添加数据:
最后使用FT.AGGREGATE返回joint表,如:
希望能作为一种变通方法有所帮助:-)