对Python-memcache分布式散列和调用的实现

简介:

煮酒品茶:对python-memcache进行学习,把分布式HASH算法加进去,不说线上自己玩玩的程序可以加到里面去。memcached读存数据就这些东西,看着补。


分布式一致性HASH算法:memcache_ring.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#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读取数据:

wKioL1LSeDuRXANVAADW8yi1_eA271.jpg


从数据库中读取数据

sql:

wKioL1LTX1vTNIezAAB9FTHMdz0194.jpg


wKiom1LSeC-xCtr5AAG-lqNwfrk454.jpg


可利用起来的程序,稍改动加一些try之类的就可以用到自己的程序玩了。else下key =str(hash(sql))可以去掉。不知道为啥不好册。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#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)




本文转自 煮酒品茶 51CTO博客,原文链接:http://blog.51cto.com/cwtea/1351032,如需转载请自行联系原作者
目录
相关文章
|
14天前
|
分布式计算 Hadoop 大数据
大数据技术与Python:结合Spark和Hadoop进行分布式计算
【4月更文挑战第12天】本文介绍了大数据技术及其4V特性,阐述了Hadoop和Spark在大数据处理中的作用。Hadoop提供分布式文件系统和MapReduce,Spark则为内存计算提供快速处理能力。通过Python结合Spark和Hadoop,可在分布式环境中进行数据处理和分析。文章详细讲解了如何配置Python环境、安装Spark和Hadoop,以及使用Python编写和提交代码到集群进行计算。掌握这些技能有助于应对大数据挑战。
|
1月前
|
消息中间件 监控 NoSQL
一文读懂python分布式任务队列-celery
celery是一个简单,灵活、可靠的分布式任务执行框架,可以支持大量任务的并发执行。celery采用典型生产者和消费者模型。生产者提交任务到任务队列,众多消费者从任务队列中取任务执行【2月更文挑战第11天】
86 5
|
8月前
|
数据采集 XML 搜索推荐
聚焦Python分布式爬虫必学框架Scrapy打造搜索引擎
聚焦Python分布式爬虫必学框架Scrapy打造搜索引擎
|
8月前
|
机器学习/深度学习 运维 算法
分布式电源对配电网故障定位的影响(Python代码实现)
分布式电源对配电网故障定位的影响(Python代码实现)
分布式电源对配电网故障定位的影响(Python代码实现)
|
9月前
|
算法 新能源 调度
基于DistFlow的含分布式电源配电网优化模型【IEEE39节点】(Python代码实现)
基于DistFlow的含分布式电源配电网优化模型【IEEE39节点】(Python代码实现)
188 0
|
11月前
|
数据采集 搜索推荐 NoSQL
python如何分布式和高并发爬取电商数据
python如何分布式和高并发爬取电商数据
|
JSON 网络协议 Shell
Python 基于Python及zookeeper实现简单分布式任务调度系统设计思路及核心代码实现 2
Python 基于Python及zookeeper实现简单分布式任务调度系统设计思路及核心代码实现
191 0
|
网络协议 Linux 测试技术
Python 基于Python及zookeeper实现简单分布式任务调度系统设计思路及核心代码实现 1
Python 基于Python及zookeeper实现简单分布式任务调度系统设计思路及核心代码实现
143 0
|
数据采集 前端开发 搜索推荐
python如何通过分布式爬虫爬取舆情数据
python如何通过分布式爬虫爬取舆情数据
python如何通过分布式爬虫爬取舆情数据
|
存储 算法 NoSQL
说起分布式自增ID只知道UUID?SnowFlake(雪花)算法了解一下(Python3实现)
但凡说起分布式系统,我们肯定会对一些海量级的业务进行分拆,比如:用户表,订单表。因为数据量巨大一张表完全无法支撑,就会对其进行分库分表。但是一旦涉及到分库分表,就会引申出分布式系统中唯一主键ID的生成问题,当我们使用mysql的自增长主键(auto\_increment)时,充分感受到了它的好处:整个系统ID唯一,ID是数字类型,而且是趋势递增的,ID简短,查询效率快,在分布式系统中显然由于单点问题无法使用mysql自增长了,此时需要别的解决方案来支撑分布式业务。
说起分布式自增ID只知道UUID?SnowFlake(雪花)算法了解一下(Python3实现)