在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Python/ 對(duì) Python-memcache 分布式散列和調(diào)用的實(shí)現(xiàn)
通過(guò) memcached 實(shí)現(xiàn)領(lǐng)號(hào)排隊(duì)功能及 python 隊(duì)列實(shí)例
利用 pypy 提高 python 腳本的執(zhí)行速度及測(cè)試性能
Python FAQ3-python 中 的原始(raw)字符串
Mongodb 千萬(wàn)級(jí)數(shù)據(jù)在 python 下的綜合壓力測(cè)試及應(yīng)用探討
Parallel Python 實(shí)現(xiàn)程序的并行多 cpu 多核利用【pp 模塊】
python simplejson 模塊淺談
服務(wù)端 socket 開(kāi)發(fā)之多線程和 gevent 框架并發(fā)測(cè)試[python 語(yǔ)言]
python Howto 之 logging 模塊
python 之 MySQLdb 庫(kù)的使用
關(guān)于 python 調(diào)用 zabbix api 接口的自動(dòng)化實(shí)例 [結(jié)合 saltstack]
python 之利用 PIL 庫(kù)實(shí)現(xiàn)頁(yè)面的圖片驗(yàn)證碼及縮略圖
Python 通過(guò) amqp 消息隊(duì)列協(xié)議中的 Qpid 實(shí)現(xiàn)數(shù)據(jù)通信
python 中用 string.maketrans 和 translate 巧妙替換字符串
python linecache 模塊讀取文件用法詳解
Python 批量更新 nginx 配置文件
python 計(jì)算文件的行數(shù)和讀取某一行內(nèi)容的實(shí)現(xiàn)方法
python+Django 實(shí)現(xiàn) Nagios 自動(dòng)化添加監(jiān)控項(xiàng)目
多套方案來(lái)提高 python web 框架的并發(fā)處理能力
python 寫(xiě)報(bào)警程序中的聲音實(shí)現(xiàn) winsound
python 調(diào)用 zabbix 的 api 接口添加主機(jī)、查詢組、主機(jī)、模板
對(duì) Python-memcache 分布式散列和調(diào)用的實(shí)現(xiàn)
使用 python 構(gòu)建基于 hadoop 的 mapreduce 日志分析平臺(tái)
一個(gè)腳本講述 python 語(yǔ)言的基礎(chǔ)規(guī)范,適合初學(xué)者
Python 編寫(xiě)的 socket 服務(wù)器和客戶端
如何將 Mac OS X10.9 下的 Python2.7 升級(jí)到最新的 Python3.3
python 監(jiān)控文件或目錄變化
報(bào)警監(jiān)控平臺(tái)擴(kuò)展功能 url 回調(diào)的設(shè)計(jì)及應(yīng)用 [python 語(yǔ)言]
Python 處理 cassandra 升級(jí)后的回滾腳本
python 實(shí)現(xiàn) select 和 epoll 模型 socket 網(wǎng)絡(luò)編程
關(guān)于 B+tree (附 python 模擬代碼)
通過(guò) python 和 websocket 構(gòu)建實(shí)時(shí)通信系統(tǒng)[擴(kuò)展 saltstack 監(jiān)控]

對(duì) Python-memcache 分布式散列和調(diào)用的實(shí)現(xiàn)

煮酒品茶:對(duì) python-memcache 進(jìn)行學(xué)習(xí),把分布式 HASH 算法加進(jìn)去,不說(shuō)線上自己玩玩的程序可以加到里面去。memcached 讀存數(shù)據(jù)就這些東西,看著補(bǔ)。

分布式一致性 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 讀取數(shù)據(jù):

http://wiki.jikexueyuan.com/project/python-actual-combat/images/74.jpg" alt="pic" />

從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)

sql:

http://wiki.jikexueyuan.com/project/python-actual-combat/images/75.jpg" alt="pic" />

http://wiki.jikexueyuan.com/project/python-actual-combat/images/76.jpg" alt="pic" />

可利用起來(lái)的程序,稍改動(dòng)加一些 try 之類(lèi)的就可以用到自己的程序玩了。else下key =str(hash(sql))可以去掉。不知道為啥不好冊(cè)。

#coding:utf8
from memcache_ring import mc
import MySQLdb
#如果在 memcache 中就不查數(shù)據(jù)庫(kù),不在就取出來(lái)并存一份
sql = "select * from zwhset where id=100"
key = str(hash(sql))
#查數(shù)據(jù)庫(kù)
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()
    #如果沒(méi)有查到數(shù)據(jù),則原值返回
    if not value:
        return value
    else:
        key = str(hash(sql))
        #把存儲(chǔ)的結(jié)果給調(diào)用程序
        return mc(key,value)
#讀數(shù)據(jù),先看 memcached里有沒(méi)有,有就直接返回 memcached 查的值,沒(méi)有就查數(shù)據(jù)庫(kù),
#如果數(shù)據(jù)庫(kù)也返回空的話原值返回,如果有值就寫(xiě) memcached,然后把 value 返回
if not mc(key):
    select_sql(sql)
else:
    mc(key)