2013-12-02 1 views
1

Возможно ли это?memcached key of keys

$mc = new Memcached(); 
$mc->addServer("127.0.0.1", 11211); 
$data = array(

     'key_one' => array('something' => '0', 
          'something_else1' => 1, 
          'something_else2' => 2, 
          'something_else3' => 3, 
         ), 

      'key_two' => array('something' => '0', 
         'something_else1' => 1, 
         'something_else2' => 2, 
         'something_else3' => 3, 
         ) 
     ); 
$result = $mc->get("data['key_one']['something_else2']"); 
if($result) { 
    echo $result; 
} else { 
    echo "No data on Cache. Please refresh page pressing F5"; 
    $mc->set("data", $data,15) or die ("Failed to save data at Memcached server"); 
} 
+2

Шаг 1. Запустите свой код. Шаг 2. Ответ найден. –

+0

Вопрос должен быть «это не работает, как заставить его работать?» –

+0

yeap извините, что это не работает, как заставить его работать? –

ответ

1

Ваш set() должен работать:

$mc->set('data', $data, 15); 

И get():

$result = $mc->get('data'); 
$something = $result['key_one']['something_else2']; 
//or PHP >= 5.4.0 
$result = $mc->get('data')['key_one']['something_else2']; 
0

Нет, не получится. Memcached - это хранилище ключей. Таким образом, вы можете получить данные, хранящиеся с помощью уникального ключа. Что будет работать это:

$_temp_result = $mc->get('key_one'); 
$result = $_temp_result['something_else2'] 

Предполагая, что данные хранятся в Memcached, как показано на $data

0

Хм нормально ey, но как насчет set multi, который может быть правильным?

$mc->set('data')['key_deeper_1'],$value, $expired_time); 

or 

$data = array('key_1' => array(
            'key_deeper_1' => 'value', 
            'key_deeper_2' => 'value', 

          ) 
      ); 

$mc->set('data',$value, $expired_time); 
$mc-> get('data')['key_deeper_1'];