REDIS实践之使用sort set完成商品筛选排序
来源:互联网 发布:电视盒子免费视频软件 编辑:程序博客网 时间:2024/05/21 14:43
我们知道 redis中 有个用来排序的函数 sort,我们先看看手册对它的描述
描述:按条件取得数据
参数:
array(
'by' => 'pattern', //匹配模式
'limit' => array(0, 1),
'get' => 'pattern'
'sort' => 'asc' or 'desc',
'alpha' => TRUE,
'store' => 'external-key'
)
返回或保存给定列表、集合、有序集合key中经过排序的元素。
其中可以 使用外部key进行排序 这个外部key可以在 列表、集合、有序集合下。
没错,就是利用这个特性, 我们来实现今天所说的业务。
以前做电商web时候 有个筛选商品的业务逻辑,涉及到 七天包退换,货到付款,可分期这样的标记或者标签(Tag),而且还有按照销量进行排序,这理所当然的就想到了 redis中的 set 和 sort,下面就模拟下一个简单的实现逻辑:
首先我们使用伪造数据:
//note 商品销售量 和 商品信息for ($i=1; $i < 200; $i++) { $redis->set("001|goods_sellhot:good_id_{$i}", mt_rand(0, 1000)); $arr = range('a', 'z'); shuffle($arr); $redis->set("001|goods_info:good_id_{$i}", json_encode(['name'=>join("", array_slice( $arr, 0, 4 )), 'image'=>'https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png']) );}//note 对应的商品id扔进对应的tag set里for ($i=1; $i < 100; $i++) { $redis->sadd("001|goods_tag:7dayback", mt_rand(1, 200)); $redis->sadd("001|goods_tag:pay_on_delivery", mt_rand(1, 200));}
在组合筛选时候 利用集合 的inter 来实现,然后用sort排序
$redis->sInterStore("001|goods_tag:7dayback_And_pay_on_delivery", "001|goods_tag:7dayback", "001|goods_tag:pay_on_delivery");$sort = array( 'BY' => "001|goods_sellhot:good_id_*", 'SORT' => 'DESC', 'limit' => array(0, 10), 'get' => [ "#", //id值 "001|goods_sellhot:good_id_*", //销量 "001|goods_info:good_id_*" ] //商品信息 );$result = $redis->sort("001|goods_tag:7dayback_And_pay_on_delivery", $sort);print_r($result);
就这样 一个快速,高效的tag筛选功能就实现了
0 0
- REDIS实践之使用sort set完成商品筛选排序
- Redis 之 sort排序
- REDIS实践之使用watch完成秒杀抢购功能
- Redis中Sort Set如何使用?
- redis-sort set
- NoSQL之Redis---SORT排序命令
- Redis笔记五之sort排序
- redis sort 使用外部key排序
- 让技能成为潜意识之Redis技能 SORT排序命令使用
- [原创]使用PowerShell中的Sort-Object来完成排序
- redis的排序 sort
- Redis --- 排序SORT
- Redis sort排序
- Android开发小技巧之商品属性筛选与商品筛选
- 排序之sort排序
- redis之sort命令
- 商品列表筛选排序规则可配置化管理
- redis sort(字符串排序)
- 渗透之突破ssl嗅探
- NOIP提高组 鼎纹
- Android中xml tools属性详解
- sphinx+scws 全文检索使用之 安装配置篇
- 集体智慧和协同过滤
- REDIS实践之使用sort set完成商品筛选排序
- 探索Android软键盘的疑难杂症
- C++中throw异常
- 基于django框架编写的简单信息采集系统
- 通过网络Url下载图片并下载到本地相册
- Android Studio中如何使用SlidingMenu框架
- Strategy_Level1
- PAT 1039. Course List for Student (25)(倒搜索,注意scanf和string时间消耗大)
- 写了一个开机启动,监听通话的demo