多线程同时读取redis不同key,出现值乱串的情况

xyq1986 2017-06-29 10:48:21
假设redis里有key:a和b,值分别123和145
用两个线程同时分别读取a和b,读取出来的值却是一样的123或者145
这是什么原因?库用的是ServiceStack.Redis
...全文
2816 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
guanghui92luo 2018-08-15
  • 打赏
  • 举报
回复
引用 11 楼 awliern 的回复:
这个是读操作,不用加lock,查了一下,是调用的一个redis封装类把连接写成static导致的,已经可以了,谢谢大家!
我的估计也是这个问题,楼主如何改的呢

static 导致这个类在静态区,所以获取数据的context存在相同的地址中,去掉static不就行了嘛,每个线程都可以分配不同的地址存储获取的数据
Code’s Watch 2018-07-26
  • 打赏
  • 举报
回复
这个是读操作,不用加lock,查了一下,是调用的一个redis封装类把连接写成static导致的,已经可以了,谢谢大家!
我的估计也是这个问题,楼主如何改的呢
墨染倾城 2017-11-16
  • 打赏
  • 举报
回复
应该是用了同一个redis链接
xyz136299110 2017-08-31
  • 打赏
  • 举报
回复
引用 6 楼 xyq1986 的回复:
这个是读操作,不用加lock,查了一下,是调用的一个redis封装类把连接写成static导致的,已经可以了,谢谢大家!
怎么改,示指导,~~~
xyz136299110 2017-08-31
  • 打赏
  • 举报
回复
引用 5 楼 hanjun0612 的回复:
redis.AcquireLock(key)
请问如何解决的? 有方案共享下不? 求指教,谢谢!
xyz136299110 2017-08-31
  • 打赏
  • 举报
回复
我也遇到了这个问题,请求如何解决的啊? 有没有示例讲解下,谢谢,之前在本地发布测试都没问题,现在发布到线上测试就不停的key在跳,看了2天了都没找到处理办法,跪求帮助,谢谢!
正怒月神 版主 2017-06-30
  • 打赏
  • 举报
回复
redis.AcquireLock(key)
xyq1986 2017-06-30
  • 打赏
  • 举报
回复
这个是读操作,不用加lock,查了一下,是调用的一个redis封装类把连接写成static导致的,已经可以了,谢谢大家!
编程有钱人了 2017-06-30
  • 打赏
  • 举报
回复
引用 2 楼 xyq1986 的回复:
[quote=引用 1 楼 wangjun8868 的回复:] 先用单线程调试下!
单线程试过了,没问题的[/quote] http://www.thinksaas.cn/topics/0/599/599173.html 希望可以帮助到你
exception92 2017-06-30
  • 打赏
  • 举报
回复
处理的时候加载lock 锁呢
xyq1986 2017-06-30
  • 打赏
  • 举报
回复
引用 1 楼 wangjun8868 的回复:
先用单线程调试下!
单线程试过了,没问题的
编程有钱人了 2017-06-30
  • 打赏
  • 举报
回复
先用单线程调试下!

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧