RPM*_*984 8 c# redis stackexchange.redis
我正在尝试实现以下方案:
T到新的Redis SET中T到现有的 Redis SET中(我知道SETADD并不关心该集是否存在,而只是列出我的场景以供参考)
我可以看到有SetAddAsync(RedisKey, RedisValue value)和SetAddAsync(RedisKey, RedisValue[] values),但我不知道如何使用它(以及使用哪个重载?)
当我使用时StringSet,我只是序列化为Ta byte[],然后使用它作为RedisValue参数.
但不知道怎么做套装.
这就是我所拥有的:
var items = values.Select(serializer.Serialize).ToArray();
await cache.SetAddAsync(key, items);
Run Code Online (Sandbox Code Playgroud)
哪个serializer是转换T为a 的类byte[]
Mar*_*ell 11
它与您的使用方式基本相同StringSet.唯一的区别是,在设置字符串时,只设置一个值是有意义的 - 但是当添加到集合时,您可能希望一次添加一个或多个元素.
如果您要添加一个元素,只需使用:
db.SetAdd[Async](key, serializedValue);
Run Code Online (Sandbox Code Playgroud)
如果您想一次性添加更多项目,那么首先获取序列化项目,例如:
var items = Array.ConvertAll(values, value => (RedisValue)serializer.Serialize(value));
Run Code Online (Sandbox Code Playgroud)
或者调整现有代码:
var items = values.Select(value => (RedisValue)serializer.Serialize(value)).ToArray();
Run Code Online (Sandbox Code Playgroud)
这里的重要区别在于,我希望您的原始代码最终会带有a byte[][],where-如您所需RedisValue[].(RedisValue)上面的演员应该为你解决.
然后打电话:
db.SetAdd[Async](key, serializedValues);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8899 次 |
| 最近记录: |