Phương pháp nhanh để nén các đối tượng Python (danh sách, từ điển, chuỗi, vv) trước khi lưu chúng vào bộ nhớ cache và giải nén sau khi đọc từ bộ nhớ cache là gì?Nén các đối tượng Python trước khi lưu vào bộ nhớ cache
Tôi đang sử dụng Django và tôi hy vọng sẽ thêm hỗ trợ nén/giải nén trực tiếp trong bộ đệm ẩn của Django, giúp nó khả dụng cho tất cả các ứng dụng Django của tôi.
Tôi nhìn vào django/lõi/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))
Hình như dưa/unpickle được thực hiện bằng cmemcache thư viện. Tôi không biết nơi để đặt mã nén/giải nén.
Máy chủ của tôi bị ràng buộc IO và RAM bị ràng buộc, không phải CPU bị ràng buộc. Phân bổ memcached hiện tại sử dụng 1,3 GB RAM. Vì vậy, nén dữ liệu bằng 50% tiết kiệm được 650MB RAM hoặc làm cho nó có thể lưu trữ hai lần nhiều mục trong bộ nhớ cache. – jack
@jack - xem chỉnh sửa của tôi - chúc may mắn! –
cảm ơn, tôi đã bình chọn câu trả lời của bạn. Nhưng tôi hy vọng sẽ tìm thấy một giải pháp chung chung hơn mà sửa đổi trong bộ đệm ẩn phụ trợ. – jack