Tại sao bộ đệm được lưu vào hệ thống tệp khi Redis được cấu hình làm phụ trợ bộ đệm?


7

Tôi đang sử dụng một cuộc gọi đến Mage::getSingleton('core/cache')->save()trong bộ điều khiển của tôi và nó đang lưu giá trị được lưu vào bộ đệm vào hệ thống tệp ( var/cache/) mặc dù Redis được định cấu hình là phụ trợ bộ đệm của tôi và dường như tất cả các bộ đệm khác trong Magento đều được lưu chính xác vào Redis.

Đây là cuộc gọi save ():

Mage::getSingleton('core/cache')->save($imageUrl, $cacheKey, array(Mage_Core_Model_Config::CACHE_TAG));

Đây là app/etc/local.xml:

<cache>
    <backend>Cm_Cache_Backend_Redis</backend>
    <backend_options>
        <server>redis11.i</server>
        <port>6379</port>
        <database>2</database>
        <password></password>
        <persistent>cache-db2</persistent>
        <force_standalone>0</force_standalone>
        <connect_retries>1</connect_retries>
        <automatic_cleaning_factor>0</automatic_cleaning_factor>
        <compress_data>1</compress_data>
        <compress_tags>1</compress_tags>
        <compress_threshold>20480</compress_threshold>
        <compression_lib>gzip</compression_lib>
    </backend_options>
</cache>

Tại sao nó lại lưu giá trị được lưu trong bộ nhớ cache vào hệ thống tệp thay vì Redis?


Có một vài vấn đề giống nhau trên github.com/colinmollenhour/Cm_Cache_Backend_Redis/, nhưng dường như không ai trong số họ đưa ra câu trả lời rất hữu ích :(
David Manners

Cảm ơn David - thật tốt khi biết! Vì vậy, bạn đang gặp vấn đề này cho mình ngay bây giờ?
kalenjordan

Eh không thực sự chúng ta có thư mục cache nhưng nó chỉ trống.
Phong tục David

Câu trả lời:


5

Bạn nên sử dụng Mage :: app () -> getCache () -> save () vì bộ đệm được khởi tạo trong phương thức getCache () bằng cách tìm nạp cấu hình và thiết lập điều này cho đối tượng bộ đệm, trong khi đó, hàm tạo Mage_Core_Model_Cache không làm được cái này, theo như tôi có thể thấy và nó sẽ trở lại mô hình bộ đệm mặc định.

Đã làm một bài kiểm tra nhanh với:

Mage::getSingleton('core/cache')->save(now(), 'time123', array(Mage_Core_Model_Config::CACHE_TAG)); 

AND

Mage::app()->getCache()->save(now(), 'time12345', array(Mage_Core_Model_Config::CACHE_TAG));

Thêm thông tin:

Mage_Core_Model_App :: _ initCache thực sự sử dụng cách sau để thiết lập đối tượng bộ đệm:

$this->_cache = Mage::getModel('core/cache', $options);

Điều đó có nghĩa là đối tượng bộ đệm lõi không được thêm vào sổ đăng ký để sử dụng như một singleton. Lần đầu tiên bạn gọi nó là singleton, một đối tượng bộ đệm lõi mới được tạo và hàm tạo được gọi mà không có bất kỳ tùy chọn nào.


1
Wow, tôi cảm thấy một chút ngượng ngùng ngay bây giờ. Điều đó đã làm việc! Cảm ơn!
kalenjordan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.