缓存

本项目使用 symfony/cache 来完成缓存工作,它支持基本目前所有的缓存引擎。

在我们的 SDK 中的所有缓存默认使用文件缓存,缓存路径取决于 PHP 的临时目录,如果你需要自定义缓存,那么你需要做如下的事情:

你可以参考symfony/cache官方文档 来替换掉应用中默认的缓存配置:

以 redis 为例请先安装 redis 拓展:https://github.com/phpredis/phpredis

  1. use Symfony\Component\Cache\Simple\RedisCache;
  2. // 创建 redis 实例
  3. $redis = new Redis();
  4. $redis->connect('redis_host', 6379);
  5. // 创建缓存实例
  6. $cache = new RedisCache($redis);
  7. // 替换应用中的缓存
  8. $app['cache'] = $cache;

Laravel 中使用

在 Laravel 中框架使用 predis/predis

  1. use Symfony\Component\Cache\Simple\RedisCache;
  2. $predis = app('redis')->connection()->client(); // connection($name), $name 默认为 `default`
  3. $cache = new RedisCache($predis);
  4. $app['cache'] = $cache;

上面提到的 app('redis')->connection($name), 这里的 $name 是 laravel 项目中配置文件 database.phpredis 配置名 defaulthttps://github.com/laravel/laravel/blob/master/config/database.php#L118如果你使用的其它连接,对应传名称就好了。

使用自定义的缓存方式

如果你发现 symfony 提供的十几种缓存方式都满足不了你的需求的话,那么你可以自己建立一个类来完成缓存操作,前提这个类得实现接口:PSR-16

该接口有以下方法需要实现:

  1. public function get($key, $default = null);
  2. public function set($key, $value, $ttl = null);
  3. public function delete($key);
  4. public function clear();
  5. public function getMultiple($keys, $default = null);
  6. public function setMultiple($values, $ttl = null);
  7. public function deleteMultiple($keys);
  8. public function has($key);

下面为一个示例:

  1. <?php
  2. use Psr\SimpleCache\CacheInterface;
  3. class MyCustomCache implements CacheInterface
  4. {
  5. public function get($key, $default = null)
  6. {
  7. // your code
  8. }
  9. public function set($key, $value, $ttl = null)
  10. {
  11. // your code
  12. }
  13. public function delete($key)
  14. {
  15. // your code
  16. }
  17. public function clear()
  18. {
  19. // your code
  20. }
  21. public function getMultiple($keys, $default = null)
  22. {
  23. // your code
  24. }
  25. public function setMultiple($values, $ttl = null)
  26. {
  27. // your code
  28. }
  29. public function deleteMultiple($keys)
  30. {
  31. // your code
  32. }
  33. public function has($key)
  34. {
  35. // your code
  36. }
  37. }

然后实例化你的缓存类并在 EasyWeChat 里使用它:

  1. $app['cache'] = new MyCustomCache();

OK,这样就完成了自定义缓存的操作。