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

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

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

煮酒品茶:對 python-memcache 進(jìn)行學(xué)習(xí),把分布式 HASH 算法加進(jìn)去,不說線上自己玩玩的程序可以加到里面去。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ù)庫中讀取數(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" />

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

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