2009-03-31 41 views
5

Tôi đang làm việc trên một lớp khách hàng cần tải dữ liệu từ cơ sở dữ liệu được nối mạng. Nó đã được gợi ý rằng thêm một dịch vụ bộ nhớ đệm tiêu chuẩn cho khách hàng có thể cải thiện hiệu suất của nó.Có lớp đệm bộ đệm Python chuẩn thứ 3 không?

Tôi rất muốn không phải xây dựng lớp bộ nhớ đệm của riêng mình - nó nổi tiếng là những điểm này cung cấp các điểm chung của lỗi. Sẽ tốt hơn nếu sử dụng một lớp mà người khác đã phát triển thay vì dành một lượng lớn thời gian của riêng tôi để gỡ lỗi một hệ thống lưu trữ trong nhà.

nhà phát triển Java có điều này: http://ehcache.sourceforge.net/

Đó là một mục đích chung hiệu suất cao lớp bộ nhớ đệm mà có thể hỗ trợ tất cả các loại dung lượng lưu trữ. Nó có các tùy chọn cho thời gian hết hạn dựa trên thời gian và các phương pháp khác để thu thập rác. Nó trông rất ngon. Thật không may tôi không thể tìm thấy bất cứ điều gì tốt cho Python.

Vì vậy, ai đó có thể đề xuất một lớp bộ nhớ cache đã sẵn sàng cho tôi sử dụng. Danh sách mong ước của tôi là:

  • Khả năng giới hạn số lượng đối tượng trong bộ nhớ cache.
  • Khả năng giới hạn độ tuổi tối đa của các đối tượng trong bộ nhớ cache.
  • LRU đối tượng expirey
  • Khả năng chọn nhiều hình thức lưu trữ (ví dụ bộ nhớ, đĩa)
  • Vâng sửa lỗi, duy trì tốt, được sử dụng bởi ít nhất một ứng dụng nổi tiếng.
  • Hiệu suất tốt.

Vì vậy, có đề xuất nào không?

CẬP NHẬT: Tôi đang tìm bộ nhớ đệm LOCAL của đối tượng. Máy chủ mà tôi kết nối đã được lưu trữ rất nhiều. Memcached không thích hợp vì nó yêu cầu lưu lượng mạng bổ sung giữa máy khách Windows và máy chủ.

Trả lời

4

Tôi khuyên bạn nên sử dụng memcached và sử dụng cmemcache để truy cập. Bạn không nhất thiết có thể giới hạn số lượng đối tượng trong bộ nhớ cache, nhưng bạn có thể đặt thời gian hết hạn và giới hạn dung lượng bộ nhớ mà nó sử dụng. Và memcached được sử dụng bởi rất nhiều tên tuổi lớn. Trong thực tế, tôi muốn gọi nó là loại tiêu chuẩn công nghiệp.

CẬP NHẬT:

Tôi đang tìm bộ nhớ đệm ĐỊA PHƯƠNG của các đối tượng.

Bạn có thể chạy memcached cục bộ và truy cập thông qua máy chủ cục bộ. Tôi đã làm điều này một vài lần.

Ngoài ra, giải pháp duy nhất tôi có thể nghĩ là django's caching system. Nó cung cấp một số phụ trợ và một số tùy chọn cấu hình khác. Nhưng đó có thể là một chút nặng nếu bạn không sử dụng django.

CẬP NHẬT 2: Tôi cho rằng đây là phương sách cuối cùng, bạn cũng có thể sử dụng jython và truy cập hệ thống bộ nhớ đệm java. Điều này có thể là một chút khó khăn để làm nếu bạn đã có khách hàng sử dụng CPython mặc dù.

CẬP NHẬT 3: Có thể hơi muộn để bạn sử dụng, nhưng một chủ nhân trước đây của tôi đã sử dụng ZODB cho loại điều này. Đó là một cơ sở dữ liệu thực tế, nhưng hiệu suất đọc của nó đủ nhanh để làm cho nó hữu ích cho bộ nhớ đệm.

+0

Điều đó không phù hợp trong trường hợp này ... Tôi đang cố gắng tăng tốc một ứng dụng mạng bằng cách thêm bộ nhớ cache LOCAL. Bộ nhớ cache mạng sẽ chậm đối với người dùng cuối vì họ có thể ở bất kỳ đâu trên thế giới. –

+0

Đáng buồn thay, nó là phức tạp để sử dụng Jython ở giai đoạn này. –

Các vấn đề liên quan