1.增加互斥锁:保证缓存和数据库数据一致性

2.增加消费队列,保证mysql数据的正常保存
This commit is contained in:
2026-04-20 14:13:48 +08:00
parent 614fb00ec4
commit 1eed3cf0f7
23 changed files with 836 additions and 255 deletions

View File

@@ -25,4 +25,16 @@ return [
'ttl_game_record' => $envInt('GAME_HOT_CACHE_TTL_GAME_RECORD', 60),
/** user 行缓存(秒),余额/连胜变更会主动删除 */
'ttl_user' => $envInt('GAME_HOT_CACHE_TTL_USER', 90),
/** 后台对同一用户互斥操作(如钱包加减点)的 Redis 锁 TTL */
'admin_user_mutation_lock_ttl' => $envInt('GAME_HOT_CACHE_ADMIN_USER_LOCK_TTL', 30),
/** 是否启用缓存回源队列(独立进程消费) */
'enable_cache_write_queue' => filter_var(env('GAME_HOT_CACHE_ENABLE_WRITE_QUEUE', true), FILTER_VALIDATE_BOOLEAN),
/** 队列 Redis List 键名 */
'queue_list_key' => env('GAME_HOT_CACHE_QUEUE_LIST_KEY', 'dfw:q:hot_data_write'),
/** 队列最大长度,超出则丢弃最旧一条再入队 */
'queue_max_length' => $envInt('GAME_HOT_CACHE_QUEUE_MAX_LENGTH', 50000),
/** 消费者 Timer 间隔(秒) */
'queue_consumer_tick_seconds' => (float) (env('GAME_HOT_CACHE_QUEUE_CONSUMER_TICK', '0.1')),
/** 每轮最多处理任务数 */
'queue_consumer_batch' => $envInt('GAME_HOT_CACHE_QUEUE_CONSUMER_BATCH', 80),
];

View File

@@ -46,6 +46,12 @@ return [
'count' => 1,
'reloadable' => false,
],
/** 热点缓存写队列消费者(与 GAME_HOT_CACHE_ENABLE_WRITE_QUEUE 配合) */
'gameHotDataQueueConsumer' => [
'handler' => app\process\GameHotDataQueueConsumer::class,
'count' => 1,
'reloadable' => false,
],
// File update detection and automatic reload
'monitor' => [