Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Redis预获取事件_Redis_In Memory Database_In Memory_Database Cluster - Fatal编程技术网

Redis预获取事件

Redis预获取事件,redis,in-memory-database,in-memory,database-cluster,Redis,In Memory Database,In Memory,Database Cluster,我如何重写方法GET或编写一个新函数,如果搜索的键不存在,该函数将在服务器端执行并返回另一个键值 示例: 如果关键字“word_1 word_2 word_3 word_4”不存在,则搜索此关键字“word_1 word_2 word_3”,如果关键字“word_1 word_2 word_3”不存在,则搜索此关键字“word_1 word_2”,如果关键字“word_1 word_2”不存在,则搜索此关键字“word_1”。 这种递归搜索必须在服务器端进行(以提高速度)。这必须在应用程序层进行

我如何重写方法GET或编写一个新函数,如果搜索的键不存在,该函数将在服务器端执行并返回另一个键值

示例:

如果关键字“word_1 word_2 word_3 word_4”不存在,则搜索此关键字“word_1 word_2 word_3”,如果关键字“word_1 word_2 word_3”不存在,则搜索此关键字“word_1 word_2”,如果关键字“word_1 word_2”不存在,则搜索此关键字“word_1”。
这种递归搜索必须在服务器端进行(以提高速度)。

这必须在应用程序层进行,Redis中没有这样做的基础设施,我相信这永远不会成为产品的一部分,因为Redis的特点是轻量级和快速性:在执行管道中添加的功能越多,您牺牲的性能越高……

此功能不是Redis内置的,但如果您确实希望在服务器上完成此操作,可以使用Lua脚本来完成此操作

如果您不想这样做,另一种方法是生成可能的搜索键,在您的示例中是

word_1 word_2 word_3 word_4
word_1 word_2 word_3
word_1 word_2
word_1

然后发出一个命令,一次获取所有密钥。在应用程序逻辑中,您只需迭代结果,获取第一个具有值的结果

Hbase具有此选项(Observer)。preGet、postGet:在客户端发出Get请求之前和之后调用。我建议使用HBase?@MrWiggles顺便说一句,我仍然建议您使用Redis并在应用层中实现这一点。我不明白为什么你不能这样做:在你发出
GET
命令的地方,你注入了操作前和操作后的代码…@RaminDərvişov Redis的要点是它非常快。我的意思是,除非你对Redis执行的时间足够长,否则你可以多次点击它。例如,如果您实现了LUA脚本并对其进行了更多扩展,那么可以认为LUA脚本会阻塞整个服务器。好吧,Redis不是多线程的,如果你已经知道的话,我会忽略它。@RaminDərvişov因此,在Lua脚本中点击1k次比执行1k次写操作更便宜,因为在发送命令的每次中断之间,来自系统其他部分的其他命令可以与Redis保持通信。