gpt4 book ai didi

java - guava支持xmemcached的[incr]方法吗?

转载 作者:行者123 更新时间:2023-11-30 04:52:55 25 4
gpt4 key购买 nike

Guava 非常有用。

现在,我想对一段时间内的访问计数器实现限制。(例如,人们在一小时内最多可以执行 3 次)

使用Guava的mapMarker或缓存非常容易......(就像使用memcached),但是当增加 map 中的计数器时我遇到了一些并发问题。

Guava可以像memcache一样支持incr操作吗?当map的值为整数时?或者为此创建一个新的实用程序类...

最佳答案

您可以存储信号量 ( link ) 而不是普通整数。查看方法 tryAcquire()。要定期重置许可数量,您可以结合使用 drain()release()。如果短时间内耗尽许可证存在问题,您还可以使用 AtomicInteger 并执行如下操作:

1) 使用get()查看当前值
2) 如果仍有可用配额,则尝试通过执行 compareAndSet(oldValue, oldValue + 1) 获取一个配额。
3) 如果值成功更新(即返回true),则允许线程继续。如果不是,线程必须从 (1) 重试。
4) 要重置许可数量,请使用 set()

关于java - guava支持xmemcached的[incr]方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9478102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com