在高并发秒杀场景下,为避免出现库存超卖问题,某电商平台采用了分布式锁机制来控制对共享资源(如库存数量)的访问。以下选项中,最可能被用于实现这种分布式锁的是哪一项(【Redis 的 SETNX 命令】)。
分布式锁是解决分布式系统多节点共享资源并发冲突的核心机制,可应用于秒杀库存超卖、分布式任务调度等场景。不同锁方案的适用边界清晰:本地锁如Java的synchronize关键字、文件系统互斥锁仅能在单机JVM或单节点内部实现线程同步,无法跨节点生效,不满足分布式场景需求;数据库行级锁虽能通过行记录锁定实现简单的分布式互斥,但存在性能损耗大、扩展性差的问题,不适用于高并发场景;基于Redis的分布式锁是高并发分布式场景的主流实现方案,早期常用SETNX命令实现原子加锁,现在更推荐使用带NX(仅当键不存在时设置)和EX(自动设置过期时间)参数的SET命令,原子性完成加锁与过期配置,既保证多节点间的互斥访问,又能通过自动过期避免死锁,适配高并发场景下的性能与可靠性要求。
本题考察的是分布式锁的实现机制。
A选项文件系统互斥锁:文件系统锁通常是本地锁,在单机环境下有效,不适合在分布式系统中使用,因此不适合高并发分布式场景。
B选项数据库行级锁:虽然数据库可以通过行级锁来实现一定的并发控制,但它性能较低、可扩展性差,且不是专门设计为分布式锁机制,不是最常见的方案。
C选项Redis 的 SETNX 命令:这是常用的分布式锁实现方式,SETNX(SET if Not eXists)可以原子地设置键,若键不存在则设置成功,从而充当“加锁”操作,配合过期时间可避免死锁,非常适用于高并发、分布式环境。
D选项Java 的 synchronize 关键字:这是Java语言提供的线程级同步机制,仅适用于同一JVM内的线程之间同步,不适用于多节点分布式系统。
因此,C 是最合适的答案。
