我正在写这个应用程序,我将使用Redis作为存储聊天消息的各种数据库。 我正在考虑使用SETNX,只要我需要设置任何给定的密钥,以确保它不存在。
但是应用程序需要非常灵敏,因为它是实时的。 我想知道的是,执行SETNX操作是否代价高昂,特别是如果有大量客户端执行该操作。
NB: 我仔细阅读了这篇文档http://redis.io/topics/data-types-intro,看起来在SETNX实现中有点退出,但我仍然不确定它的成本是多少。 感谢。
答案 0 :(得分:1)
我想知道的是执行SETNX操作是否是 成本高昂,尤其是在有大量客户表现的情况下 那次行动。
关于速度 - 因为redis是基于内存的,所以#34;非常快"。绝对比你首先尝试获取密钥以确定它是否存在的情况更快,如果它没有设置密钥,因为你将执行两次网络往返(get和set)而不是一次(setnx) )。
关于大量客户端 - redis是单线程的,并且在它们到达时按顺序执行命令,并且它能够处理许多同时连接的客户端(参见docs)。