2012-11-02 19 views

Trả lời

2

Không, bạn không thể kiểm soát từng cơ sở dữ liệu riêng lẻ. Những "cơ sở dữ liệu" này chỉ dành cho phân vùng hợp lý dữ liệu của bạn.

Những gì bạn có thể làm (tùy thuộc vào yêu cầu và thiết lập cụ thể của bạn) là quay nhiều lần lặp lại, mỗi trường hợp thực hiện một tác vụ khác nhau và mỗi tác vụ có tệp redis.conf riêng với nắp bộ nhớ. Không gian đĩa có thể không được giới hạn mặc dù, ít nhất là không ở cấp độ Redis.

Lưu ý phụ: Lưu ý rằng số 16 cơ sở dữ liệu không được mã hóa cứng - bạn có thể đặt số này trong redis.conf.

+0

Đây là một lựa chọn khác, nhưng tôi không chắc chắn có bao nhiêu chi phí tiêu thụ bộ nhớ cho mỗi trường hợp. – user209377

+0

Nhưng đây là tùy chọn _the_ –

4

Xem redis-rdb-tools

Bạn có thể nhận được một sử dụng bộ nhớ xấp xỉ bởi cơ sở dữ liệu, nên trong vòng 10% của hiện thực.

+0

Tôi sẽ thử, nhưng tôi đoán bằng cách nói 'trong vòng 10% thực tế', bạn đang nói nhiều hơn 10% so với những gì chương trình của bạn báo cáo, đúng không? Nhận được chiều dài lũy thừa cho mỗi khóa bằng cách sử dụng đối tượng gỡ lỗi như [câu hỏi này] (http://stackoverflow.com/questions/7638542/redis-show-database-size-size-for-keys) gợi ý, nó sẽ là một giới hạn thấp hơn tốt hơn ? Tôi cần phải kiểm tra. – user209377

+0

Đối với các đối tượng nhỏ, chiều dài tuần tự là chính xác. Nhưng đối với các đối tượng lớn hơn, nó là khủng khiếp không chính xác. Redis-rdb-tools đảo ngược các kỹ sư Redis 'cấu trúc dữ liệu để tìm ra bộ nhớ được sử dụng. Xem nhận xét trong https://github.com/sripathikrishnan/redis-rdb-tools/blob/master/rdbtools/memprofiler.py để tìm hiểu thêm –

0

Tôi đã làm điều đó bằng cách gọi dump trên tất cả các khóa trong Redis DB và đo tổng số byte được sử dụng. Điều này sẽ làm chậm máy chủ của bạn và mất một lúc. Có vẻ như kích thước dump trả về nhỏ hơn khoảng 4 lần so với mức sử dụng bộ nhớ thực tế. Những con số này sẽ cho bạn một ý tưởng về việc db nào đang sử dụng nhiều không gian nhất.

Dưới đây là mã của tôi: https://gist.github.com/mathieulongtin/fa2efceb7b546cbb6626ee899e2cfa0b