php redis中pset和psetx的区别是什么?是否可以用它设置一个数组作为值?

aydmsdu9  于 2021-06-09  发布在  Redis
关注(0)|答案(3)|浏览(613)
$redisClient -> setex('key', 3600, 'value' );

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

nkkqxpd91#

psetex 是精确的 setex ,表示ttl的单位是毫秒,而不是秒。看到了吗https://redis.io/commands/psetex
作为值,可以设置任何二进制安全字符串。您可以存储以首选格式序列化的数组,如json或csv,但是对数组执行的每一个操作都必须完整地读取并完整地写回。
考虑redis中的其他数据类型:列表、集合、排序集合、散列(Map)。很可能另一种数据类型更适合您的需求。看到了吗https://redis.io/topics/data-types
始终可以使用 EXPIRE 或者 PEXPIRE .

gj3fmq9x

gj3fmq9x2#

正如其他人所描述的那样 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示例

czfnxgou

czfnxgou3#

https://redis.io/commands/set 与https://redis.io/commands/setex
是的,用serialize或jasn\u encode序列化数据。

相关问题