我在我的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. C pread給出了不同的結果
- 3. 設置方法在geom_smooth默認的方法給出了不同的結果
- 4. 圖api和等價的FQL方法給出不同的結果?
- 5. ResNet50從keras給出了不同的預測結果和輸出結果
- 6. 的Java gzip.read和PHP FREAD()給出了不同的結果
- 7. Weka中的UI和API代碼給出了不同的結果
- 8. ACOS(雙)給出了x64和X32的Visual Studio不同的結果
- 9. Matlab中的FFT和numpy/scipy給出了不同的結果
- 10. Oracle和MySQL中的AES加密給出了不同的結果
- 11. Print_r和foreach給出不同的結果
- 12. NSString的方法doubleValue給出了意想不到的結果
- 13. Python3:sys.stdout在linux和windows上給出了不同的結果
- 14. Codename One Date在iOS和Android上給出了不同的結果
- 15. PHP cURL和file_get_contents給出了不同的結果?
- 16. MD5在PHP和JAVA中給出了不同的結果
- 17. `numpy.diff`和`scipy.fftpack.diff`在區分時給出了不同的結果
- 18. MockedObject和Real Object給出了不同的結果
- 19. GC.GetGeneration方法給出了意想不到的結果
- 20. 解密不同的鍵給出了相同的結果
- 21. 浮點數的乘法在Numpy和R中給出了不同的結果
- 22. 同Easytrieve代碼給出了不同的結果
- 23. MySQL完全加入Where子句給出不正確的結果
- 24. JCache的Spymemcached的完全限定名稱
- 25. 列出Select的選項在FF和IE中給出了不同的結果
- 26. 自動完成不會給出結果
- 27. 的gradle更新包裝文件給出了不同的結果
- 28. R:mapply(GSUB ...)給出了不同的結果GSUB(......)我的數據
- 29. Java中的String.split與StringUtils.split給出了不同的結果
- 30. Android SDK中的經理給出了不同的結果