python---memcache基本使用以及内部原理

简单使用:

import memcache

mc  = memcache.Client(['127.0.0.1:8081','127.0.0.1:8082','127.0.0.1:8083','127.0.0.1:8084'],debug=True)

mc.set('foo',"bar")

ret= mc.get('foo')
print(ret) #bar

发布式算法:

#经过算法获取将数据放在哪台机器
#字符串位运算转化为数字
#内部处理函数
# def cmemcache_hash(key):
# return (((binascii.crc32(key) & 0xffffffff) >> ) & 0x7fff) or
# serverHashFunction = cmemcache_hash

算法测试:

将键key ==> foo转换为数字,再对主机数求余数,决定放置位置

#内部算法函数测试
# import binascii
#
# def cmemcache_hash(key):
# return (((binascii.crc32(key) & 0xffffffff) >> ) & 0x7fff) or
# serverHashFunction = cmemcache_hash
#
# r = cmemcache_hash(bytes("k1",encoding="utf-8"))
# print(r) 结果5646
# mc.set('foo',"bar")
#将foo转化为数字,foo =
#主机数4个
#求余数1,放在第二台...

memcache的权值

python-memcached模块可以支持集群操作,其原理是在内存维护一个主机列表,且集群中主机的权重值和主机在列表中重复出现的次数成正比

mc = memcache.Client([('1.1.1.1:12000', ), ('1.1.1.2:12000', ), ('1.1.1.3:12000', )], debug=True)
#('1.1.1.1:12000', )前为ip地址及端口,后为权值,为该主机重复出现的次数

权值测试:

#权值测试
#将127.0.0.::8082权值设置为2,出现次数多
mc = memcache.Client(['127.0.0.1:8081',('127.0.0.1:8082',),'127.0.0.1:8083','127.0.0.1:8084'],debug=True)
#算法处理时,为1,2余数是都在127.0.0.:8082主机上,增大了其存放数据的可能性

高可用:

#高可用
#问题提出,当某台机器嗝屁了,那么他的数据将丢失
#处理办法,在每台机器后面加上一台机器,同步信息,在前面的嗝屁后,后面的顶上
上一篇:安装Vmware workstation虚拟机(含软件和注册码)


下一篇:webkit webApp 开发技术要点总结【转】