增强版缓存cache2
cache2函数必须依赖Redis。
cache2函数相比TP自带函数cache的功能实现了进一步增强。其中cache的功能,cache2都包含有,使用方法一样。
特别注意:cache缓存的内容,后台清空缓存的时候(或者某些特别项目操作的时候),就会被全部清除,cache2缓存的内容,后台清空缓存操作,不会全部被清除。
cache2主要体现在以下几方面。
1、cache2('ab*',null) 可以清除所有ab键名开头,也包括ab键名的缓存(注:键名指的是数组的key)
2、cache2('ab*') 可以列出所有ab键名开头,也包括ab键名的KEY,注意不包含值,比如['aa1','aa99','aaxx','aa'],仅只是KEY而已。
3、cache2(['aa','bb',''cc],'abcd') 像这种格式,第一项是数组,并且数组的KEY是数字下标,不能有字母的KEY数组,第二项是键名的话。就可以批量把他们加入缓存,可以反复追加,一次加入10万条耗时大约6秒左右。
第一项只能是类似下面的数组,里边的每一项可以是字符串,也可以是任意多维数组。
$aa = [ '第一项字符串', '第二项数组', '第三项',];不允许下面这种类型的数组,但你可以先使用array_values($aa)这个函数强制把他们转为数字下标即可.
$aa = [ 'aa'=>'第一项', '23'=>'第二项', 'xx'=>'第三项',];4、cache2('abcd','rpop') 这种格式,即第二项为rpop或lpop 这种关键字的时候,就代表把第一项键名的列表数据取出来,取出来的同时会把里边的那条记录同时清除掉。这个就是跟上面的组合起来,实现队列用的。第一项参数是之前存放进去的数组键名即KEY 。第二项为rpop的时候,代表顺序逐条取记录,第二项为lpop的时候,代表反序逐条取记录,每取一条都会同时清除一条,直到全部取完为空。
5、cache2() 全部参数不设置的时候,就可以直接操作Redis类中的方法了,比如 cache2()->delete('test') 、 cache2()->get('test') ,以满足更个性的需求。