我刚刚开始研究Redis,希望能够存储一个哈希数组,在那里我可以弹出一个随机的键/值,然后在需要的时候把它放回去。
所以在Ruby中我会有这样的东西
users = [{ username: "user1", password: "password"}, { username: "user2", password: 'password'}]
所以如果我想从数组中得到一个随机的键/值对象,我会这样做
@user = users.shuffle!.pop
然后把它放回数组
users.push(@user)
使用Redis的想法是,我有两个进程(基于Ruby的应用程序)需要同时共享一个用户池。一旦一个进程完成了一个用户,我希望它把它放回池中。
有人能给我指个路吗
谢谢
1条答案
按热度按时间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_6531.使用
HGET userId_653 username
从hash中获取相应的值1.如果你需要弹出键,只需在步骤3之后执行
SPOP users
。并且在步骤4中的处理之后再次为SADD
。一个类似的问题,以更好地理解:Redis how to store associative array
参考文献:
PS:我对Ruby没有经验。寻找合适的Redis Ruby API来支持所有这些操作!