我最近开始使用Riak和PHP。
我究竟如何存储JSON数据?!我只是将JSON字符串推入Riak对象吗?!
Riak PHP客户端具有以下用于存储数据的内容:
require_once('riak-php-client/riak.php');
# Connect to Riak
$client = new RiakClient('127.0.0.1', 8098);
# Choose a bucket name
$bucket = $client->bucket('test');
# Supply a key under which to store your data
$person = $bucket->newObject('riak_developer_1', array(
'name' => "John Smith",
'age' => 28,
'company' => "Facebook"
));
# Save the object to Riak
$person->store();
这采用密钥数组数据的形式。那么在JSON的情况下,它会像下面一样吗?
# Supply a key under which to store your data
$person = $bucket->newObject('riak_developer_1', '{"name": "John Smith", "age": "28", "company": "Facebook"}';
我正在尝试找到存储数据的最佳方式,因为我需要使用Riak的搜索功能。我也不确定map-reduce是否能更好/更快地运行?!
提前致谢。
答案 0 :(得分:3)
默认情况下,数组已在RiakObject->store()
转换为JSON;你不需要做任何事情。
如果您查看PHP客户端源代码,json_encode()
store()
jsonize
时TRUE
方法中会使用RiakBucket->newObject()
(当情况属于这种情况时)你使用{{1}}):
https://github.com/basho/riak-php-client/blob/master/riak.php#L1513
如果您要在浏览器中执行以下操作(存储阵列后):
你会回来的:
{“name”:“John Smith”,“年龄”:28,“公司”:“Facebook”}
当您使用PHP客户端从Riak中取回数据时,它正在执行相反的操作,最终得到原始的PHP数组。