Redis命令拾遗四(集合类型)—包含简单搜索筛选商品设计实例。
本文版权,归博客园和作者吴双共同所有。转载和爬虫请注明博客园蜗牛Redis系列文章地址 http://www.cnblogs.com/tdws/tag/NoSql/
单个集合中最多允许存储2的三十二次方减1个元素。内部使用hash table散列表实现。
SADD Key members.....,向集合中增加多个元素,返回成功个数。另外由于集合中不允许有重复元素,所以当添加重复元素时,会忽略不计,当然也不计影响个数。
SMEMBERS Key 获取目标集合Key下的所有元素。
SREM Key members 从目标集合中移除多个元素。
SISMEMBER Key Member,判断指定元素 是否在指定集合中存在。时间复杂度O(1)
下面简单介绍集合运算。
首先提醒一点,多个集合运算,是按照顺序,一路算下去的结果。
SDIFF Keys计算差集。
请注意Result位置,和两次差集结果Result。
SINTER Keys 计算并集。注意Result位置。
SUNION 计算交集。
下面简单介绍一下使用场景。
比如在天猫或者京东当中,筛选商品,你想要七天包退换,货到付款,可分期这样的商品。我们先把这样的标记叫做标签(Tag),
GoodsId | GoodsTag |
Goods:1 | 新上架马蓉版充XX娃 |
Goods:2 | 新上架《淘宝这十年XXX》 |
Goods:3 | 新上架VR眼镜 |
Tag:Id | Tag:Name |
Tag:1 | 七天包退换 |
Tag:2 | 货到付款 |
Tag:3 | 可分期 |
Tag:Id | Goods:Id |
Tag:1 | Goods:1,Goods:2,Goods:3 |
Tag:2 | Goods:1.Goods:2 |
Tag:3 | Goods:1 |
那么我们需要维护并设计的Redis数据“存储结构”如上,三个“表”。当然这是我的随意设计,还算是比较合理。并不了解人家JD,ALi是如何设计的。那么现在你就可以对你需要的符合七天包退换,货到付款,可分期这三种Tag的商品进行筛选咯。很显然,解决办法就是计算最后一个表的,Tag1,Tag2,Tag3这三种标签所拥有的商品Id的并集,并集之后的结果也就是Goods:1,对应的商品是“新上架马蓉版充XX娃”。
值得注意的是,NoSql中的设计思路,和关系型数据库稍有不同,多思考使用场景,对转换思想好处多多。
欢迎关注,蜗牛将持续发博分享,明天将会补充集合命令,下一篇将会简单介绍有序集合,如果你学会了这个简单的设计,请为自己点赞!
Redis命令拾遗四(集合类型)—包含简单搜索筛选商品设计实例。的更多相关文章
- Redis命令拾遗四——集合类型(命令补充)
补充下上篇文章集合的命令. 上篇地址 博客园蜗牛 http://www.cnblogs.com/tdws/p/5785939.html SCARD Key获得执行集合中元素的数量. SDIFFSTOR ...
- Redis命令拾遗二(散列类型)
本文版权归博客园和作者吴双共同所有,欢迎转载,转载和爬虫请注明原文地址 :博客园蜗牛NoSql系列地址 http://www.cnblogs.com/tdws/tag/NoSql/ Redis命令拾 ...
- 第二百九十九节,python操作redis缓存-SortSet有序集合类型,可以理解为有序列表
python操作redis缓存-SortSet有序集合类型,可以理解为有序列表 有序集合,在集合的基础上,为每元素排序:元素的排序需要根据另外一个值来进行比较,所以,对于有序集合,每一个元素有两个值, ...
- Redis命令拾遗五(有序集合)
本文版权归博客园和作者吴双本人共同所有,博客园蜗牛NoSql系列分享 http://www.cnblogs.com/tdws/tag/NoSql/ Sorted Set 有序集合—Sorted Set ...
- redis 的使用 ( set集合类型操作)
set 集合类型 释义: redis 的 set 是 string 类型的无序集合 set 元素最大可以包含(2的32次方-1)个元素 关于 set 集合类型除了基本的添加删除操 ...
- redis:order set有序集合类型的操作(有序集合)
1. order set有序集合类型的操作(有序集合) 有序集合是在无序集合的基础上加了一个排序的依据,这个排序依据叫score,因此声明一个集合为有序集合的时候要加上score(作为排序的依据) 1 ...
- Redis命令拾遗一(字符串类型)
文章归博客园和作者“蜗牛”共同所有 .转载和爬虫请注明原文Redis系列链接 http://www.cnblogs.com/tdws/tag/NoSql/ Redis有五种基本数据类型.他们分别是字符 ...
- Redis中7种集合类型应用场景&redis常用命令
Redis常用数据类型 Redis最为常用的数据类型主要有以下五种: String Hash List Set Sorted set 在具体描述这几种数据类型之前,我们先通过一张图了解下Redis内部 ...
- Redis命令拾遗三(列表List类型)
本文版权归博客园和作者吴双本人共同所有.转载和爬虫请注明原文地址 Redis五种数据类型之列表类型 Redis五种数据类型之列表类型.你可以存储一个有序的字符串列表一类数据.比如你想展示你所存储的所有 ...
随机推荐
- 源码分析netty服务器创建过程vs java nio服务器创建
1.Java NIO服务端创建 首先,我们通过一个时序图来看下如何创建一个NIO服务端并启动监听,接收多个客户端的连接,进行消息的异步读写. 示例代码(参考文献[2]): import java.io ...
- [EasyUI美化换肤]更换EasyUi图标
前言 本篇文章主要是记录一些换EasyUI皮肤的过程,备忘.也欢迎美工大神各路UI给点好意见,EasyUI我就不介绍了,自行百度吧..(So..所以别问我是不是响应式..本身EasyUI就不是响应式. ...
- angluarjs2项目生成内容合并到asp.net mvc4项目中一起发布
应用场景 angular2(下文中标注位NG2)项目和.net mvc项目分别开发,前期采用跨域访问进行并行开发,后期只需要将NG2项目的生产版本合并到.net项目. NG2项目概述 ng2项目采用的 ...
- arcgis api for js入门开发系列八聚合效果(含源代码)
上一篇实现了demo的图层控制模块,本篇新增聚合效果,截图如下(源代码见文章底部): 聚合效果实现的思路如下: 1.map.html引用聚合包,项目已经包含进来了的聚合文件夹: <script ...
- 手把手教你做个人 app
我们都知道,开发一个app很大程度依赖服务端:服务端提供接口数据,然后我们展示:另外,开发一个app,还需要美工协助切图.没了接口,没了美工,app似乎只能做成单机版或工具类app,真的是这样的吗?先 ...
- 编写一个通用的Makefile文件
1.1在这之前,我们需要了解程序的编译过程 a.预处理:检查语法错误,展开宏,包含头文件等 b.编译:*.c-->*.S c.汇编:*.S-->*.o d.链接:.o +库文件=*.exe ...
- FineReport关于tomcat集群部署的方案
多台服务器集群后,配置权限.数据连接.模板.定时调度等,只能每台服务器一个个配置,不会自动同步到所有服务器. 针对上述情况,在FineReport中提供新集群部署插件,将xml配置文件.finedb/ ...
- PADS Layout 颜色设置
一.板框.装配线.标注线配置: 二.个人爱好,我一般把Top pads设置成为浅绿色,Top Trace/vias/2D Line/Text/Cooper设置成为深绿色,Error设置成为黄色,而Bo ...
- linux常用命令(2)pwd命令
pwd 命令1 命令格式:pwd [选项]2 命令功能查看当前工作目录的完整路径3 常用参数一般不带任何参数如果目录是链接时:pwd -P 显示实际路径,而非使用链接路径4 常用实例:4.1 用pwd ...
- ola.hallengren的SQL Server维护脚本
ola.hallengren的SQL Server维护脚本 下载地址 http://files.cnblogs.com/files/lyhabc/ola.hallengrenMaintenanceSo ...