Class MemoryCodeCache
java.lang.Object
tech.riemann.nif.web.captcha.MemoryCodeCache
- All Implemented Interfaces:
CodeCache
内存验证码缓存(生产实现,H6 新增)
基于 ConcurrentHashMap,特点:
- 过期清理:验证码默认 5 分钟过期(
DEFAULT_TTL_MILLIS), set/get 时惰性清理过期条目,防止验证码 key 无限累积(内存泄漏) - 原子消费:覆写
consume(String, String)使用ConcurrentHashMap.remove(key, value)(仅当映射为该值时删除),并发下只有一个请求能消费成功,天然防重放 - null 值处理:set(key, null) 视为删除(与测试既有语义一致)
适用于单机部署;分布式场景请实现 CodeCache 接入 Redis 等,并覆写 consume(String, String) 为原子操作。
- Author:
- Kerbores(kerbores@riemann.tech)
-
Constructor Summary
Constructors -
Method Summary
-
Constructor Details
-
MemoryCodeCache
public MemoryCodeCache() -
MemoryCodeCache
public MemoryCodeCache(long ttlMillis)
-
-
Method Details
-
set
-
get
-
remove
Description copied from interface:CodeCache删除验证码根据键值删除存储的验证码(H6 新增原语,供
CodeCache.consume(String, String)默认实现与缓存清理使用)默认空实现用于兼容只实现了 set/get 的旧实现;需要真正删除语义的实现(如
MemoryCodeCache、Redis)应覆写 -
consume
-