我正在使用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
并运行键*
时,我可以看到,
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
创建这些密钥。
谢谢
这些多个密钥由spring数据Redis维护,只是一些元信息。如果你好奇,你可以发布
type [whatever-key]
在redis命令中,要查找密钥的类型,然后发出相应的get命令。例如,如果
type vault_token
以哈希形式返回结果,然后使用
hgetall vault_token
看看里面是什么。
你看到的幻影只是spring数据Redis缓存的一些信息,过一段时间就会被删除。有关更多信息,请选中delete key/value from redis-phantom key not deleted
> Docker不是我的强项所以请容忍我 我正在使用docker和docker compose为Magento2创建本地开发环境(https://github.com/victortodoran/magento2-docker) 我创建了一个自定义网络,将静态IP分配给容器。 摘自docker compose。yml(https://github.com/victortodoran/magento
我试图在两个表之间创建一个外键约束,但在执行alter命令之后,mysql创建了索引而不是外键。 我使用的是hibernate,所以最初我认为这是hibernate的问题,但当我直接在mysql上执行查询时,行为是一样的。 更改表person添加约束FK9ircw28d19mdg5pu8yfg1qs8p外键(Address_Id)引用地址(Address_Id) 运行此命令后,我会在mysql数据
所以基本上我在java中做一个服务器和客户端。 为了让它运行,我必须同时运行client.java和server.java.我需要关闭一个或两个取决于实例 我目前需要的是这样一种方式:当客户端传递参数x时,客户端应该关闭,但服务器应该保持打开。我还必须以这样一种方式实现它:如果客户端传递参数y,那么客户端和服务器都应该关闭 我想做: 但我不确定这是否会同时关闭服务器和客户端,这意味着它对第二个实例
我无法得到为什么appcompat_v7是自动创建的…发现它很烦人…请有人帮助摆脱这个问题。我试图创建新项目,发现每个新创建的项目都是这样的。
问题内容: 我需要一次创建多个表。我很难找出正确的方法来完成此任务。目前,我的脚本如下所示: 显然,这是行不通的,并且不会创建任何表。有一种简单的方法可以一次创建多个表吗? 问题答案: MySQL变得令人困惑,因为您没有划定查询范围。在第一条语句后添加分号: 另外,根据Heredoc文档,请确保位于行的开头, 没有其他字符,除了分号外 。 鉴于上述方法似乎无效,请尝试以下代码: 您 可以 使用(M
我有两个版本的应用程序: > 没有广告。 我的应用程序中有订阅。我想在这些应用程序之间共享一个订阅。例如这样一个场景: 用户在应用程序中购买带有广告的订阅,然后购买没有广告的应用程序。我想将第一个应用程序中的订阅分享给第二个应用程序。有没有可能使用标准的谷歌账单库?