gpt4 book ai didi

spring - RedisTemplate 按值获取哈希键

转载 作者:可可西里 更新时间:2023-11-01 11:28:45 25 4
gpt4 key购买 nike

我对 Spring 和 Redis 都很陌生。我想知道有没有办法通过值获取KEY?

My KEY is patterned like this: "{typeOfFile}:{id}:{filename}"

typeOfFile could either be "image", "html", or "pdf".

例如,我想获取具有给定 fileHashcontentimage 类型文件的 KEY。我是抱着这样的想法来做的:

private String getKeyByVal(final String givenFileHash, final String content) {
// get all keys that starts with "image"
Set<String> keys = redisTemplate.keys("image*");
if (keys != null) {
for (String key : keys) {
Map<Object, Object> val = redisTemplate.opsForHash().entries(key);
// check if the value of KEY is equal to the given fileHash
if (val.get("fileHash").equals(givenFileHash) && val.get("content").equals(content)) {
return key;
}
}
}
}

但是,有人告诉我这非常昂贵,因为我要获取所有以“image”开头的 key ,并手动检查所有这些 key 。

现在我在想,如果我能按值获取KEY,也许会好很多。这样就更容易获得它的所有属性。这在 Redis 中可能吗?

最佳答案

不,这在 Redis 中是不可能的。但是,您可以同时存储反向 map ,如下所示:

    fileHash -> "{typeOfFile}:{id}:{filename}"

此解决方案假定文件哈希是唯一的。如果散列不是唯一的,那么您可以存储一组具有相同散列的 ID,检索每个 ID 的内容并进行比较。仍然比原始解决方案快很多。

关于spring - RedisTemplate 按值获取哈希键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42667179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com