Changed predis to phpredis: Getting segmentation fault

Viewed 409

(Code is locally tested on a mac)

I've created a simple test for Redis, but it, unfortunately, fails with [1] 27996 segmentation fault:

// Config in App.php
// Had to rename Redis, because of the use of phpredis!
'RedisManager' => Illuminate\Support\Facades\Redis::class,

//Test unit
use Illuminate\Support\Facades\Redis;

/** @test */
public function it_can_set_a_dummy_value_in_redis()
{
    $value = 'Hello';

    Redis::set($this->cacheKey, $value, 'EX', 60);

    $this->assertEquals($value, Redis::get($this->cacheKey));
}

It fails when the command set is fired.

I went through the code up to the point: Illuminate\Redis\Connections\PhpRedisConnection.php@command

I checked what the object-value of $this->client is:

Redis {#2278
  isConnected: true
  host: "127.0.0.1"
  port: 6379
  auth: null
  mode: ATOMIC
  dbNum: 0
  timeout: 0.0
  lastError: null
  persistentId: null
  options: {
    TCP_KEEPALIVE: 0
    READ_TIMEOUT: 0.0
    COMPRESSION: NONE
    SERIALIZER: NONE
    PREFIX: "local_database_"
    SCAN: NORETRY
  }
}

I check the connection with:

 dd($this->client->ping()); // it's true

However, it fails at the point:

return parent::command($method, $parameters); //set is called

Even though it is in a try-catch-block, it won't be shown there...

The logs show nothing:

  • nginx: 0 errors

  • php-fpm: 0 errors

  • redis:

    2867:M 29 Aug 2020 22:46:03.142 * Background saving started by pid 27498 27498:C 29 Aug 2020 22:46:03.145 * DB saved on disk 2867:M 29 Aug 2020 22:46:03.306 * Background saving terminated with success

So even Redis is working correctly.

I don't know what is going on. When I change to predis, everything works fine!

The only hint I have got is this thread. But since my ping() is ponged, it should work?

Any ideas how I can fix my problem?

0 Answers
Related