有誰遇過這類需求? 讓 Java / PHP share 同一塊 memory cache. Java 寫入的資料,可以從 PHP 端讀出來(反之亦然)。最好支援 clustering。
我目前想到的大概就是 memcache ,資料傳遞用 json。 但是考慮到那是頻繁存取的 cache,並非純粹資料傳遞的 channel。 json serialize/deserialize 可能太耗資源。
請問還有什麼 solution 可用?
redis
可以解嗎?
有誰遇過這類需求? 讓 Java / PHP share 同一塊 memory cache. Java 寫入的資料,可以從 PHP 端讀出來(反之亦然)。最好支援 clustering。
我目前想到的大概就是 memcache ,資料傳遞用 json。 但是考慮到那是頻繁存取的 cache,並非純粹資料傳遞的 channel。 json serialize/deserialize 可能太耗資源。
請問還有什麼 solution 可用?
redis
可以解嗎?
沒有類似的經驗,不過我會用 memcached + json 來做,json serialization 的 cost 其實不大 (是很大的 json 嗎?),不用太在意。
如果很不想用 json 就改用 protobuf,這個空間節省比較多。
redis 是可以取代 memcache ,不過它比較偏 data structure server,大概不會選它吧 (除非系統內已經用 redis 了,就順便用吧)
redis跟memcached應該都沒問題啊
我相信 memcache 應該是不行啦(除非透過 json)。 而 jedia api1 中 ,所 set 的東西,好像都是比較簡單的原生物件,例如 String / Integer / Map 之類 . 所以這是否也意味著,這些資料應該也可以被 php 讀出?
那是否有更複雜的 cache server,以某種 IDL (protobuf or Thrift) 為 protocol,可以塞更複雜的資料結構?
Jedis 就是原生的 redis API,單純的 string/number...etc,php 的 redis client 應該也能直接讀出。Jedis 有 BinaryJedis 可用,如果要處理 binary 資料的話。
memcache Facebook 拿來 cache image binary 的 base64,也是用的嚇嚇叫。我覺得沒什麼問題啦。
如果 php 那一端不是自己能控制的,用 json 是最好了。跨平台的溝通、跨團隊的開發,個人認為還是選簡單一點的 protocol 比較好。