【问题标题】:what is the diff b/w pset and psetx in php redis?Is it possible set a array as value with it?php redis 中的 diff b/w pset 和 psetx 是什么?是否可以将数组设置为值?
【发布时间】:2020-02-18 17:35:06
【问题描述】:
$redisClient -> setex('key', 3600, 'value' );

$redisClient -> psetex('key', 3600, 'value' );

【问题讨论】:

    标签: php redis phpredis


    【解决方案1】:

    https://redis.io/commands/sethttps://redis.io/commands/setex

    是的,使用 serialize 或 jasn_encode 序列化数据。

    【讨论】:

      【解决方案2】:

      psetex 是精确的setex,这意味着 TTL 的单位是毫秒,而不是秒。见https://redis.io/commands/psetex

      作为值,您可以设置任何二进制安全字符串。您可以存储以您喜欢的格式(如 JSON 或 CSV)序列化的数组,但您对数组执行的每项操作都必须完整读取并完整写回。

      考虑 Redis 中的其他数据类型:列表、集合、排序集、哈希(映射)。有可能另一种数据类型更适合您的要求。见https://redis.io/topics/data-types

      您始终可以使用EXPIREPEXPIRE 为任何类型的密钥设置过期时间。

      【讨论】:

        【解决方案3】:

        正如其他人所描述的,SETEX 以秒为单位获取 TTL,PSETEX 以毫秒为单位。

        您可以让PhpRedis 为您处理序列化:

        $obj_r = new Redis();
        $obj_r->connect('localhost', 6379);
        
        $obj_r->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_PHP);
        $obj_r->set('serialized', ['this', 'is', 'an', ['array', 'of', 'values']]);
        
        var_dump($obj_r->get('serialized'));
        

        setOption examples in the docs

        【讨论】:

          猜你喜欢
          • 2017-07-04
          • 1970-01-01
          • 2017-11-23
          • 2014-07-21
          • 1970-01-01
          • 2016-03-18
          • 2012-08-01
          • 2020-08-08
          • 2011-09-13
          相关资源
          最近更新 更多