在Redis中存储小键值列表的最佳方法

时间:2012-04-11 11:42:30

标签: redis

我正在尝试使用Redis作为我正在制作的小型游戏的主要数据库(主要是为了搞乱编程和使用Redis)。

但是我遇到了一个我无法找到答案的场景:

我希望存储人们可以使用的不同地图的名称列表(不是很多)以及他们的ID。注意:我永远不需要从名称中获取ID。

我认为可以做到的两种方式是将信息存储为字符串或哈希值。

即:

1)基于字符串:

  • 设置地图:0“主要”
  • 设置地图:1“Island”
  • etc(也许是地图:id to 存储自动增量值)

2)基于哈希:

  • hset maps“0”“Main”
  • hset maps“1”“Island”

我的问题是哪种方式看起来最好。鉴于永远不会有那么多地图,我倾向于单个散列对象。部分原因是这提供了一种很好的方法来返回现有的所有地图。但是基于字符串的查询是否有任何特殊原因会更有用。

希望你能给我一些明确的信息。

谢谢你, Pluckerpluck

1 个答案:

答案 0 :(得分:6)

实际上不鼓励使用基于字符串的值,因为它比散列消耗更多的内存。

Redis优化小哈希并以内存有效的方式对其进行编码。这种编码称为zipmap(或redis 2.6中的ziplist)。请参阅http://redis.io/topics/memory-optimization,特别是“尽可能使用哈希”部分。