በpython ውስጥ ከ zmq ጋር የመስራት መሰረታዊ ነገሮች፣ ቀላል የቁልፍ/የዋጋ ማከማቻ መፍጠር

መግቢያ

እንደ ሜምካሼ ያለ ቀላል የቁልፍ/ዋጋ ማከማቻ ምሳሌን እንመልከት። በቀላሉ ተዘጋጅቷል - ውሂቡ በማህደረ ትውስታ ውስጥ, በሃሽማፕ መዋቅር ውስጥ ተከማችቷል. በ tcp ሶኬት በኩል ይደርሳሉ. በፓይዘን ውስጥ፣ hashmap መደበኛ ዲክታ ነው። ለመዳረስ zeromq እንጠቀማለን።

በደንብ ማድረግ

ይህንን ጥቅል በ ውስጥ ለመጫን debian/ubuntu ወደ ኮንሶል ውስጥ ብቻ ይግቡ
sudo apt-get install libzmq-dev
sudo pip install zmq

ኮድ

ከእኛ ጋር ለመስራት አንድ ክፍል እንጻፍ አገልጋይ:
ጥቅም ላይ የዋለው የ zmq ሶኬት አይነት REQ (REQuest, request) ነው, ጥያቄ እንልካለን እና ምላሽ እንጠብቃለን.
በአውታረ መረቡ ላይ ማንኛውንም አይነት ውሂብ ለማከማቸት እና ለማስተላለፍ, መደበኛውን የኮመጠጠ ሞጁል እንጠቀማለን. ሥራው “ፕሮቶኮል” የሦስት እሴቶች ስብስብ ነው፡ (ትእዛዝ፣ ቁልፍ፣ ውሂብ)

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'
ተጠቀም

መሸጎጫ = SuperCacher()
cache.set ('ቁልፍ'፣ 'እሴት')
cache.get('ቁልፍ')

እንደ የቤት ስራ፣ የክፍል ምሳሌ ሲፈጥሩ አድራሻ/ወደብ የመግለጽ ችሎታን በመጨመር አተገባበሩን ያሻሽሉ።

አሁን እኛ እራሳችን እንጽፈዋለን። አገልጋይ.
በዚህ ጊዜ ሶኬት REP (REPly, ምላሽ) ጥቅም ላይ ይውላል - ጥያቄውን እየጠበቅን ነው, ምላሽ በመላክ. ጥያቄውን ተንትነን ወይ በመጻፍ ጊዜ 'እሺ' በማለት ምላሽ እንሰጣለን ወይም በመረጃ / በማንበብ ጉዳይ ላይ የለም።

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()

ሁሉንም ነገር አንድ ላይ ለመሞከር, አገልጋዩን በትእዛዙ እንጀምራለን
python daemon.py

በሚቀጥለው ትር ላይ ፓይቶንን በይነተገናኝ ሁነታ ያስጀምሩ።

>>> from lib import SuperCacher
>>> cache=SuperCacher()
>>> cache.set('key', 'value')
True
>>> cache.get('key')
'value'

ኦ ተአምር ፣ ይሰራል! አሁን “zmq ፕሮቶኮልን በመጠቀም የቁልፍ እሴት ማከማቻ ልማት” በሪፖርትዎ ውስጥ በደህና መፃፍ ይችላሉ።

ምንጭ: hab.com

በDDoS ጥበቃ፣ VPS VDS አገልጋዮች ለጣቢያዎች አስተማማኝ ማስተናገጃ ይግዙ 🔥 አስተማማኝ የድር ጣቢያ ማስተናገጃ በዲዶኤስ ጥበቃ፣ በቪፒኤስ ቪዲኤስ አገልጋዮች ይግዙ | ProHoster