node.js - 如何将一个键链接到redis中另一个存在的键的值

标签 node.js redis

我想要在 redis 或 nodejs 的一些 redis api 中有这样的东西

redis> HMSET local-user-id-001        id "001" name "Henry Leu" gender "m"
OK
redis> **LINK-KEY**  facebook-openid-001   local-user-id-001
OK
redis> HMGET local-user-id-001 id name gender
1) "001"
2) "Henry Leu"
3) "m"
redis> HMGET facebook-openid-001 id name gender
1) "001"
2) "Henry Leu"
3) "m"
redis> HSET facebook-openid-001 name "henryleu"
redis> HGET local-user-id-001 name
<string> henryleu

在我的例子中,我将创建一个本地用户帐户,并将其绑定(bind)到一个 SNS 帐户,因此最终用户可以通过本地用户 ID 或 SNS openid 加载他/她的个人资料信息。我想要的是为每个用户维护一个用户对象,可以从redis服务器中的本地userid或SNS openid读取。这样,占用的空间更少,维护更简单。

这是一条路吗?

最佳答案

redis 不支持键别名,但你可以添加自己的间接层。一种解决方案是使用另一个键值保持本地 id 和开放 id 之间的链接,例如:

set  link:facebook-openid-001 local-user-id-001 

def getUser(id) = {
    if isOpenId(id) hmget(get("link:" + id)) else hmget(id)
}

关于node.js - 如何将一个键链接到redis中另一个存在的键的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29058064/

相关文章:

Windows 上的node.js : add package from build *. Node

python - 如何在 Python 中压缩字符串以将其存储在 Redis 中?

node.js - 如何找出Node.js服务器CPU 100%的原因?

javascript - 使用 Promise 进行方法链接

spring - 仅读取几次后,什么会导致 spring redis 出现 'Read timed out'?

docker - Redis docker,无法连接到redis-cli

redis - 无法阻止工头

python - redis + gevent - 性能不佳 - 我做错了什么?

node.js - Step 和 Mongodb 驱动@Nodejs

node.js - MarkLogic 示例查询返回不正确的结果