对Python-memcache分布式散列和调用的实现 推荐
2014-01-12 19:12
513 查看
煮酒品茶:对python-memcache进行学习,把分布式HASH算法加进去,不说线上自己玩玩的程序可以加到里面去。memcached读存数据就这些东西,看着补。
分布式一致性HASH算法:memcache_ring.py
从数据库中读取数据
sql:
可利用起来的程序,稍改动加一些try之类的就可以用到自己的程序玩了。else下
分布式一致性HASH算法:memcache_ring.py
#coding:utf8 import hash_ring import memcache memcache_servers = [ '127.0.0.1:11211'] weights = { '127.0.0.1:11211':1} ring = hash_ring.HashRing(memcache_servers,weights) #if value is null then get else set def mc(key,value="Null-0"): server_node = ring.get_node(key) mc = memcache.Client([server_node],debug=1) if value == "Null-0": return mc.get(key) else: return mc.set(key,value)一致性hash读取数据:
从数据库中读取数据
sql:
可利用起来的程序,稍改动加一些try之类的就可以用到自己的程序玩了。else下
key
=
str
(
hash
(sql))可以去掉。不知道为啥不好册。
#coding:utf8
from memcache_ring import mc
import MySQLdb
#如果在memcache中就不查数据库,不在就取出来并存一份
sql = "select * from zwhset where id=100"
key= str(hash(sql))
#查数据库
def select_sql(sql):
conn = MySQLdb.connect(host="localhost",user="root",passwd="",db="test",charset="utf8")
cursor = conn.cursor()
cursor.execute(sql)
value = cursor.fetchall()
#如果没有查到数据,则原值返回
if not value:
return value
else:
key= str(hash(sql))
#把存储的结果给调用程序
return mc(key,value)
#读数据,先看memcached里有没有,有就直接返回memcached查的值,没有就查数据库,
#如果数据库也返回空的话原值返回,如果有值就写memcached,然后把value返回
if not mc(key):
select_sql(sql)
else:
mc(key)
相关文章推荐
- 聊聊Python用rpc实现分布式系统调用的那些事
- python调用sendcloud接口实现邮件批量发送收取及url回调 推荐
- Python调用第三方接口实现nagios短信报警 推荐
- 聊聊Python用rpc实现分布式系统调用的那些事
- 聊聊Python用rpc实现分布式系统调用的那些事 推荐
- Twitter的分布式自增ID算法Snowflake实现分析及其Java、Php和Python版
- python 简单照相机调用系统摄像头实现 pygame
- python实现散列表的链表法
- 实现python调用Matlab的.m文件
- python 调用图灵机器人api实现简单的人机交互
- Python调用REST API接口的几种方式 推荐
- Python实现类似jQuery使用中的链式调用的示例
- 【Python数据挖掘课程】八.关联规则挖掘及Apriori实现购物推荐
- RBM算法模型应用在推荐系统 Python代码实现
- python调用wcf服务 实现网站对客户端的调用
- 分布式搜索elasticsearch java API 之(八)------使用More like this实现基于内容的推荐
- Python调用DLL实现部分ADB功能
- 分布式搜索elasticsearch java API 之(八)------使用More like this实现基于内容的推荐
- c# 动态加载dll文件,并实现调用其中的方法(推荐)
- Python实现远程调用MetaSploit的方法