Ich benutze spionmcached. Ich habe ein paar Sachen eingestellt. Dann starte ich ein PHP-Skript, aber dann kann ich nicht alle diese Elemente mit php memcached bekommen. PHP-Memcached kann diese Elemente nur teilweise abrufen.
Ich kann den Hash-Algorithmus oder die Verteilungsstrategie von PHP nicht ändern. In unserem System verwenden wir Standard-Hashing (was jenkins nach php.net-Dokumentation ist). Und Verteilungsstrategie ist modulo für php-memcached. Ich habe gelesen, dass spionemcached konsistente Hashing verwendet. Gibt es einen Weg, wie ich modulo Hashing in spionemcached verwenden kann.
Mit anderen Worten, wie kann ich die set-Operationen von spymemcached oder andere Speicheroperationen, die mit den get-Operationen von php-memcached kompatibel sind, machen?
Wenn spygemcached das nicht kann, gibt es einen anderen memcached Client in Java, der mir das erlaubt?
Hilfe wird nicht nur geschätzt, es wird auch eine Prämie belohnt.
Java-Code:
%Vor%PHP-Code:
%Vor%Das Problem ist Hash, der standardmäßige php-memcached-Hash ist
(Jenkins einzeln) Elementschlüssel Hash-Algorithmus
wobei die Liste der spioncached Hashes lautet:
NATIVE_HASH
: simply Native hash (String.hashCode()).
stimmt nicht mit default überein php-memcached Memcached::HASH_DEFAULT
CRC_HASH
= & gt; %Code%
Memcached::HASH_CRC
= & gt; %Code%
FNV1_64_HASH
= & gt; %Code%
Memcached::HASH_FNV1_64
= & gt; %Code%
FNV1A_64_HASH
= & gt; %Code%
Memcached::HASH_FNV1A_64
= & gt; "MD5-basierter Hash-Algorithmus, der von Ketama verwendet wird." Also vielleicht FNV1_32_HASH
, aber trotzdem nicht Memcached::HASH_FNV1_32
Es gibt also keinen direkten Vergleich zwischen den beiden Bibliotheken, wenn Sie die PHP-Client-Konfiguration nicht ändern oder die spy-memcached-Bibliothek erweitern können.
SOLUTION 1: Wenn Sie sich history ansehen (Sie können ein Beispiel mit php Client-Hash-Änderung).
LÖSUNG 2: Andernfalls können Sie eine JenkinHash-Klasse erstellen (ich kopiere den Xmemcached-Code nach: Ссылка [Bitte beachten Sie die Xmemcached-Lizenzen und behalten Sie den Autor / die Lizenz im Quellcode] )
%Vor%dann:
%Vor%Mit PHP-Skript:
%Vor%test:
%Vor% LÖSUNG 3: Verwenden Sie Ссылка mit dem FNV1A_32_HASH
Hash-Algorithmus
Re: Kakawait (und auch zu Shades88)
Lösung # 2 ist falsch, weil xmemcached den ursprünglichen C-Code des Jenkins-Hashs, der ein unsigned verwendet, nicht richtig portiert hat. Das zu beheben wird auch die ArrayIndexOutOfBoundsException lösen, die Shades88 sehen konnte.
%Vor%Die Testdatendatei vergleicht den Java-Code mit dem C-Code. Erstellen Sie den C-Code, hacken Sie dann eine Menge zufälliger Wörter und ordnen Sie sie in einer Datei wie folgt an:
jenkinsHashTest.dat:
%Vor%... füge so viele hinzu, wie du möchtest
Tags und Links java php memcached spymemcached