// 存储用户 ID 为 1 的验证码
$code = Cache::put('user_sms_code_' . Auth::id(), '1234', 60); // user_sms_code_1
// 存储 ORDER_ID 为 1 商品秒杀库存
$code = Cache::put('order_locked_stock_' . $order_id, '1', 60); // order_locked_stock_1
以上场景是开发中经常遇到的,看上去没什么问题,但有个隐患是我们的 Cache key
是一个字符串,如果我们需要在业务中频繁的读写,那么很可能会敲错导致出现意外的 bug。
为了解决这个问题,我们需要将 Cache key
定义为一个常量。
define('USER_SMS_CODE', 'user_sms_code_%d');
define('ORDER_LOCKED_STOCK', 'order_locked_stock_%d');
再次回到上面的代码:
// 存储用户 ID 为 1 的验证码
$code = Cache::put(sprintf(USER_SMS_CODE, Auth::id()), '1234', 60); // user_sms_code_1
// 存储 ORDER_ID 为 1 商品秒杀库存
$code = Cache::put(sprintf(ORDER_LOCKED_STOCK, $order_id), '1', 60); // order_locked_stock_1
这样我们在敲缓存 key 时会有 IDE 提示,用 sprintf
方法可以直接把 id
替换,避免了拼接的形式导致代码可读性变差。
这只是个简单的例子,如果要更严谨还需要对 key 合法性进行判断。
如果觉得博客文章对您有帮助,异或土豪有钱任性,可以通过以下扫码向我捐助。也可以动动手指,帮我分享和传播。您的肯定,是我不懈努力的动力!感谢各位亲~