使用
先从github上获取Beansdb的源代码(https://github.com/douban/beansdb),然后按照里面INSTALL文件安装beansdb.
查看Python客户端代码dbclient.py,其自带的测试代码如下:
安装memcache包后,在本地启动3个实例,然后运行dbclient.py,顺利执行!
分析dbclient.py
dbclient.py文件的最顶层包含:
- fnv1a:一个哈希函数。
- MCStore:memcache客户端的封装。
- WriteFailedError:自定义的异常类。
- Beansdb:Beansdb客户端类。
Beansdb类
Beansdb类包含的函数如下:
__init__
print_buckets
_get_servers
set
get
get_multi
delete
初始化函数
其中参数servers是服务器的配置,示例中的配置如下:
配置中的key是server,value是buckets。Beansdb类接受到这个配置后,初始化其内部的变量,我们可以通过print_buckets
函数查看初始化后的buckets和server_buckets的信息,对于上面的配置其输出如下:
set函数
我的理解是set的时候,是向所有key所对应的server中写,只要成功写入W个即可。但是代码的逻辑是只要get(key)所获得的值等于value就算作写入成功,同时我也没理解那句注释的意思
。
get函数
get的时候就是遍历key所对应的server,直到得到非空的值,同时把这个值写入已经遍历过的那些server中,下次就可以更快返回,这也是一种自我治愈(self heal)的过程。
测试函数
最后给出一个测试函数,我用它来检验自己的理解,其他的函数比较直观,在此不再赘述。