从Laravel迁移项目 - 迁移Cache

优质
小牛编辑
129浏览
2023-12-01

迁移cache分页

仓库地址: cache

安装

  1. composer require illuminate/cache

暂时实现 redis方式

还需安装

  1. composer require illuminate/redis
  2. composer require predis/predis //个人比较喜欢predis

启动predis

  1. function frameInitialized()
  2. {
  3. // redis
  4. \Predis\Autoloader::register();
  5. }

修改Conf/Config.phpuserConf方法中添加如下配置

  1. private function userConf()
  2. {
  3. return array(
  4. "redis"=>array(
  5. 'cluster' => false,
  6. 'default' => array(
  7. 'host' => '127.0.0.1',
  8. 'port' => 6379,
  9. 'database' => 0,
  10. ),
  11. 'redis' => array(
  12. 'host' => '127.0.0.1',
  13. 'port' => 6379,
  14. 'database' => 1,
  15. ),
  16. ),
  17. );
  18. }

先获取cache单例

  1. namespace App\Vendor\DB;
  2. use Conf\Config;
  3. use Illuminate\Cache\RedisStore;
  4. class Cache
  5. {
  6. /**
  7. * @var void
  8. */
  9. private static $_instance = null;
  10. /**
  11. * @return Cache
  12. */
  13. static public function getInstance() {
  14. if (is_null ( self::$_instance ) || isset ( self::$_instance )) {
  15. self::$_instance = new self ();
  16. }
  17. return self::$_instance;
  18. }
  19. /**
  20. * @param string $connection
  21. * @param string $driver phpredis/predis
  22. * @param string $prefix
  23. * @return \Predis\ClientInterface
  24. */
  25. public function redisConnect($connection = '', $driver = '', $prefix = ''){
  26. $config = Config::getInstance()->getConf('redis');
  27. $connection = is_null($connection) ? $connection : 'default';
  28. $driver = is_null($driver) ? $driver : 'predis';
  29. $prefix = is_null($prefix) ? $prefix : 'es';
  30. $redis =new \Illuminate\Redis\RedisManager($driver,$config);
  31. $cache = new RedisStore($redis,$prefix,$connection);
  32. return $cache;
  33. }
  34. }

测试集成是否正常

让我们先确认一下cache是否能正常工作

  1. use App\Vendor\Db\Cache;
  2. // 在Index控制器类添加以下方法
  3. function index()
  4. {
  5. //可以使用predis的方法,需要connection一下
  6. $default = Cache::getInstance()->redisConnect()->connection();
  7. $default->set('test', 'redis');
  8. $client = $default->get('test');
  9. $this->response()->write($client);
  10. //可以连接不同的redis库,也可以设置过期时间
  11. $redis = Cache::getInstance()->redisConnect('redis');
  12. $minute = 1;//以分钟
  13. echo $redis->tags('user')->remember('user:es', $minute, function(){
  14. return 'es';
  15. });
  16. }

重启服务后访问http://localhost:9501看到redis,控制台打印es,就可以使用cache了