【问题标题】:Storing Data in Riak as JSON在 Riak 中以 JSON 格式存储数据
【发布时间】:2012-04-15 18:58:03
【问题描述】:

我最近开始在 PHP 中使用 Riak。

我究竟如何存储 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 是否以这种方式更好/更快?!

提前致谢。

【问题讨论】:

    标签: php nosql riak


    【解决方案1】:

    默认情况下,RiakObject->store() 中的数组已经被转换为 JSON;你不必做任何事情。

    如果您查看 PHP 客户端源代码,您会看到 store() 方法中使用了 json_encode(),而 jsonizeTRUE(当您使用 RiakBucket->newObject() 时就是这种情况): 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", "age": 28, "company": "Facebook"}

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

    【讨论】:

    • 非常感谢。我实际上并没有查看 PHP 源代码。这让事情变得清晰了很多。干杯。
    • 不用担心 - 我们真的应该在文档中明确说明。我会记下它;我有一些需要更新的 PHP 客户端文档。
    猜你喜欢
    • 2021-08-07
    • 2016-04-08
    • 1970-01-01
    • 1970-01-01
    • 2014-06-15
    • 1970-01-01
    • 2019-01-26
    • 2021-04-19
    • 1970-01-01
    相关资源
    最近更新 更多