Laravel 在使用 Redis 的`keys`方法的时候怎样去掉前缀

举例,我这么查询

<?php
Illuminate\Support\Facades\Redis::keys('test:*');

会得到一组这样的数据

 [
      laravel_database_test:1
      laravel_database_test:2
      laravel_database_test:3
      laravel_database_test:...
 ]

如果我要删除这些数据就还需要自行将头部替换掉,否则就不能删除

<?php
use Illuminate\Support\Facades\Redis;

$prefix = config('database.redis.options.prefix');
$keys   = Redis::keys('test:*');

foreach ($keys as $key) Redis::del(str_replace($prefix, '', $key));

我查了laravel中关于key的方法Redis::setRedis::expiresRedis::expireRedis::ttl,他们都会自动将键名加上前缀,唯独Redis::keys返回来的键名还需要自己来单独处理,请问有方法直接返回无前缀的键名吗?

最佳答案

在config/database.php里找到redis的配置

'redis' => [

        'client' => env('REDIS_CLIENT', 'predis'),

       'options' => [
          'cluster' => env('REDIS_CLUSTER', 'predis'),
            'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),//注释掉这部分
...
4年前 评论
讨论数量: 1

在config/database.php里找到redis的配置

'redis' => [

        'client' => env('REDIS_CLIENT', 'predis'),

       'options' => [
          'cluster' => env('REDIS_CLUSTER', 'predis'),
            'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),//注释掉这部分
...
4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!