gpt4 book ai didi

java - Spring Redis Hash 操作 SCAN

转载 作者:IT王子 更新时间:2023-10-29 06:04:29 30 4
gpt4 key购买 nike

我在做Spring Redis , 我把 key 作为

redistemplate.opsForHash().put("Customer", Customer.class, List<Customers>)

我想从List<>开始搜索,

ScanOptions options = ScanOptions.scanOptions().match(pattern).count(1).build();

Cursor<Entry<Object, Object>> keys = redistemplate.opsForHash().scan("Customer", options);

同样无效。请帮忙!!

最佳答案

首先,scan操作匹配keye不匹配values。当使用 Hash 存储值时,它应该如下所示:redisTemplate.opsForHash().put("key", keyInsideHash, value);所以 Redis 记录的实际键是 key(你用它来获取哈希)。 keyInsideHash 是您需要存储的实际值的键。所以首先获取哈希然后从中获取值。例如:redisTemplate.opsForHash().put("customerKey1", "FirstName", "MyFirstName");redisTemplate.opsForHash().put("customerKey1", "LastName", "我的姓氏");.在这个例子中,我们在同一个散列中存储了键 "customerKey1" 两个条目 ["FirstName","MyFirstName"]["LastName", "MyLastName "]。在您的情况下,您有一个列表而不是 "MyFirstName"。如果您需要扫描哈希,请按以下方式执行(扫描哈希内的键而不是值):

saveToDbCacheRedisTemplate.execute(new RedisCallback<List<String>>() {

@Override
public List<String> doInRedis(RedisConnection connection) throws DataAccessException {
ScanOptions options = ScanOptions.scanOptions().match("pattern").count(1).build();;
Cursor<Entry<byte[], byte[]>> entries = connection.hScan("customerKey1".getBytes(), options);
List<String> result = new ArrayList<String>();
if(entries!=null)
while(entries.hasNext()){
Entry<byte[], byte[]> entry = entries.next();
byte[] actualValue = entry.getValue();
result.add(new String(actualValue));
}

return result;
}

});

关于java - Spring Redis Hash 操作 SCAN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35596693/

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