Redis 中有一个命令-SCAN。它具有 TYPE 选项,该选项返回与给定类型匹配的对象。当我尝试运行示例https://redis.io/commands/scan#the-type-option中提供的命令集时,我在运行最后一个命令Screen
时收到错误 ERR语法错误。
我准备了具有 list 和 zset 类型的对象,但是它们都不起作用,我总是会遇到异常。即使我自己添加一些东西,也无法正常工作。
下一个是我的问题。 SCAN 是否真正支持 TYPE 选项?我发现了这个问题https://github.com/antirez/redis/issues/3323,但尚未关闭,在Redis文档中有此类详细信息
Redis版本:
public void updateSessionLastScreen(Long sessionId, Long newScreenId){
Session session = sessionRepository.findbyId(sessionId).orElseThrow(()-> new RuntimeException("Session does not exist"));
Screen newScreen = screenRepository.findById(newScreenId).orElseThrow(()-> new RuntimeException("Screen does not exist"));
session.setLastScreen(newScreen);
}
SCAN 0 TYPE zset
答案 0 :(得分:2)
TYPE选项的代码仍在不稳定分支中,尚未发布到最新版本的Redis。到目前为止,您不能使用该命令。您必须等待新版本支持此功能,否则冒着使用不稳定分支的风险。
但是,您也可以在客户端实现此目标:
为了使此操作更快,您可以将逻辑包装到Lua脚本中。