我可以从redis添加并获取特定的用户对象我添加的对象如下:
private static final String USER_PREFIX = ":USER:";
public void addUserToRedis(String serverName,User user) {
redisTemplate.opsForHash().put(serverName + USER_PREFIX + user.getId(),
Integer.toString(user.getId()),user);
}
如果userid是100,我可以通过key:server1:user:100
现在我要检索所有用户作为 Map<String,List<User>>
,
例如,通过以下键获取所有用户server1:user:
有可能吗?或者我需要修改addusertoredis方法?请建议我。
3条答案
按热度按时间ddrv8njm1#
我建议不要在生产环境中使用“keys”命令,因为这会严重影响redis的延迟(如果存储了大量密钥,甚至会导致集群崩溃)
相反,您可能希望使用与普通get/set不同的命令。
如果使用集合或哈希,效果会更好
使用集合,您可以简单地将用户添加到服务器密钥,并获得服务器上的整个用户列表。
如果你真的需要Map
< server, list < users > >
可以对字符串化的用户数据使用哈希,然后将其转换为实际值User
应用层的pojo还要注意的是,将这么多的大数据保存在一个键中并不是一件理想的事情。
qyswt5oh2#
最后我提出了这个解决方案,使用通配符搜索和避免键,下面是我的完整方法:
k4emjkb13#
我不使用java,但下面是如何使用scan