使用 Predis,如何设置(即存储)多维关联数组?
Using Predis, how to SET (i.e. store) a multidimensional associative array?
我 following this guide 在 PHP 中开始使用 Predis。在本指南中,他们给出了 set()
函数来存储键值对:
//sets message to contain "Hello world"
$redis->set(';message';, ';Hello world';);
现在我要使用 predis 缓存的数据是一个来自 MongoDB 数据库的多维关联数组,它看起来像
allRowsDataArray = array(
row0 = array(
key0 = value0,
key1 = value1,
...so on
),
row1 = array(
field0 = value0,
field1 = value1,
...so on
),
...so on
)
所以为了将这个数组保存在缓存中,当我这样做时
$redis->set('allRowsDataArray', $allRowsDataArray);
我明白了 exception/error:
Warning: strlen() expects parameter 1 to be string, array given in /var/www/html/testProject/plugins/predis/predis/src/Connection/StreamConnection.php on line 390
Notice: Array to string conversion in /var/www/html/testProject/plugins/predis/predis/src/Connection/StreamConnection.php on line 391
Fatal error: Uncaught Predis\Response\ServerException: ERR Protocol error: invalid bulk length in /var/www/html/testProject/plugins/predis/predis/src/Client.php:370 Stack trace: #0 /var/www/html/testProject/plugins/predis/predis/src/Client.php(335): Predis\Client->onErrorResponse(Object(Predis\Command\StringSet), Object(Predis\Response\Error)) #1 /var/www/html/testProject/plugins/predis/predis/src/Client.php(314): Predis\Client->executeCommand(Object(Predis\Command\StringSet)) #2 /var/www/html/testProject/plugins/predis/index.php(110): Predis\Client->__call('set', Array) #3 {main} thrown in /var/www/html/testProject/plugins/predis/predis/src/Client.php on line 370
所以问题是我错过了什么?我该如何解决这个问题?
Set
方法期望值为字符串。使用json_encode()保存数据。
$redis->set('allRowsDataArray', json_encode($allRowsDataArray));
并使用 json_decode()
从 Redis
检索。
我 following this guide 在 PHP 中开始使用 Predis。在本指南中,他们给出了 set()
函数来存储键值对:
//sets message to contain "Hello world" $redis->set(';message';, ';Hello world';);
现在我要使用 predis 缓存的数据是一个来自 MongoDB 数据库的多维关联数组,它看起来像
allRowsDataArray = array(
row0 = array(
key0 = value0,
key1 = value1,
...so on
),
row1 = array(
field0 = value0,
field1 = value1,
...so on
),
...so on
)
所以为了将这个数组保存在缓存中,当我这样做时
$redis->set('allRowsDataArray', $allRowsDataArray);
我明白了 exception/error:
Warning: strlen() expects parameter 1 to be string, array given in /var/www/html/testProject/plugins/predis/predis/src/Connection/StreamConnection.php on line 390
Notice: Array to string conversion in /var/www/html/testProject/plugins/predis/predis/src/Connection/StreamConnection.php on line 391
Fatal error: Uncaught Predis\Response\ServerException: ERR Protocol error: invalid bulk length in /var/www/html/testProject/plugins/predis/predis/src/Client.php:370 Stack trace: #0 /var/www/html/testProject/plugins/predis/predis/src/Client.php(335): Predis\Client->onErrorResponse(Object(Predis\Command\StringSet), Object(Predis\Response\Error)) #1 /var/www/html/testProject/plugins/predis/predis/src/Client.php(314): Predis\Client->executeCommand(Object(Predis\Command\StringSet)) #2 /var/www/html/testProject/plugins/predis/index.php(110): Predis\Client->__call('set', Array) #3 {main} thrown in /var/www/html/testProject/plugins/predis/predis/src/Client.php on line 370
所以问题是我错过了什么?我该如何解决这个问题?
Set
方法期望值为字符串。使用json_encode()保存数据。
$redis->set('allRowsDataArray', json_encode($allRowsDataArray));
并使用 json_decode()
从 Redis
检索。