使用Redis存储哈希数组

问题描述 投票:6回答:1

[我刚刚开始研究Redis,并希望能够存储一个哈希数组,我可以在其中弹出随机键/值,然后在需要时放回去。

所以在Ruby中,我会有这样的东西

users = [{ username: "user1", password: "password"}, { username: "user2", password: 'password'}]

因此,如果我想从数组中获取随机键/值对象,我会做这样的事情

@user = users.shuffle!.pop

然后将其放回数组中

users.push(@user)

使用Redis的想法是,我有两个进程(基于Ruby的应用程序)需要同时共享一个用户池。与用户完成流程后,我希望将其放回池中。

任何人都可以向我指出正确的方向

谢谢

arrays ruby redis hash
1个回答
8
投票

您可以Redis Hash存储用户信息,并Redis Set将所有这些哈希存储在一起。

步骤:

  1. 使用HSET命令进行Redis哈希:HMSET userId_653 username "Tom" password "gd36e3hd38d3jdj3yd3hd38"
  2. 将此哈希添加到名为用户的集合中:SADD users userId_653。该集合包含所有用户。
  3. 从集合中获取随机用户密钥:SRANDMEMBER users。它将返回userId_653
  4. 使用HGET userId_653 username从哈希中获取相应的值
  5. 如果需要弹出键,只需在步骤3之后执行SPOP users,然后在步骤4中进行处理后再次执行SADD

一个类似的问题,可以更好地理解:Redis how to store associative array

参考:

PS:我没有使用Ruby的经验。寻找合适的Redis Ruby API,它将支持所有这些操作!

© www.soinside.com 2019 - 2024. All rights reserved.