python实现简单redis客户端(2)重构

将客户端划分为通信模块和客户端模块进行重构

from socket import *
class Connection:
    def __init__(self, host="localhost", port=6379):
        self.host = host
        self.port = port
        self.client=socket(AF_INET, SOCK_STREAM)
    def connect(self):
        self.client.connect((self.host,self.port))

    def write(self,data):
        self.client.send(data.encode('utf8'))

    def read(self):
        data=self.client.recv(1024)
        return data

class Client:
    def __init__(self, host="localhost", port=6379, password=None, db=None):
        self.connection = Connection(host=host, port=port)
        self.password = password
        self.db = db or 0
        self.connection.connect()

    def format_command(self,*tokens, **kwargs):
        cmds = []
        for t in tokens:
            cmds.append("$%s\r\n%s\r\n" % (len(t), t))
        return "*%s\r\n%s" % (len(tokens), "".join(cmds))


    def execute_command(self,cmd,*args,**kwargs):
        command = self.format_command(cmd,*args,**kwargs)
        self.connection.write(command)
        data = self.connection.read()
        return data     

    def set(self,key,value):
        result = self.execute_command("SET",key,value)
        return result

    def get(self,key):
        value = self.execute_command("GET",key)
        return value


if __name__ == '__main__':
    client=Client()
    client.set('dog','love')
    value = client.get('dog')
    print(value)

效果:
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值