Каков формат вывода для команды Kyoto Cabinet `kchashmgr get`?

#php #bash #shell #kyotocabinet

#php #bash #оболочка #kyotocabinet

Вопрос:

Привет, товарищи Stackoverflowians.

Я хочу извлечь информацию из ключа кэша из файла Kyoto Tycoon cabinet, в частности, из выходных данных утилиты Kyoto Cabinet kchashmgr (см.: http://fallabs.com/kyotocabinet/util.html#kchashmgr )

Я пытаюсь извлечь дату истечения срока действия из выходных данных kchashmgr get из двоичного / шестнадцатеричного вывода.

 kchashmgr get /path/to/kyto/tycoon/casket.kch cache_key
 

Каков формат вывода приведенного выше, поэтому с помощью утилиты командной строки я могу это сделать:

 expirationTimestamp=$(kchashmgr get /path/to/kyto/tycoon/casket.kch cache_key | something)
 

Изначально я думал, что смогу запустить его (для его установки требуется ZLIB), но это, очевидно, не сработало. Я также попытался использовать переключатель -px, чтобы посмотреть, помогло ли это.

ПРИМЕЧАНИЕ: я ищу решение оболочки, которое, предположительно, было бы быстрее, чем использование PHP-скрипта.

Спасибо, что уделили время этой теме.

Постскриптум

 [yramirez@losthost ~ ]$ kcutilmgr conf -v  # version of Kyoto Cabinet
1.2.76
 

Комментарии:

1. Kyoto — это просто хранилище ключей / значений. Значение, которое вы получаете обратно, когда даете ему ключ, является непрозрачным «значением» для этого ключа. Если это значение имеет какую-либо структуру или формат, оно определяется приложением, которое его создало, и никоим образом не изменяется Kyoto. Откуда взялись данные в БД?

2. @Joe данные были сохранены с использованием интерфейса Memcached с серверной частью Kyoto Tycoon и включенным флагом MEMCACHE_COMPRESSED. Кстати, у меня уже есть решение с использованием PHP-скрипта, который принимает аргумент командной строки в качестве ключа, но по понятным причинам он работает медленно. Я подумывал о написании собственного расширения Kyoto Cabinet, но это перебор.

3. Анализ результата этой команды означает знание того, как memcached форматирует / сжимает этот ввод.

4. Вывод частично сжат, но находится в какой-то структуре данных. Я собирался зайти в исходный код и посмотреть, как он передается на консоль, но я не писал на C уже 8 лет:-(