Laravel中用phpredis通过RedisJSON存储JSON值失败的解决方法
解决Laravel中用phpredis扩展存储RedisJSON类型数据的问题
你操作失败的核心原因是用了错误的RedisJSON命令——RedisJSON并没有JSON.new这个指令,正确的写入命令是JSON.SET,以下是具体的解决方法:
1. 正确写入RedisJSON数据
使用executeRaw执行标准的RedisJSON写入命令,注意必须指定路径参数(用.表示JSON根节点):
$redisCon = Redis::connection('default'); // JSON.SET 命令格式:JSON.SET 键名 路径 JSON字符串 $result = $redisCon->executeRaw(['JSON.SET', 'someKeyValue', '.', '{"math":0}']); // 成功执行时返回"OK",失败返回false if ($result === 'OK') { // 写入成功的业务逻辑 }
2. 读取RedisJSON数据
要读取存储的JSON结构数据,使用JSON.GET命令:
$jsonStr = $redisCon->executeRaw(['JSON.GET', 'someKeyValue']); // 转换为PHP数组 $data = json_decode($jsonStr, true);
3. 直接修改JSON内部字段
RedisJSON支持精准修改JSON中的指定字段,无需重新写入整个对象:
// 将math字段的值更新为100 $result = $redisCon->executeRaw(['JSON.SET', 'someKeyValue', '.math', '100']);
4. 验证数据类型
可以通过Redis CLI确认数据类型是否为RedisJSON:
redis-cli > TYPE someKeyValue # 正常应返回 "ReJSON-RL"(而非普通字符串类型的"string") > JSON.GET someKeyValue # 输出完整的JSON内容
内容的提问来源于stack exchange,提问作者Abhishek
相关产品推荐
相关产品推荐

