我看到你可以在IronCache中原子地递增一个值,但是如果你有很多IronWorkers试图将一个值put
到一个缓存键中呢?将这些值更新放在消息队列中以便将更新同步到缓存更好,还是有其他惯用方法?
目前没有惯用的方法可以在不引发竞争条件神的情况下更新非整数缓存项。有很多不同的技巧可以绕过这个限制,但你的 MQ 解决方案(假设只有一个工作线程在编写更改)可能是你最好的选择。
我们知道这个缺点,我们正在努力修复,但我们目前没有什么要宣布的。
一种方法是将值拆分为多个缓存条目。假设你有 json 层次结构:
{
"x": "y",
"sub1": {
"a": "b"
},
"sub2": {
"c": "d"
}
}
将其更改为:
{
"x": "y",
"sub1": "cache_key_a",
"sub2": "cache_key_b"
}
然后在cache_key_a:
{
"a": "b"
}
并对cache_key_b等等做同样的事情。这会解决你的问题吗?