Nhanganyaya
Ngatitarisei muenzaniso weyakareruka kiyi / kukosha kuchengetedza, senge memcache. Yakagadzirwa zviri nyore - iyo data inochengetwa mundangariro, mune hashmap chimiro. Ivo vanowanikwa kuburikidza netcp socket. MuPython, hashmap chirevo chenguva dzose. Kuti tiwane tinoshandisa zeromq.
kuchinja
Kuisa pasuru iyi mu debian/ubuntu, ingo pinda mukoni
sudo apt-get install libzmq-dev
sudo pip install zmq
kodhi
Ngatinyorei kirasi yekushanda neserver yedu:
Mhando yezmq socket inoshandiswa ndeye REQ (REQuest, chikumbiro), tinotumira chikumbiro uye tinomirira mhinduro.
Kuchengeta uye kutumira chero mhando yedata panetiweki, isu tinoshandisa yakajairwa pickle module. Iro basa "protocol" ituple yezvakakosha zvitatu: (command, key, data)
import zmq
import pickle
class SuperCacher:
def __init__(self):
context = zmq.Context()
self.socket = context.socket(zmq.REQ)
self.socket.connect('tcp://127.0.0.1:43000')
def get(self, key):
self.socket.send(pickle.dumps(('get', key, None)))
return pickle.loads(self.socket.recv())
def set(self, key, data):
self.socket.send(pickle.dumps(('set', key, data)))
return self.socket.recv() == b'ok'
Shandisa
cache = SuperCacher ()
cache.set('kiyi', 'value')
cache.get('kiyi')
Sebasa remumba, vandudza kuita nekuwedzera kugona kudoma kero/chiteshi paunenge uchigadzira muenzaniso wekirasi.
Zvino ngatinyorei server pachayo.
Panguva ino socket REP(REPly, mhinduro) inoshandiswa - isu takamirira chikumbiro, kutumira mhinduro. Isu tinopfuudza chikumbiro uye topindura pamwe ne 'ok' mune yekunyora, kana nedata / Hapana kana iri nyaya yekuverenga.
import pickle
import json
import zmq
def run_daemon():
memory = {}
context = zmq.Context()
socket = context.socket(zmq.REP)
socket.bind('tcp://127.0.0.1:43000')
while True:
try:
command, key, data = pickle.loads(socket.recv())
if command == 'set':
memory[key] = data
socket.send(b'ok')
elif command == 'get':
result = memory.get(key, None)
socket.send(pickle.dumps(result))
except Exception as e:
print(e)
if __name__ == '__main__':
run_daemon()
Kuti tiedze zvose pamwe chete, tinotanga sevha nemurairo
python daemon.py
Mune inotevera tebhu, tanga python mune inopindirana modhi.
>>> from lib import SuperCacher
>>> cache=SuperCacher()
>>> cache.set('key', 'value')
True
>>> cache.get('key')
'value'
Oh chishamiso, chinoshanda! Iye zvino unogona kunyora zvakachengeteka mukutanga kwako "kuvandudzwa kwekiyi-kukosha kuchengetedza uchishandisa zmq protocol"
Source: www.habr.com