3
有辦法讓 Java/PHP share 同一塊 cache 嗎? (/z/programming)

有誰遇過這類需求? 讓 Java / PHP share 同一塊 memory cache. Java 寫入的資料,可以從 PHP 端讀出來(反之亦然)。最好支援 clustering。

我目前想到的大概就是 memcache ,資料傳遞用 json。 但是考慮到那是頻繁存取的 cache,並非純粹資料傳遞的 channel。 json serialize/deserialize 可能太耗資源。

請問還有什麼 solution 可用?

redis 可以解嗎?

IngramChen 積分 0

沒有類似的經驗,不過我會用 memcached + json 來做,json serialization 的 cost 其實不大 (是很大的 json 嗎?),不用太在意。

如果很不想用 json 就改用 protobuf,這個空間節省比較多。

redis 是可以取代 memcache ,不過它比較偏 data structure server,大概不會選它吧 (除非系統內已經用 redis 了,就順便用吧)

popcorny 積分 2

我覺得redis是首選耶!! 畢竟市場上類似的產品最成熟的應該就是Memcached跟Redis,而其中Redis又比Memcached更泛用。

metavige 積分 1 編輯於

其實 Memory 的 Cache 機制,這兩個都不錯,而且因為都有持續更新,所以應該大部分該解的問題都已經解了

除非你的量大到一定程度,可能才需要考慮其中細微的 Performance Issue

json 的確是好解法, +1

popcorny 積分 0

redis跟memcached應該都沒問題啊

smallufo 積分 0

我相信 memcache 應該是不行啦(除非透過 json)。 而 jedia api1 中 ,所 set 的東西,好像都是比較簡單的原生物件,例如 String / Integer / Map 之類 .  所以這是否也意味著,這些資料應該也可以被 php 讀出?

那是否有更複雜的 cache server,以某種 IDL (protobuf or Thrift) 為 protocol,可以塞更複雜的資料結構?

IngramChen 積分 0

Jedis 就是原生的 redis API,單純的 string/number...etc,php 的 redis client 應該也能直接讀出。Jedis 有 BinaryJedis 可用,如果要處理 binary 資料的話。

memcache Facebook 拿來 cache image binary 的 base64,也是用的嚇嚇叫。我覺得沒什麼問題啦。

如果 php 那一端不是自己能控制的,用 json 是最好了。跨平台的溝通、跨團隊的開發,個人認為還是選簡單一點的 protocol 比較好。