Redis 在京东到家的订单中的使用 (查看原文)

背景Redis作为一款性能优异的内存数据库,在互联网公司有着多种应用场景,下面介绍下Redis在京东到家的订单列表中的使用场景。主要从以下几个方面来介绍:订单列表在Redis中的...

tech.imdada.cn   
评论 (22)
Thumb

macpie 2017-08-08 09:23

同一秒后三位不一样?那订单就不都是数字?同一秒超1000单对京东订单量来说很容易达到
Thumb

自由天空 2017-08-08 09:27

为什么要设128个锁而不是一个呢
Thumb

macpie 2017-08-08 09:30

分段锁那里,如果java技术栈,可以用semphore实现。
Thumb

zuxianghuang 2017-08-08 10:30

不能看到全文吗
Thumb

牧歌 2017-08-08 17:59

得了吧,京东的技术是超百亿市值的厂子里面最不靠谱的。
Thumb

都知道贪多嚼不烂 2017-08-08 20:59

大厂都是rpc调用 ,服务n台部署,semphore无法解决这种情况吧
Thumb

u390543 2017-08-08 22:41

膜拜大神,讲的很透彻!!!!!!!
Thumb

TIGEEB 2017-08-08 22:49

@自由天空 一个不阻塞的太严重了
Thumb

emily0904 2017-08-08 23:48

写的比较详细 最近也在看redis 点个赞
Thumb

owen05 2017-08-09 00:20

2.6版本后Redis分布式,只有等到expire设置的时间到才能删除锁了吗?如果在expire时间内没有执行完,又一个线程进入修改了共享资源怎么办?总感觉这个expire值不好设定呢,,,,,,
Default avatar

lousama 2017-08-09 09:31

阈值阈值不是阀值
Thumb

东东◑▂◑ 2017-08-09 09:45

模127不是应该获得127个锁么,怎么会是128
Default avatar

lousama 2017-08-09 10:01

0~127当然是128了
Thumb

alun-c🍑🐒 2017-08-09 10:09

实现方式感觉很笨
Thumb

东东◑▂◑ 2017-08-09 10:13

对127取模,还能出现127?最多126
Thumb

taht_tba_u_esimorp 2017-08-09 12:57

借鉴了 Concurrent Hash Map的设计,回楼上:为什么不是1个锁
Thumb

吱先森 2017-08-12 15:22

这种示例代码没猜错的话应该是个实习生写的,循环里try/catch,看声明的几个全局变量就能看出对java的封装不理解,算了不说了,而且将到的几种实现方式,居然能是京东到家里用的,京东真的就这么low吗
Default avatar

u392360 2017-08-15 09:49

@owen05 不是只有expire设置的时间到了才能删除锁,持有锁的线程执行完业务逻辑后,就会删除。如果在expire时间内还没有执行完,另外一个线程确实会忽略之前线程获取的锁而获得新锁,这样也会导致之前获取锁的线程删除锁的时候又把新线程的锁删除掉,所以这就需要超时时间根据自己的实际情况设置的合理一点,设置5秒足够了,如果一个业务执行5秒都没执行完的话,说明业务肯定是有问题的
Default avatar

u392360 2017-08-15 09:53

@alun-c🍑🐒 2.6版本之前的确是挺麻烦的 2.6之后的版本使用一个命令就可以解决
Default avatar

u392360 2017-08-15 10:57

@东东◑▂◑ 刚开始用的是取模,后来参考了hashMap中的部分代码,改成了与运算,注释有误,不影响理解分段锁
Thumb

陈小伟 2018-02-06 08:47

很不错,学习了
Thumb

u294571 2018-11-07 21:50

null为什么往red is里面存?
用微信扫描
小程序码阅读原文

开发者头条

程序员分享平台