How to fix Magento Upgrade error Cannot instantiate interface while running CLI command?

Recently I have just upgraded Magento to the latest version 2.4.5.

After completing the upgrade successfully and when I try to run the CLI command it will throw an error.

Cannot instantiate interface Klevu\Search\Api\Service\Catalog\Product\StockServiceInterface#0 /var/www/html/vendor/magento/framework/ObjectManager/ObjectManager.php(70): Magento\Framework\ObjectManager\Factory\Dynamic\Developer->create('Klevu\\Search\\Ap...')
#1 /var/www/html/vendor/klevu/module-productsearch/Helper/Stock.php(29): Magento\Framework\ObjectManager\ObjectManager->get('Klevu\\Search\\Ap...')

In My case, I have enabled the Redis session and that will cause the issue. Continue reading “How to fix Magento Upgrade error Cannot instantiate interface while running CLI command?”

How to clean or flush cache programmatically in magento 2?

Many times we need to clear cache programmatically or using an external script, Using below code snippet we can clear of flush cache programmatically,

<?php
namespace Rbj\Cache\Block;

class CacheClear extends \Magento\Framework\View\Element\Template
{
    public function __construct(
        \Magento\Framework\View\Element\Template\Context $context,
        \Magento\Framework\App\Cache\Frontend\Pool $cacheFrontendPool,
        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
        array $data = []
    ) {
        $this->_cacheFrontendPool = $cacheFrontendPool;
        $this->_cacheTypeList = $cacheTypeList;
        parent::__construct($context, $data);
    }

     /* Using Product id */
    public function cacheClear()
    {
        /* get all types of cache in system */
        $allTypes = array_keys($this->_cacheTypeList->getTypes());

        /* Clean cached data for specific cache type */
        foreach ($allTypes as $type) {
            $this->_cacheTypeList->cleanType($type);
        }

        /* flushed the Entire cache storage from system, Works like Flush Cache Storage button click on System -> Cache Management */
        foreach ($this->_cacheFrontendPool as $cacheFrontend) {
            $cacheFrontend->getBackend()->clean();
        }
    }
}

Call function like below,
$productStockById = $block->cacheClear();

Get the list of all cache type by just below way,

$allTypes = array_keys($this->_cacheTypeList->getTypes());

Result like below type of all cache,

List of cache types:
array('config','layout','block_html','collections','reflection','db_ddl',
            'eav', 'customer_notification','config_integration','config_integration_api','full_page', 'translate', 'config_webservice');

If you want to flushAll cache, Use below methods,

foreach ($this->_cacheFrontendPool as $cacheFrontend) {
    $cacheFrontend->getBackend()->clean();
}