postor/yii2-redis-filter

此包已被废弃,不再维护。没有建议的替代包。

使用排序集进行排序、分页、分类项目

安装: 18

依赖: 0

建议者: 0

安全: 0

星标: 1

关注者: 2

分支: 1

开放问题: 1

类型:yii2-extension

1.1.1 2020-01-03 12:30 UTC

This package is not auto-updated.

Last update: 2023-04-22 17:28:28 UTC


README

使用Redis的有序集合进行排序、分页、分类项目

快速查看:https://www.youtube.com/watch?v=zLYAlfSTUQE&list=PLM1v95K5B1ntVsYvNJIxgRPppngrO_X4s

安装

php composer.phar require --prefer-dist postor/yii2-redis-filter

配置

'components' => [
        ....,
        'redis' => [
	        'class' => 'yii\redis\Connection',
	        'hostname' => REDIS_HOST,
	        'port' => REDIS_PORT,
	        'database' => REDIS_DB,
        ],
        'redisfilter'=>[
          'class'=>'postor\redisfilter\RedisFilter',
          'redis'=>'redis',
        ],
        ....

使用

\Yii::$app->redisfilter->getTagList($tag,$offset,$limit); $tag 参数:

  • 字符串,就是对应的tag集合
  • 数组,深度遍历每个数组并将键和值存储,然后合并所有元素的结果。数组情况下,键和值取交集,然后所有数组元素取并集,可以嵌套

['a','b'=>['c'=>['d','e'=>['f']]]] 表示 a|(b&c&(d|(e&f)))

//set tags 设置标签
$rf = \Yii::$app->redisfilter;
$rf->setTag($a->id, 'base', $a->created_time); //all article sort by created_time 所有文章按时间排序
$rf->setTag($a->id, 'samsung'); //all article tag into tag sets 所有文章按标签类型贴收入对应集合
$rf->removeTag($b->id, 'base');

//filter tags 筛选标签
//by page 按分页
$ids = $rf->getTagList(['seta','setb'=>'setc'],$offset,$pageSize); // seta|(setb&setc) 
//$ids  array(11) { [0]=> string(7) "1385584" [1]=> string(7) "1385585" [2]=> string(7) "1385586" [3]=> string(7) "1385587" [4]=> string(7) "1385588" [5]=> string(7) "1385589" [6]=> string(7) "1515910" [7]=> string(7) "1515911" [8]=> string(7) "1515912" [9]=> string(7) "1515913" [10]=> string(7) "1515914" }

//by score 按分数
$zsetname = $rf->getZset(['base'=>'samsung']); // base&samsung
$total = $rf->getTagTotalByZset($zsetname);
$ids = $rf->getTagListByScore($zsetname, time()-86400*3, time());


示例

cd example

# config your own redis
vi config/web.php

./yii serve

打开 localhost:8080 并尝试

有关详细信息,请参阅代码: example/models/NumberFilter.php