Делают ли клиенты memcache разных языков хэшем одинаково?

Мы хотели бы обработать в Java-приложении, сохранить результаты в нашем пуле серверов memcache и прочитать его с помощью memcache в PHP.

Это достаточно легко попробовать, но я бы попросил и посмотрел, сделал ли кто-нибудь еще это.

До тех пор, пока оба клиента Java и PHP подключаются к одному и тому же пулу серверов memcache, оба хэша обоих клиентов будут иметь такое же расположение на сервере, что и извлечение из PHP?

Нет. Не все клиенты хеш тоже. В качестве доказательства этого вы увидите, что некоторые клиенты предлагают «последовательное хеширование», а другие – нет.

Короче говоря, клиентам memcached разрешено использовать любой хеширующий алгоритм, который им нравится. Официального стандарта нет.

Клиент PHP поддерживает множество алгоритмов хеширования – так что может быть возможно настроить его на использование того же самого алгоритма, который использует ваша библиотека Java (похоже, есть несколько из них – которые вы используете?). Очевидно, вы хотите протестировать.

Другая возможность разрешить доступ на разных языках заключалась бы в том, чтобы не полагаться на сериализацию языка, а хранить объекты в формате JSON в виде строки текста.

Лично я использую Gson для Java и json_encode, json_decode в PHP.

pylibmc

import pylibmc mc = pylibmc.Client(["127.0.0.1"], binary=True, behaviors={"tcp_nodelay": True, "ketama": True}) key="someKey" i=0 while True: #mc.set(key, str(i)) value = mc.get(key) print(value) sleep(1) i+=1