我正在使用 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
.
谢谢您
1条答案
按热度按时间azpvetkf1#
这些多个键由springdataredis维护,只是一些元信息。如果你好奇,你可以
在redis命令中,找到键的类型,然后发出相应的get命令。例如,如果
将结果作为哈希返回,然后使用
看看里面是什么。
你看到的幻影只是springdataredis缓存的一些信息,过一段时间就会被删除。有关更多信息,请选中delete key/value from redis-phantom key not deleted