luochen1990 / ring_redis

a python package in pure python; a lightweight, high available & extensible cache solution using redis
18 stars 4 forks source link

不太理解用法~ #1

Open zhourongyu opened 10 years ago

zhourongyu commented 10 years ago

找一个轻量的连接redis集群的方案挺不容易... 文档不够详细啊, test = redis_dict(REDIS_CONF['group0'], prefix='test.', expire=20) test是从集群里取出的某个client,prefix是key的头部?取client的时候,带这些参数看起来很别扭吧。

luochen1990 commented 10 years ago

test是一个字典,用来访问整个集群,使用的时候只要在定义好test之后,test['hello'] = 'world'这样用就行了,使用时不用关心到底key被存到哪个redis实例里了,只需要访问test[key]就行。

zhourongyu commented 10 years ago

这个明白,我是指在取test的时候 这个prefix/expire的参数似乎不太合适,因为redis的操作类似这样 test['key']. expire(20) 。现在相当于我想为key设置expire,那么在取test的时候就可以 test = redis_dict(REDIS_CONF['group0'], prefix='test.', expire=20)


另外执行命令的方法如何调用:
eg: 要执行  lrange test-list 0 -1
test.visit_redis("lrange","test-list", 0, -1) 取不到值~
貌似传参数方法不太对?
zhourongyu commented 10 years ago

犯二了... 忘了上面有个prefix~ 是可用的~ 感谢。

zhourongyu commented 10 years ago

有办法可以知道命中的是哪一个节点吗?貌似没有这个方法~

luochen1990 commented 10 years ago

test.alive_hash(test.get_entry('x'))

luochen1990 commented 10 years ago

另外, 关于你在三楼提到的prefix/expire参数的问题,我只能说,这两个参数是可选的参数,你不传他们就可以了。

zhourongyu commented 10 years ago

发现问题,这边写入的是JAVA 的jedis客户端,用ring_redis 很多key算到的节点是不正确的。 是不是HASH算法不一致?

luochen1990 commented 10 years ago

不懂你在说什么。。。一致性哈希本来就是实现相关的,又不是固定的逻辑,当然要用相同的客户端。。。用不同实现算出来的节点自然是不一样的。。除非有什么标准来约束一下