9

I am on an dead end with redis cache. I want to set an TTL on the initiation of a key. The key will be set by hSet($hash, $key, $data)

expire($key, '3600')

does not seem to work. Is there an hExpire() method?

Isengo
  • 2,004
  • 3
  • 21
  • 43

3 Answers3

19

Explanation:

Redis supports expiration only on KEY level. It does not support expiration on inner element(s) of any data structure, let alone hash.

Answer:

  1. No. There is no hExpire method/command in Redis.
  2. You're trying expire an inner element in a hash. This is not possible in Redis.

Update:

You can expire a whole data structure (a.k.a. a key).

One of the command to expire key is EXPIRE key seconds.

Assuming you are using phpredis, your method call can be setTimeout($hash, 3600).

sazzad
  • 5,740
  • 6
  • 25
  • 42
0

You need to put the TTL on the $hash itself as you can't expire individual keys of a hash.

Tomasz Poradowski
  • 1,251
  • 11
  • 12
-2

You can try TairHash, which is a redis module, similar to redis hash, but you can set expire and version for the field: https://github.com/alibaba/TairHash