当 Memcached 缓存键为中文时无法缓存

编辑于:2023年09月29日

当 Memcached 缓存键为中文时无法缓存

一个 Laravel 框架的网站,启用 Memcached 缓存,但网站响应时间依然较长。经测试,如搜索词是英文,响应时间明显减少,如果 Memcached 缓存键包含中文,响应时间较长,估计是缓存失败。

Memcached 缓存失败

记录缓存日志

开启 log 模式

在缓存读取、保存等步骤加上日志记录,查看日志后确认,当 kay 为中文时,缓存内容为空。

//缓存存储前
Log::info('缓存: ' . $search_key);
Cache::put($search_key, $_data, 30);

查看缓存日志

[2023-09-27 23:23:34] production.INFO: 缓存: search:keyword:视频  
[2023-09-27 23:24:12] production.INFO: 查询: search:keyword:视频  
[2023-09-27 23:24:12] production.INFO: 缓存内容: HTTP/1.0 200 OK
Cache-Control: no-cache, private
Content-Type:  application/json
Date:          Wed, 27 Sep 2023 15:24:12 GMT
{"success":true,"data":null}  

"data":null 未缓存内容。

解决办法

使用md5函数处理kay,如:

$search_key = md5($search_key);
return Cache::remember($search_key, 60, function () use ($search_key)

Memcached 缓存成功

如上图所示,第二次访问,响应时间明显缩短。

相关推荐

暂无评论