一、前言
在互联网应用中,缓存成为高并发架构的关键组件。本文主要介绍缓存使用的典型场景、实操案例分析、Redis使用规范及常规Redis监控。
二、常见缓存对比
常见的缓存方案:本地缓存包括HashMap/ConcurrentHashMap、Ehcache、Memcache、Guava Cache等,缓存中间件包括Redis、Tair等。
三、Redis使用场景
1、计数
Redis实现快速计数及缓存功能。 例如:视频或直播在线观看人数,用户每播放一次,就会自增1。
2、Session集中管理
Session可以存储在应用服务是JVM中,但这一种方案会有一致性的问题,还有高并发下,会引发JVM内存溢出。Redis将用户的Session集中管理,这种情况下只要保证Redis的高可用和扩展性,每次用户更新或查询登录都直接从Redis中信息获取。
3、限速
例如:高并发的秒杀活动,使用incrby命令实现原子性递增。 例如:业务要求用户一分钟内,只能获取5次验证码。
4、排行榜
关系型数据库在排行榜方面查询速度普遍偏慢,所以可以借助redis的SortedSet进行热点数据的排序。
比如在项目中,如果需要统计主播的吸金排行榜,可以以主播的id作为member, 当天打赏的活动礼物对应的热度值作为 score, 通过zrangebyscore就可以获取主播活动日榜。
5、分布式锁
在实际的多进程并发场景下,使用分布式锁来限制程序的并发执行。多用于防止高并发场景下,缓存被击穿的可能。
分布式锁的实际就是"占坑",当另一个进程来执行setnx时,发现标识位已经为1,只好放弃或者等待。 |