Java 高并发实例与使用问题(一)

高并发布商品

  • 容易产生抖动
  • 缓存的处理本地缓存 + 分布式缓存

何为抖动

程序被高频率的触发N次,产生N次事件

如何防止抖动

  • 结合RedisSon为当前用户进行加锁操作
    boolean isLockSuccess = RLock.tryLock(500, 1000, TimeUnit.MILLISECONDS);
    进行防抖操作

获取商品

  • 容易把数据库打垮

缓存:直接通过内存进行读取,减少与数据库的交互IO

缓存为何使用本地 + 分布式缓存(Redis)

  • 本地缓存 + Version: 可以减少远端的IO操作
  • 分布式缓存:协调和同步存最新数据到本地缓存

缓存设计的一般性原则(秦二爷)

  • 热点数据一律进缓存;
  • 缓存场景一律采取本地缓存+分布式缓存的综合方案;
  • 优先读取本地缓存,以本地缓存为主,远端分布式缓存为辅
  • 所有缓存设置过期时间,本地缓存过期时间控制在秒级;
  • 本地缓存务必同时设置容量驱逐和时间驱逐两种方式;
  • 缓存KEY具有业务可读性,杜绝不同场景出现相同KEY;
  • 缓存列表数据时,仅缓存第一页,缓存数量不超过20;
  • 杜绝并发更新缓存,防止缓存击穿;
  • 空数据进缓存,防止缓存穿透;
  • 读数据时,先读缓存,再读数据库;
  • 写数据时,先写数据库,再写缓存。

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值