使用Redis存储哈希数组

djmepvbi  于 2023-10-15  发布在  Redis
关注(0)|答案(1)|浏览(138)

我刚刚开始研究Redis,希望能够存储一个哈希数组,在那里我可以弹出一个随机的键/值,然后在需要的时候把它放回去。
所以在Ruby中我会有这样的东西

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

所以如果我想从数组中得到一个随机的键/值对象,我会这样做

@user = users.shuffle!.pop

然后把它放回数组

users.push(@user)

使用Redis的想法是,我有两个进程(基于Ruby的应用程序)需要同时共享一个用户池。一旦一个进程完成了一个用户,我希望它把它放回池中。
有人能给我指个路吗
谢谢

lkaoscv7

lkaoscv71#

你可以用Redis Hash来存储用户信息,用Redis Set来存储所有的哈希值。
步骤:
1.使用HSET命令创建一个Redis Hash:HMSET userId_653 username "Tom" password "gd36e3hd38d3jdj3yd3hd38"
1.将此散列添加到名为users的集合中:SADD users userId_653。此集合包含所有用户。
1.从集合中获取一个随机用户密钥:SRANDMEMBER users,返回userId_653
1.使用HGET userId_653 username从hash中获取相应的值
1.如果你需要弹出键,只需在步骤3之后执行SPOP users。并且在步骤4中的处理之后再次为SADD
一个类似的问题,以更好地理解:Redis how to store associative array
参考文献:

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

相关问题