laravel获取redis类型的Cache缓存剩余过期时间TTL
去年业务需求要用户登陆长期有效避免登陆于是用了redis做了永久缓存。最近考虑到用户量越来越大,加上临时用户和不活跃的用户缓存不会失效清理只会像滚雪球一样占内存于是打算做下缓存优化。基本思路是强制所有缓存都设置为半年,再等用户每次请求的时候根据缓存有效剩余时间ttl范围随机刷新将要过期的用户缓存。可是一番操作下来发现laravel5.5的Cache缓存并没有提供查询缓存过期时间的方法,没办法只能另辟蹊径。因为我的缓存是用的redis来做的不是文件缓存所以可以根据redis的ttl方法来查缓存过期时间。问题在于laravel单独的redis方法是给数据库准备的,直接根据Cache时候的缓存key名称无法操作(因为带了缓存前缀)。摸索了一番还是解决了,下面上代码:
<code>
use Illuminate\Support\Facades\Redis;
$rds = Redis::connection('cache'); //使用cache缓存的redis配置
$cache_prefix = Cache::getPrefix(); //缓存前缀
$ttl = $rds->ttl(你的缓存key);
$rds->expire(你的缓存key, 过期秒数);
</code>
更多>>