spring boot@redishash创建多个键而不是一个键

lzfw57am  于 2021-06-09  发布在  Redis
关注(0)|答案(1)|浏览(584)

我正在使用 spring-data-redis 从redis添加和检索数据。但一旦数据写入redis,我就可以看到多个键而不是一个键。过期时,只有一个密钥被删除,其余的密钥仍然存在于redis中。

@RedisHash( timeToLive = 60, value="vault_token" )
@Data
public class VaultTokenModel {

    private Integer id;

    private String token;
}

为了保存,

VaultTokenModel vaultTokenModel = new VaultTokenModel();
                vaultTokenModel.setId(1);
                vaultTokenModel.setToken(getVaultToken());
                VaultTokenModel savedToken = vaultTokenRepository.save(vaultTokenModel);
                return savedToken.getToken();

但是当我打开门 redis-cli 然后跑 KEYS * ,我看得出来,

1) "vault_token:1"
2) "com.highpeak.tlp.attributemanager.db.model.VaultTokenModel:1:phantom"
3) "vault_token:1:phantom"
4) "com.highpeak.tlp.attributemanager.db.model.VaultTokenModel"
5) "vault_token"

拍完之后呢 timeToLive ,如果我再次运行相同的命令,我可以看到,

1) "com.highpeak.tlp.attributemanager.db.model.VaultTokenModel:1:phantom"
2) "vault_token:1:phantom"
3) "com.highpeak.tlp.attributemanager.db.model.VaultTokenModel"
4) "vault_token"

这些额外的密钥是什么?为什么要用完整的包名和随机的唯一标识符来创建它们 phantom .
谢谢您

azpvetkf

azpvetkf1#

这些多个键由springdataredis维护,只是一些元信息。如果你好奇,你可以

type [whatever-key]

在redis命令中,找到键的类型,然后发出相应的get命令。例如,如果

type vault_token

将结果作为哈希返回,然后使用

hgetall vault_token

看看里面是什么。
你看到的幻影只是springdataredis缓存的一些信息,过一段时间就会被删除。有关更多信息,请选中delete key/value from redis-phantom key not deleted

相关问题