- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
memcached
可用于缓存静态数据,减少数据库查找,通常用于 memcached.get(id)
和 memcached.set(id)
.
但是,将其用于锁定机制是否可以?是否memcache.set
和 memcached.get
如果数据存在,总是提供数据,或者如果请求花费太多时间,它是否只返回 None ?
我想避免并发访问由 id
标识的特定资源我使用这个逻辑:
def access(id):
if memcache.get(id):
return access
else:
memcache.set(id)
return true
memcache.get(id) = username
返回一个值我们拒绝访问否则我们做
memcache.set(id) = username
停止后续访问并允许当前用户访问。
memcached
可以吗?像这样?威尔
set
和
get
实际上,如果数据可用而不管它花费多少时间,或者它是否在我发现的任何时间(例如:
Guaranteed memcached lock )中以尽可能少的时间提供最佳结果,则实际上是前一类,可能不适用于锁定认为它可能在 99% 的情况下都有效。
最佳答案
对于对此感兴趣的任何人,我在 Memcache Github 上创建了一个线程 Will memcached work reliably for implementing a locking mechanism? .它使用 get
解释了一些常见的警告。和 set
以及如何避免使用 add
.如果可以搜索distributed locking
,有的博客也解释了这个问题。使用 memcache
在您最喜欢的搜索引擎上。
还有一个相关问题Memcached, Locking and Race Conditions这可能有助于更清楚地了解内存缓存竞争条件。
以下是 Memcache 论坛上关于此的更多讨论:
Thread 1和 Thread 2
关于locking - memcached 可以用来加锁吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37458587/
确保只有“后入”线程可以访问互斥锁/锁定区域而中间线程不获取锁的正确方法是什么? 示例序列: A acquires lock B waits C waits B fails to acquire lo
synchronized 是 Java 语言中处理并发问题的一种常用手段,它也被我们亲切的称之为“Java 内置锁”,由此可见其地位之高。然而 synchronized 却有着多种用法,当它修饰
某个线程要共享数据时,先将其锁定,此时资源的状态为“锁定”,其他线程不能更改;直到该线程释放资源,将资源的状态变成“非锁定”,其他的线程才能再次锁定该资源。互斥锁保证了每次只有一个线程进入写入操作,
我是一名优秀的程序员,十分优秀!