如何在键/值存储上实现incr/decr?
我使用的键值存储不支持incr和decr,这就是我想要创建它的原因。我使用过Redis和Memcached incr和decr,所以正如一些答案中提到的那样,这是一个完美的例子,说明了我希望incr和decr如何运行,所以感谢那些提到这一点的人。
发布于 2010-03-11 21:50:14
built in中,Memcache具有此功能
edit:看起来,如果不更新源代码,您将无法获得原子更新,因为似乎没有锁函数。如果有(这不是很好),你可以锁定值,获取它,在你的应用程序中增加它,放置它,然后解锁它。不过,这并不是最好的。
发布于 2010-03-11 21:51:49
拥有incr()函数的意义在于它都是存储的内部函数。你不需要把数据拉出来再推回来。
你正在做的事情听起来像是你想在你的代码中加入一些逻辑,将数据提取出来,递增,然后再推回……虽然这并不是很难(我想我刚刚描述了你是如何做的),但它在某种程度上忽略了这一点。
为了获得好处,您需要更改密钥库的源。这可能很简单。
但是很多缓存已经有这个功能了。如果你真的需要它来提高速度,也许你应该找一个像memcached这样的替代存储来支持它。
发布于 2010-03-12 23:37:18
看起来好像没有compareAndSet你就不走运了。但这将有助于从另一个角度来考虑这个问题。例如,如果您正在实现一个原子计数器来显示问题的赞成票数量,那么一种方法是为每个问题设置一个“表”,并为每个问题添加一个+1和一个“-1”。然后,为了“获取”,你需要对“表”求和。为了实现这一点,我假设“表”是便宜的,并且你不关心"get“需要多长时间才能计算,你只提到了incr/decr。
https://stackoverflow.com/questions/2425337
复制相似问题