TYPE选项不适用于REDIS SCAN命令

时间:2019-08-15 07:50:59

标签: redis

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

1 个答案:

答案 0 :(得分:2)

TYPE选项的代码仍在不稳定分支中,尚未发布到最新版本的Redis。到目前为止,您不能使用该命令。您必须等待新版本支持此功能,否则冒着使用不稳定分支的风险。

但是,您也可以在客户端实现此目标:

  1. 使用SCAN命令迭代密钥空间
  2. 对于每个键,调用type命令在客户端进行过滤。

为了使此操作更快,您可以将逻辑包装到Lua脚本中。