[ PHP ] laravel predis 使用 hscan 和 scan
前言
前言的前言 1,线上 redis
版本为 2.8.19
,无法使用 unlink
。
前言的前言 2,此处描述的 redis
hash 数据,实时性,完整性要求不高。
前言的前言 3,框架为 laravel 5.6
,使用 predis
。
根据项目功能的要求,需要根据已经生成好的中间数据,重新生成 hash 类型的 redis
数据。
所以为减少重新生成的复杂度,解决方案的顺序为:
1. 生成临时的 key 为 tmp_key 的 hash 数据
2. 将原 key 的 hash 数据删除
3. 将 tmp_key rename 为 key
正文
根据前言描述的情况,在删除数据的时候,因为众所周知的原因 ( 线上禁止使用 del
、keys
等命令 ),需要使用 scan
、hscan
进行 key 或 hash 数据的循环删除,在查阅网上的 predis
,大多缺少对 hscan
,scan
使用的说明。因此这里简单说一下如何在 laravel
框架中使用 predis
的 hscan
和 scan
命令。
使用 hscan 进行删除的例子
代码如下
<?php
namescape Test\Tmp;
use Redis;
class TestRedis{
public function delHashByScan($key, $match = '',