У клиентов memcache разных языков хэширование одинаково? - PullRequest
7 голосов
/ 22 мая 2009

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

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

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

Ответы [ 3 ]

4 голосов
/ 22 мая 2009

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

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

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

1 голос
/ 18 мая 2011

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

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

0 голосов
/ 28 сентября 2015

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...