我有几个具有 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/