apcu_delete()是删除指定键的唯一可靠方式,仅支持精确匹配字符串或数组,不支持通配符;需注意大小写敏感、ttl过期影响及cli模式下apc.enable_cli配置问题。
apcu_delete() 是清指定键的唯一可靠方式
APCu 没有类似 Redis 的 DEL key 那样带通配符或模糊匹配的批量删除接口,清单个键必须用 apcu_delete()。它接受字符串键名或字符串数组,返回布尔值——成功删掉至少一个键就返回 true,否则 false(包括键不存在、参数类型错误等情况)。
常见误操作是试图传入正则或 glob 模式,比如 apcu_delete('user_*'),这只会去删一个叫 user_* 的字面量键,不会匹配任何实际数据。
- 确保键名完全一致:APCu 键区分大小写,且不自动处理命名空间前缀(除非你自己加了)
- 如果用
apcu_store()存时带了 TTL,键可能已过期消失,此时apcu_delete()仍返回false,需配合apcu_exists()判断 - 多键删除建议传数组而非循环调用:一次
apcu_delete(['key1', 'key2', 'key3'])比三次单独调用略高效,且原子性更好
键名不确定时,先用 apcu_fetch() 或 apcu_exists() 校验
直接删一个不存在的键不会报错,但返回 false 容易被忽略,导致你以为删了其实没生效。尤其在缓存穿透或并发场景下,键可能刚被其他进程删掉或未写入。
推荐流程是:删之前先确认键存在,或删完后检查是否真没了。