Cache.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. namespace app\models\system;
  3. use crmeb\traits\ModelTrait;
  4. use crmeb\basic\BaseModel;
  5. /**
  6. * 数据缓存
  7. * Class Express
  8. * @package app\models\system
  9. */
  10. class Cache extends BaseModel
  11. {
  12. use ModelTrait;
  13. const EXPIRE = 0;
  14. /**
  15. * 模型名称
  16. * @var string
  17. */
  18. protected $name = 'cache';
  19. /**
  20. * 获取数据缓存
  21. * @param string $key
  22. * @return result
  23. */
  24. public static function getDbCache(string $key)
  25. {
  26. self::delectDeOverdueDbCache();
  27. $result = self::where('key',$key)->value('result');
  28. return json_decode($result,true);
  29. }
  30. /**
  31. * 设置数据缓存存在则更新,没有则写入
  32. * @param string $key
  33. * @param string | array $result
  34. * @param int $expire
  35. * @return void
  36. */
  37. public static function setDbCache(string $key,$result,$expire = self::EXPIRE)
  38. {
  39. self::delectDeOverdueDbCache();
  40. $addTime = $expire ? time() + $expire : 0;
  41. if(self::be(['key'=>$key])){
  42. return self::where(['key'=>$key])->update(['result'=>json_encode($result),'add_time'=>$addTime]);
  43. }else{
  44. return self::create(['key'=>$key,'result'=>json_encode($result),'add_time'=>$addTime]);
  45. }
  46. }
  47. /**
  48. * 删除失效缓存
  49. */
  50. public static function delectDeOverdueDbCache()
  51. {
  52. return self::where('add_time','<>',0)->where('add_time','<',time())->delete();
  53. }
  54. /**
  55. * 删除某个缓存
  56. * @param string $key
  57. */
  58. public static function delectDbCache(string $key = '')
  59. {
  60. if($key)
  61. return self::where('key',$key)->delete();
  62. else
  63. return self::delete();
  64. }
  65. }