最新回答 / hahhahhahhahah
自己经过这么长时间开发也大概明白了。并发会出现问题的根本在于操作(会涉及到修改)同一个公共资源(数据库)。以上的只有秒杀接口会涉及到操作数据库,而前面两个只是查询,不会有并发问题,所以不用考虑。自己回答了吧。
2018-10-22
最新回答 / sunnidy
键id,商品id,序号,购买人id,购买时间 1,xxx,1,null,null 2,xxx,2,null,null 。。。。1000,xxx,1000,null,null
2018-08-29
最赞回答 / 郭小V先森
redis可以设置过期时间一般来说往redis设置值(set)的时候会对这个key设置一个过期时间设置过期时间有两种方法,一种是倒计时,一种是时间戳。具体怎么设置可以上redis官网查询过期时间到了,这个key就值就被置空。用户获取出来的是空值,这时候按照视频说的就会去数据库获取新的信息
2018-08-16
最新回答 / 葉落無聲
我的理解是,分库分表是在多个服务器上都有相同结构的数据库,也就是每个库都有库存表和订单表,因为他们是相关联的。分库是根据id的。某个商品存在A库的库存表,那么这个商品的订单表应该也是在A库,不会存到其他库。
2018-08-14
最赞回答 / 春天的雪
我的理解是,缓存在redis上的seckill对象是旧的。因为其他人的秒杀行为会把数据库中的number减少,而redis上缓存的number没有改变。超时就是,一定时间后,redis上这个seckill被销毁,再次查询时就会从数据库直接拿,并且把这个拿到的最新seckill存入redis。
2018-07-28
最赞回答 / 精慕门6287748
在执行return语句之前会执行finally语句,这个是正常的。参考https://www.cnblogs.com/jzsz/p/7860502.html
2018-07-28
最赞回答 / study_workSpace
使用互斥锁(mutex key) ;简单点讲就是类似“锁”的机制,在缓存更新或者过期的情况下,先获取锁,在进行更新或者从数据库中获取数据后,再释放锁,需要一定的时间等待,就可以从缓存中继续获取数据String get(String key){
String value = redis.get(key); if(value == null){ if(redis.setnx(key_Mutex),"1"){
redis.expire(key_mutex,3*...
2018-07-05