将数据存储在Riak中作为JSON

时间:2012-04-02 04:35:38

标签: php nosql riak

我最近开始使用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是否能更好/更快地运行?!

提前致谢。

1 个答案:

答案 0 :(得分:3)

默认情况下,数组已在RiakObject->store()转换为JSON;你不需要做任何事情。

如果您查看PHP客户端源代码,json_encode() store() jsonizeTRUE方法中会使用RiakBucket->newObject()(当情况属于这种情况时)你使用{{1}}): https://github.com/basho/riak-php-client/blob/master/riak.php#L1513

如果您要在浏览器中执行以下操作(存储阵列后):

  

http://127.0.0.1:8098/riak/test/riak_developer_1

你会回来的:

  

{“name”:“John Smith”,“年龄”:28,“公司”:“Facebook”}

当您使用PHP客户端从Riak中取回数据时,它正在执行相反的操作,最终得到原始的PHP数组。