csredis icon indicating copy to clipboard operation
csredis copied to clipboard

使用RedisHelper.HMSet报错

Open hu-jin-cheng opened this issue 3 years ago • 5 comments

使用RedisHelper.HMSet报错 1636974468

hu-jin-cheng avatar Nov 15 '21 11:11 hu-jin-cheng

RedisHelper.HMSet(key, "field1", "value1", "field2", "value2");

OR

Dictionary<string,object> keyValues = ...;
object[] objects = keyValues.Select(kv => new object[] { kv.Key, kv.Value }).SelectMany(a => a).ToArray();
RedisHelper.HMSet(key, objects);

2881099 avatar Nov 17 '21 10:11 2881099

请问,SetNx方法是原子性的吗?有没有可能Set后由于某些原因未能设置上过期时间?

rain7788 avatar Nov 17 '21 14:11 rain7788

请问,SetNx方法是原子性的吗?有没有可能Set后由于某些原因未能设置上过期时间?

用 Eval + Lua

2881099 avatar Nov 20 '21 16:11 2881099

用 Eval + Lua

RedisHelper.Set( key, value, expireSeconds, esists),这个方法已经确保了设置过期时间是原子性的,这么理解对吗

rain7788 avatar Nov 22 '21 05:11 rain7788

用 Eval + Lua

RedisHelper.Set( key, value, expireSeconds, esists),这个方法已经确保了设置过期时间是原子性的,这么理解对吗

看了生成的redis命令,这个方法好像可以直接拿来创建锁。 命令和截图: var b = await RedisHelper.SetAsync(key, value, 60, CSRedis.RedisExistence.Nx); 图片 1637570428.830671 [15 127.0.0.1:60828] "SET" "testLock:12138" "45b987ce-c129-4360-aa5c-68972d58e448" "EX" "60" "NX" 图片

catbiscuit avatar Nov 22 '21 08:11 catbiscuit