我在我的Java項目中使用spymemcached 2.6rc1,我想使用Long類作爲可存儲對象。不幸的是,當我存儲例如新的Long(0)對象,get(...)和incr(...)給出了完全不同的結果 - get給出包含48值的Long對象,並且incr給出1. 請注意,48代表ASCII「0 「符號。當我嘗試直接從memcached獲取同一個鍵的值時(例如通過使用telnet),我得到了正確的結果-0。奇怪的是,Long是很好的序列化類。所以,很可能,默認代碼轉換存在一些問題。有人可以澄清如何解決這種情況?spymemcached get和incr方法給出了完全不同的結果
0
A
回答
2
有一個問題提交了一段時間後(spymemcached bug 41)。以下是Spymemcached的創始人Dustin Sallings對此問題所說的內容:
您不能混用IntegerTranscoder和incr/decr。 incr/decr要求編號爲 編碼爲字符串,因爲它們是語言不可知的服務器端操作。
這裏有一個單元測試,證明你想要做什麼:
public void testIncrDecrBug41() throws Exception {
final String key="incrdecrbug41";
// set to zero
client.set(key, 86400, "0");
// retrieve it to see if it worked
assertEquals("0", client.get(key));
// increment it
assertEquals(1, client.incr(key, 1));
// fetch it again to see if it worked
assertEquals("1", client.get(key));
}
請注意,您收到49的原因是因爲十進制49是字符串「1」。
因爲服務器端的語義,incr和decr會導致人們很大的困惑。在較新版本的memcached中(例如,我沒有在 我的二進制分支中應用的更改),incr和decr將在非數字字符串值上失敗。那就是, 你的第一個incr會拋出異常。
未來請在Spymemcached項目網站上提交bug。它可以在http://code.google.com/p/spymemcached找到。這樣我們可以儘快解決它們。
相關問題
- 1. REST API GET方法不給出結果
- 2. 不同版本的sklearn給出了完全不同的訓練結果
- 3. Php.ini給出了不同的結果
- 4. C pread給出了不同的結果
- 5. NSDateFormatterFullStyle api給出了不同的結果
- 6. 設置方法在geom_smooth默認的方法給出了不同的結果
- 7. 圖api和等價的FQL方法給出不同的結果?
- 8. ResNet50從keras給出了不同的預測結果和輸出結果
- 9. Oracle和MySQL中的AES加密給出了不同的結果
- 10. Weka中的UI和API代碼給出了不同的結果
- 11. nvvp和nsight的分析器給出了不同的結果?
- 12. 的Java gzip.read和PHP FREAD()給出了不同的結果
- 13. ACOS(雙)給出了x64和X32的Visual Studio不同的結果
- 14. Matlab中的FFT和numpy/scipy給出了不同的結果
- 15. PyMC2和PyMC3給出不同的結果...?
- 16. Print_r和foreach給出不同的結果
- 17. NSString的方法doubleValue給出了意想不到的結果
- 18. 不同的Maven版本給出了不同的pmd結果
- 19. random.choice在Python 2和3上給出了不同的結果
- 20. MD5在PHP和JAVA中給出了不同的結果
- 21. PHP cURL和file_get_contents給出了不同的結果?
- 22. php base64_encode hash_hmac和java給出了不同的結果
- 23. Django Shell和Django Web App給出了不同的結果
- 24. Codename One Date在iOS和Android上給出了不同的結果
- 25. Balana和WSO2身份服務器給出了不同的結果
- 26. LINQ針對XML和Db給出了不同的結果
- 27. wxPython在Windows和Ubuntu上給出了不同的結果
- 28. MockedObject和Real Object給出了不同的結果
- 29. Python3:sys.stdout在linux和windows上給出了不同的結果
- 30. `numpy.diff`和`scipy.fftpack.diff`在區分時給出了不同的結果