V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  also24  ›  全部回复第 155 页 / 共 286 页
回复总数  5704
1 ... 151  152  153  154  155  156  157  158  159  160 ... 286  
2020-04-02 17:20:36 +08:00
回复了 muziling 创建的主题 程序员 现在有没有新的机制来确保一条记录只被处理一次
@lightingtime #18
如果需要考虑 Redis 失效,可以考虑直接拿 RedLock 的方案

简单点说就是,N 台 Redis 机器,只要在 N / 2 + 1 台机器上抢到了锁,就认为锁已经到手,如果只抢到少部分锁,就要及时删除。


关于 Redlock 的介绍可以参考这里:
https://redis.io/topics/distlock
http://redis.cn/topics/distlock.html
2020-04-02 15:21:19 +08:00
回复了 fingers 创建的主题 V2EX v 站右侧今天的广告有点强啊,这个博主
感谢这位广告主,付出的广告费用有助于站长对 V2 的长期运营。
2020-04-02 15:16:15 +08:00
回复了 guyeu 创建的主题 程序员 为啥要把 CRUD 叫“增删改查”而不是“增查改删”呢。。。
@guyeu #51
如图,我在 49 楼节选的话,就是来自你在 44 楼发的链接:

https://i.loli.net/2020/04/02/oYzSljyh7eFdbqE.png
2020-04-02 15:12:01 +08:00
回复了 guyeu 创建的主题 程序员 为啥要把 CRUD 叫“增删改查”而不是“增查改删”呢。。。
@guyeu #51
我没说 『错』啊,只是告诉你 retrieve 也是有出处的,就在你发的链接里面啊……
2020-04-02 14:25:31 +08:00
回复了 guyeu 创建的主题 程序员 为啥要把 CRUD 叫“增删改查”而不是“增查改删”呢。。。
@guyeu #44
英文维基百科里面也写了:
Alternate words are sometimes used when defining the four basic functions of CRUD, such as retrieve instead of read, modify instead of update, or destroy instead of delete.
2020-04-02 12:38:10 +08:00
回复了 muziling 创建的主题 程序员 现在有没有新的机制来确保一条记录只被处理一次
当然,其实还有更简单的办法:
SET task-24-key anystring NX EX max-lock-time

设置成功说明抢到了锁
设置失败说明没抢到

任务跑完了就 DEL task-24-key 就行~
2020-04-02 12:33:25 +08:00
回复了 muziling 创建的主题 程序员 现在有没有新的机制来确保一条记录只被处理一次
这东西本质上来说就是锁。

做好超时和释放机制就行。

举例,任务 task-24,我们用 Redis 来上锁。

构造 A-value = "ServerA:" + str(now_ts + timeout)
A 客户端先 SET task-24-key A-value NX
如果设置成功,说明拿到了锁,那就执行任务。

直到任务结束,使用一段 Lua 原子性的删除锁。
伪代码:if GET task-24-key == A-value then DEL task-24-key


如果刚才的 SET 没成功,说明有别人拿着锁,那就把 value 取出来看下
K-value = GET task-24-key

把 K-value 里的 now_ts + timeout 取出来看下过期没。
如果没过期,说明这个锁还有效,那就休眠等着。

如果已经过期,那就说明这个锁的主人可能已经死了,开始抢过期锁。
构造 A-value2 ="ServerA:" + str(now_ts2 + timeout)
继续扔一段 Lua 上去原子性的抢锁,伪代码:
if GET task-24-key == A-value
then
SET task-24-key A-value2


然后看一下 task-24-key 的值是否是 A-value2 。
是的话说明抢到了锁,执行任务,然后删锁……
不是的话说明锁被别人抢走了,那继续去看过期的问题……没过期就休眠……
2020-04-02 11:08:50 +08:00
回复了 guyeu 创建的主题 程序员 为啥要把 CRUD 叫“增删改查”而不是“增查改删”呢。。。
正经的回答一下,根据维基百科,这个词可能出自这本书:
https://books.google.com/books?id=ymy4AAAAIAAJ&pg=PA381&dq=%22CRUD%22

可以看到,书中将它描述为:memorable acronym

我觉得这表达了它一开始就是因为贴近单词比较好记忆而已。

翻开德语维基百科可以看到这样一段(注意是德语表述):
Von manchen Autoren wird alternativ das Akronym RUDI (insert an Stelle von create) oder CDUR (in Anlehnung an die Tonart C-Dur) benutzt.

可以看到,因为和 C-Dur 关联,也有人念 CDUR ~
2020-04-02 10:59:29 +08:00
回复了 guyeu 创建的主题 程序员 为啥要把 CRUD 叫“增删改查”而不是“增查改删”呢。。。
2020-04-02 10:54:23 +08:00
回复了 guyeu 创建的主题 程序员 为啥要把 CRUD 叫“增删改查”而不是“增查改删”呢。。。
难道不是因为这个原因么?

https://dict.cn/CRUD
2020-04-02 10:21:49 +08:00
回复了 wangbenjun5 创建的主题 程序员 这就是我为什么从 PHP 转向 Go 的原因
@Godikov 哈哈哈哈我就想看谁先说这个
2020-04-02 10:11:04 +08:00
回复了 wsseo 创建的主题 程序员 app 测出问题,是找 app 开发还是后端?
当然,测试也要尽量提高自身的姿势水平,尽量做到自己来判断问题的真正原因。
2020-04-02 10:10:25 +08:00
回复了 wsseo 创建的主题 程序员 app 测出问题,是找 app 开发还是后端?
提给 APP,如果 APP 认为是后端的问题,由 APP 转给后端。
@morningchoow
『有锁必丢车』这句话针对的是 『买锁防丢车』的心态。

因为有锁,所以会不自觉的放松,会对不安全的停车环境掉以轻心,会容忍车子离开自己的视线范围。

不买锁的目的,就是强迫自己更关注这些安全细节。


利益相关:
曾因锁被剪断丢过车。
有锁必丢车,所以不买锁,
那就只能搬进办公室。

后来办公室换了写字楼,不允许单车上楼了,
那就只好换了份工作。
楼主可以试一下购买 V2 的置顶功能,比每次发新帖要合适一些。
1 ... 151  152  153  154  155  156  157  158  159  160 ... 286  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1063 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 43ms · UTC 19:53 · PVG 03:53 · LAX 11:53 · JFK 14:53
Developed with CodeLauncher
♥ Do have faith in what you're doing.