csredis icon indicating copy to clipboard operation
csredis copied to clipboard

HSetAsync方法经常不成功的bug

Open huahaiao opened this issue 5 years ago • 5 comments

作者你好: 我用的是nuget上3.1.6版,项目没有大的负荷,偶然有次发现用HsetAsync()方法写入数据没有成功,也没有异常。只是数据没有发生任何应有的变化。反复多次试验之后,发现偶尔也能执行成功。改成同步方法HSet之后,100%成功。我的项目环境是.netcore 2.2 不知道这是不是一个普遍的问题,吓得我赶快把所有的异步方法都改成了同步方法,包括ZAddAsync等尚未发现问题的方法。 代码如下:

var rhs= RedisHelper.HGet<List<RewardHis>>("REWARDHIS", openId);     
rhs.Add(rh);
RedisHelper.HSetAsync("REWARDHIS", openId, rhs);

我很想知道这是不是一个已知的bug,是否在后续版本得到了解决。[email protected]

huahaiao avatar Nov 13 '19 14:11 huahaiao

可能和网络环境有关,确实有同学说异步的这个问题。两个建议: 1、升级到最新 2、写入使用同步,读取用异步

因为异步用 SocketAsyncEventArgs 缓冲区问题,写入量过大会报错。

2881099 avatar Nov 13 '19 15:11 2881099

SocketAsyncEventArgs 资料太少,目前的协议那块还是使用原作者的代码,可能需要优化。

2881099 avatar Nov 13 '19 15:11 2881099

谢谢!!!

huahaiao avatar Nov 16 '19 02:11 huahaiao

可能和网络环境有关,确实有同学说异步的这个问题。两个建议: 1、升级到最新 2、写入使用同步,读取用异步

因为异步用 SocketAsyncEventArgs 缓冲区问题,写入量过大会报错。

目前这个问题解决了吗?

rungroo avatar Dec 30 '20 08:12 rungroo

可能和网络环境有关,确实有同学说异步的这个问题。两个建议: 1、升级到最新 2、写入使用同步,读取用异步 因为异步用 SocketAsyncEventArgs 缓冲区问题,写入量过大会报错。

目前这个问题解决了吗?

异步改造过,现在没出现这个问题了。

2881099 avatar Dec 30 '20 09:12 2881099