• python---memcache基本使用以及内部原理


    简单使用:

    import memcache
    
    mc  = memcache.Client(['127.0.0.1:8081','127.0.0.1:8082','127.0.0.1:8083','127.0.0.1:8084'],debug=True)
    
    
    mc.set('foo',"bar")
    
    ret= mc.get('foo')
    print(ret) #bar

    发布式算法:

    #经过算法获取将数据放在哪台机器
    #字符串位运算转化为数字
    #内部处理函数
    # def cmemcache_hash(key):
    #     return (((binascii.crc32(key) & 0xffffffff) >> 16) & 0x7fff) or 1
    # serverHashFunction = cmemcache_hash

    算法测试:

    将键key ==> foo转换为数字,再对主机数求余数,决定放置位置

    #内部算法函数测试
    # import binascii
    #
    # def cmemcache_hash(key):
    #     return (((binascii.crc32(key) & 0xffffffff) >> 16) & 0x7fff) or 1
    # serverHashFunction = cmemcache_hash
    #
    # r = cmemcache_hash(bytes("k1",encoding="utf-8"))
    # print(r)  结果5646
    # mc.set('foo',"bar")
    #将foo转化为数字,foo = 6653
    #主机数4个
    #求余数1,放在第二台...

    memcache的权值

    python-memcached模块可以支持集群操作,其原理是在内存维护一个主机列表,且集群中主机的权重值和主机在列表中重复出现的次数成正比
    
    mc = memcache.Client([('1.1.1.1:12000', 1), ('1.1.1.2:12000', 2), ('1.1.1.3:12000', 1)], debug=True)
    #('1.1.1.1:12000', 1)前为ip地址及端口,后为权值,为该主机重复出现的次数

    权值测试:

    #权值测试
    #将127.0.0.1::8082权值设置为2,出现次数多
    mc  = memcache.Client(['127.0.0.1:8081',('127.0.0.1:8082',2),'127.0.0.1:8083','127.0.0.1:8084'],debug=True)
    #算法处理时,为1,2余数是都在127.0.0.1:8082主机上,增大了其存放数据的可能性

    高可用:

    #高可用
    #问题提出,当某台机器嗝屁了,那么他的数据将丢失
    #处理办法,在每台机器后面加上一台机器,同步信息,在前面的嗝屁后,后面的顶上
  • 相关阅读:
    JPA唯一索引更新删除的问题
    java8时间类的一些封装
    windows 下面必备软件
    YAPI工具在SpringMVC下的使用需要注意的一些问题
    软件
    sublime常用快捷键
    nio学习
    springboot集成rabbitmq的一些坑
    maven子项目的springboot配置
    RabbitMQ 学习
  • 原文地址:https://www.cnblogs.com/ssyfj/p/8604708.html
Copyright © 2020-2023  润新知