随笔分类 -  分布式锁

摘要:锁的几种,可重入锁 阅读全文
posted @ 2023-05-08 16:09 lamda表达式先驱 阅读(11) 评论(0) 推荐(0) 编辑
摘要:监听队列,如果队列不在要创建 因为是广播模式,要把交换机和队列绑定 阅读全文
posted @ 2023-02-10 09:41 lamda表达式先驱 阅读(17) 评论(0) 推荐(0) 编辑
摘要:3秒到了时间就会释放锁,但如果一个程序执行需要花5秒,就会导致第一个请求把第二个请求的锁给释放掉,产生误删现象 自己只能释放自己的锁 防止恶意删除锁或者误删锁 阅读全文
posted @ 2023-02-08 16:28 lamda表达式先驱 阅读(173) 评论(0) 推荐(0) 编辑
摘要:热点key过期,加一个锁,抢占到锁才会去查询mysql数据库,然后查到数据后重新写入redis, 几百台服务器,几十个热点数据,不能用jvm锁 重试问题 重试了几次,库存就会扣减几次 一定要有else机制才行 从递归调用到while循环 一直尝试获取锁,获取锁之后,开始执行下面的try 不停的cas 阅读全文
posted @ 2023-02-07 18:29 lamda表达式先驱 阅读(127) 评论(0) 推荐(0) 编辑
摘要:不加锁的情况下,redis仍然没有正确的减少库存 用watch监听一个或者多个key的值 ,值不能发生变化,发生变化事务就会取消 开启watch后 数据并未变更,执行事务成功,事务需要先入队列queue,再按顺序执行 使用excu的时候需要new一个匿名内部类,里面的operations包含 red 阅读全文
posted @ 2023-02-06 18:57 lamda表达式先驱 阅读(23) 评论(0) 推荐(0) 编辑
摘要:1.jvm锁较为垃圾,无法解决服务外部的共享资源的并发性问题, 所以尽量不要选择jvm本地锁. 2.一个for update的sql语句使用 适合商品只有一个库存的时候 3. 先查询再更新的情况,一个sql无法满足业务需求,同事要记录数据前后的变化量时, 需要用到悲观锁和乐观锁 4.如果读要求高,优 阅读全文
posted @ 2023-02-03 16:57 lamda表达式先驱 阅读(33) 评论(0) 推荐(0) 编辑
摘要:乐观锁,例子,set count = 4997 ,version++,where id = 1 and version = 0 使用代码进行乐观锁操作 如果影响条数为0,则递归重新调用 数据库连接超时问题,加了事务后,在更新操作枷加锁,不停重试,导致阻塞无法连接 不加事务的情况下,更新操作,自己也有 阅读全文
posted @ 2023-02-03 13:44 lamda表达式先驱 阅读(82) 评论(0) 推荐(0) 编辑
摘要:不需要加锁,一行更新语句即可,符合原子性 对于没有加注解的,mysql也会对增删改的自动加上事务,autocommit =0 的时候才没有事务,其他都有事务开启 sql语句可以解决 集群,多例和事务三种问题,但是在单一仓库才可以,如果多仓库上海,北京, 里面有相同的商品编号,就会出现新的问题 使用行 阅读全文
posted @ 2023-02-02 18:14 lamda表达式先驱 阅读(32) 评论(0) 推荐(0) 编辑
摘要:java自己的 synchornized 和 lock锁都是悲观锁,默认一定有其他线程争抢并修改数据 乐观锁 默认没有别的线程来抢夺,修改数据 更适合读多的场景, 通过version控制版本号,活着cas算法 超卖问题 超卖问题,本质是第一次发送了100条查询请求,查到的都是5000条, 然后都符合 阅读全文
posted @ 2023-02-02 10:13 lamda表达式先驱 阅读(59) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示