java存入資訊php讀寫memcache亂碼問題_PHP教程

來源:互聯網
上載者:User
我們利用java把資料寫入然後利用php讀出,但這樣利用php讀出時發現了在memcache亂碼問題出來了,下面我來給大家介紹memcache亂碼的解決辦法。

java讀取php寫入memcache內容

故事背景:我用java插入一條數字記錄,用php讀取無法正確讀取。

今天發現如果使用MemCachedClient來插入一條數字,或者java的對象,那麼在php調出來就是亂碼。

對象可以理解,簡單的數字也會亂碼

代碼如下 複製代碼
mcc.set("a",25);

php中出來的是亂碼,同時如果採用telnet的方式來進行查詢
get a

出來問號。

翻了一圈說要改類包。

最後發現個問題,如果改用字串,那麼java和php就能通用了。

代碼如下 複製代碼
mcc.set("a","25″);

而且telnet 192.168.0.1 11211進入進行get也能得出正確的數字了。

本來我要對a這個值進行加法運算,覺得採用int會方便一些,居然和php讀取memcache的時候有衝突。還是來回進行變數類型轉換吧。

如果你也在使用java寫入memcache,php讀出memcache,通用一個字串儲存,就可以避免很多問題了。

不是java的類包不行。


java讀取php寫入memcache內容

當前需求:php將key為"my_key",value為"my_value"寫入到memcache中,然後用java串連memcache讀取my_key的值my_value。

php端的代碼為:

代碼如下 複製代碼

$mem=new Memcache;
$mem->connect("192.168.1.20",27688);
$mem->set("my_key","my_value",FALSE , 86400);
$my_v=$mem->get("my_key");
var_dump($my_v);
$mem->close();
?>

經檢測,php寫入後,用php和在memcache命令列都能擷取的很好。

但是,用下面的java代碼擷取,卻擷取到null

代碼如下 複製代碼

import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;

public class CacheReader {

static private MemCachedClient client =new MemCachedClient();
static{
String[] servers = { "192.168.1.20:27688"};
SockIOPool pool = SockIOPool.getInstance();
pool.setServers(servers);
pool.initialize();
}
public void get(String name){
System.out.println(client.get(name));
}
public static void main(String[] args) {
new CacheReader().get("my_key");
}
}

一開始,我還以為是我的編碼的問題,或者是某些參數設定的問題。後來,我想可能是各種memcache的用戶端的定址方式不太一樣吧。幾經周折,還是間接的解決了這個問題:我更換了java端的memcache的用戶端,採用net.spy.memcached.MemcachedClient就可以了。代碼如下:

代碼如下 複製代碼

import java.io.IOException;
import java.net.InetSocketAddress;

import net.spy.memcached.MemcachedClient;

public class SpyMem {
public static void main(String[] args) {
try {
MemcachedClient c=new MemcachedClient(new InetSocketAddress("192.168.1.20",27688));
System.out.println(c.get("my_key"));
c.shutdown();
} catch (IOException e) {
e.printStackTrace();
}
}
}

http://www.bkjia.com/PHPjc/632069.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/632069.htmlTechArticle我們利用java把資料寫入然後利用php讀出,但這樣利用php讀出時發現了在memcache亂碼問題出來了,下面我來給大家介紹memcache亂碼的解決辦法。...

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.