为什么memcached拒绝使用某些密钥存储数据?

时间:2010-03-08 23:36:41

标签: python ubuntu memcached

我使用python的memcache扩展,我有一个非常奇怪的问题。 Memcached拒绝使用某些密钥存储完全相同的数据,并成功缓存其他一些数据。

>>> import memcache
>>> conn = memcache.Client('121.0.0.1:11211', debug=0)
>>> conn.set('138b9c95d693760840aab85ee5591d2', 'test');
True
>>> conn.set('138b9c95d693760840aab85ee5591d3', 'test');
0
>>> conn.set('138b9c95d693760840aab85ee5591d4', 'test');
True
>>> conn.set('138b9c95d693760840aab85ee5591d5', 'test');
0
>>> conn.set('138b9c95d693760840aab85ee5591d6', 'test');
True
>>> conn.set('138b9c95d693760840aab85ee5591d7', 'test');
0
>>> conn.set('138b9c95d693760840aab85ee5591d8', 'test');
True
>>> conn.set('138b9c95d693760840aab85ee5591d9', 'test');
True
>>> conn.set('138b9c95d693760840aab85ee5591e0', 'test');
True
>>> conn.set('138b9c95d693760840aab85ee5591e1', 'test');
True

我真的不明白。我应该补充一点,我使用memcache模块的1.40版本和在Ubuntu Server 9.10上运行的memcached 1.2.8。我用相同的键重新启动了memcached守护进程,结果相同。

感谢。

更新:我将memcached升级到版本1.4.2,打包在lucid repos上,结果完全相同。

更新#2:使用全新的ubuntu设置在另一台服务器上输入的完全相同的命令会给出相同的结果,相同的位置。

更新#3 按照建议,在客户端实例中使用列表而不是字符串:

>>> import memcache
>>> conn = memcache.Client(['121.0.0.1:11211'], debug=0)
>>> conn.set('138b9c95d693760840aab85ee5591d2', 'test');
0
>>> conn.set('138b9c95d693760840aab85ee5591d3', 'test');
0
>>> conn.set('138b9c95d693760840aab85ee5591d4', 'test');
0
>>> conn.set('138b9c95d693760840aab85ee5591d5', 'test');
0
>>> conn.set('138b9c95d693760840aab85ee5591d6', 'test');
0
>>> conn.set('138b9c95d693760840aab85ee5591d7', 'test');
0
>>> 
>>> conn = memcache.Client('121.0.0.1:11211', debug=0)
>>> conn.set('138b9c95d693760840aab85ee5591d2', 'test');
True
>>> conn.set('138b9c95d693760840aab85ee5591d3', 'test');
0

1 个答案:

答案 0 :(得分:1)

第一个参数应该是一个列表

conn = memcache.Client(['127.0.0.1:11211'], debug=0)