zoukankan      html  css  js  c++  java
  • 使用Python操作memcache

    Python连接memcached的库有很多,处于简单以及高效的原则,最终选择了pymemcache,

    1. 优点
      1. 完全实现了memcached text协议
      2. 对于send/recv操作可以配置timeout
      3. 支持"noreply"特性,该可行可以先出的提高写的速度
      4. 使序列化/反序列化更简单
      5. 可以将网络异常,memecached错误当成是缓存丢失
    2. 安装pymemcache
      pip install pymemcache
    3. 使用pymemcache
      1. 基本操作
        
        
        from pymemcache.client.base import Client
        
        client = Client(('localhost', 11211))
        client.set('some_key', 'some_value')
        result = client.get('some_key')
      2. 使用memcache集群
        使用一致性HASH算法支持集群
        
        
        from pymemcache.client.hash import HashClient
        
        client = HashClient([('127.0.0.1', 11211),('127.0.0.1', 11212)])
        client.set('some_key', 'some value')
        result = client.get('some_key')
      3. 序列化操作
        
        
        import json
        from pymemcache.client.base import Client
        
        def json_serializer(key, value):if type(value)== str:return value, 1
             return json.dumps(value), 2
        
        def json_deserializer(key, value, flags):if flags == 1:return value
            if flags == 2:return json.loads(value)raiseException("Unknown serialization format")
        
        client = Client(('localhost', 11211), serializer=json_serializer,
                        deserializer=json_deserializer)
        client.set('key',{'a':'b', 'c':'d'})
        result = client.get('key')
    4. 最佳实践
      1. 在构造Client时,添加timeout 的配置,防止block操作
      2. 使用“noreply”来提高性能,默认情况下改属性在“set”, “add”, “replace”, “append”, “prepend”, and “delete”.操作时是开启的,“cas”, “incr” and “decr”.操作时关闭的
      3. 尽可能的使用get_many以及gets_many操作,来减少round trip的操作实践
      4. 使用“ignore_exc” 属性,将网络异常,memecached错误当成是缓存丢失
  • 相关阅读:
    streamsets 集成 cratedb 测试
    streamsets k8s 部署试用
    streamsets rest api 转换 graphql
    StreamSets sdc rpc 测试
    StreamSets 相关文章
    StreamSets 多线程 Pipelines
    StreamSets SDC RPC Pipelines说明
    StreamSets 管理 SDC Edge上的pipeline
    StreamSets 部署 Pipelines 到 SDC Edge
    StreamSets 设计Edge pipeline
  • 原文地址:https://www.cnblogs.com/navysummer/p/9675952.html
Copyright © 2011-2022 走看看