当前位置:  开发笔记 > 编程语言 > 正文

在保存到缓存之前压缩Python对象

如何解决《在保存到缓存之前压缩Python对象》经验,为你挑选了1个好方法。

压缩Python对象(列表,字典,字符串等)的快速方法是什么?在从缓存中读取后将它们保存到缓存和解压缩之前?

我正在使用Django,我希望直接在Django的缓存后端添加压缩/解压缩支持,这使得它可以用于我所有的Django应用程序.

我查看了django/core/cache/backends/memcached.py

import cmemcache as memcache

class CacheClass(BaseCache):

    def __init__(self, server, params):
        BaseCache.__init__(self, params)
        self._cache = memcache.Client(server.split(';'))

    def get(self, key, default=None):
        val = self._cache.get(smart_str(key))
        if val is None:
            return default
        return val

    def set(self, key, value, timeout=0):
        self._cache.set(smart_str(key), value, self._get_memcache_timeout(timeout))

看起来像pickle/unpickle是由cmemcache库完成的.我不知道在哪里放压缩/解压缩代码.



1> Dominic Rodg..:

首先 - 你确定你需要它吗?您的数据结构是否太大而不适合缓存中的未压缩?压缩/解压缩会产生开销,这可能会使您首先通过缓存获得的任何收益无效.

如果你确实需要压缩,那么你可能想要使用zlib.

如果您打算使用zlib,您可能希望尝试该compress方法中可用的不同压缩级别,以平衡CPU时间与压缩级别:

zlib.compress(string[, level])
压缩字符串中的数据,返回包含压缩数据的字符串.level是控制压缩程度的1到9的整数; 1是最快的并且产生最小的压缩,9是最慢的并且产生最多.默认值为6. error如果发生任何错误,则引发异常.

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有