java - 从 Redis 存储和检索对象?

标签 java redis jedis

我有几个具有 ID 和名称的 Mountain 对象。

我这样存储这些对象

HMSET Mountain:1 id "1" name "Mo1"
HMSET Mountain:2 id "2" name "Mo2"
HMSET Mountain:3 id "3" name "Mo2"

我怎样才能得到所有的山地 object ?或者有没有更好的方法在 Redis 中存储对象?

最佳答案

你应该用 2 个命令来完成:

KEYS Mountain:*
HGETALL <everykeys>

但是,如果可以的话,最好不要使用 KEYS 命令,所以您可以这样做:

HMSET Mountain:1 id "1" name "Mo1"
SADD Montains Mountain:1
HMSET Mountain:2 id "2" name "Mo2"
SADD Montains Mountain:2
HMSET Mountain:3 id "3" name "Mo3"
SADD Montains Mountain:3

并得到它:

SMEMBERS Mountain
HGETALL <everykeys>

Redis 是一个key/value 系统,有额外的数据类型,所以你必须建立你的索引 例如,对于名称索引,如果名称是唯一的:

HSET Mountains:IdByName "Mo3" 3

你会得到 id :

HGET Mountains:IdByName "Mo3"

对于非唯一的让我们再次使用集合

SADD Mountains:IdByName:Mo3 3

你会增加 key 的数量,这就是为什么不推荐使用 KEYS 的原因,因为太贵了

下一步是使用 lua 脚本从/和索引中获取/设置哈希

关于java - 从 Redis 存储和检索对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24630297/

相关文章:

java - 如何检查执行器何时完成运行特定的 Runnable

java - 当我尝试在 NetBeans 中打开我的项目时,它打不开

java - 将java序列化对象反序列化为Scala类

redis - Jedis pubsub >> "redis-cli config set notify-keyspace-events Ex "在 conf 文件中不起作用

Redis 连接关闭错误

java - RSA 如何禁用 IBM 传输文件 "feature"

java - Jaxen/text() 不起作用

kubernetes - Kubernetes中的Redis部署

azure - azure 上的 redis 跨部署是否持久?

Redis 客户端未通过 HAProxy 连接到 Redis 服务器