gpt4 book ai didi

.net - redis在用户注册时如何处理并发写请求

转载 作者:IT王子 更新时间:2023-10-29 06:11:59 26 4
gpt4 key购买 nike

当我想在我的注册模块中使用 redis 时遇到了问题。这是一个 asp.net 网站,而不是 MVC。用户在提交他们的电子邮件和手机号码后可以在我的网站上注册。我的应用程序会验证新用户是否唯一。验证管道在 SQL Server 中验证数据,如果有很多并发注册操作,它会向 SQL 插入两个相同的数据,为了解决这个问题,我使用 Redis 来缓存注册 Action 。当注册 Action 开始时,第一步,我们检查redis并将其插入到redis中,如果请求不存在于redis中,如果有相同的请求,则返回false。我使用 ServiceStack.Redis,它是 .net 的 redis 客户端。我的问题是:如果两个相同的请求操作redis,我们定义它们是A和B。A发现不存在相同的请求,然后B发现不存在相同的请求,然后A尝试在redis中设置值,但是 B 也尝试了同样的事情。redis 处理过这种情况吗?redis如何处理并发的两次写请求?我应该使用 set 还是 hash 来存储用户注册数据?

最佳答案

你的问题就在这里:

if there are a lot of concurrency registration actions, it would insert two same data to the SQL

Email 列(或您使用的任何标识符)上放置唯一索引,您就完成了。不需要涉及redis。

如果您仍想使用 Redis,可以利用它的 Lua 支持。也就是说,您将拥有一个函数来检查 key 是否存在并在 key 丢失时将其插入(或执行与注册过程相关的其他工作)。

Redis+Lua 文档:EVAL command .

关于.net - redis在用户注册时如何处理并发写请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19830076/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com