使用Redis存储哈希数组

Ric*_*wis 6 ruby arrays hash redis

我刚刚开始研究Redis,并希望能够存储一系列哈希值,我可以在其中弹出随机键/值,然后在需要时将其重新放入.

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

users = [{ username: "user1", password: "password"}, { username: "user2", password: 'password'}]
Run Code Online (Sandbox Code Playgroud)

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

@user = users.shuffle!.pop
Run Code Online (Sandbox Code Playgroud)

然后把它放回阵列中

users.push(@user)
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢

Man*_*odi 8

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

脚步:

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

一个类似的问题,以便更好地理解:Redis如何存储关联数组

参考文献:

PS:我没有Ruby经验.寻找合适的Redis Ruby API来支持所有这些操作!