redis 学习(6)-- 集合类型
redis 学习(6)-- 集合类型
set 结构
- 无序
- 无重复
- 集合间操作
set 集合内操作
命令 | 含义 |
---|---|
sadd key memebr1 [member2...] | 向集合中添加一个或多个成员 |
srem key member1 [member2...] | 从集合中删除一个或多个成员 |
scard key | 获取集合中的元素个数 |
sismember key member | 判断member元素是不是集合的成员 |
srandmember key count | 随机从集合中取出count个成员 |
spop key | 随机移除并返回集合中的一个成员 |
smembers key | 获取集合中的所有成员。时间复杂度为O(n),不建议使用,类似的操作可以使用SSCAN |
演示
实战
抽奖系统
思路:将参与抽奖的用户数放在 set 中,使用 spop 操作随机弹出集合中的一个成员,即为中奖用户。
类似微博中的喜欢,赞,踩功能实现
思路:将用户的操作数保存在集合中。
set 集合间操作
即差集、交集、并集。
命令 | 含义 |
---|---|
sdiff key1 [key2...] | 返回给定所有集合的差集 |
sdiffstore destKey key1 [key2...] | 计算给定所有集合的差集,并存入destKey |
sinter key1 [key2...] | 返回给定所有集合的交集 |
sinterstore destKey key1 [key2...] | 计算给定所有集合的交集,并存入destKey |
sunion key1 [key2...] | 返回给定所有集合的并集 |
sunionstore destKey key1 [key2...] | 计算给定所有集合的并集,并存入destKey |
实战
共同关注的人,同时关注他的人
可以使用 sinter 命令来实现。返回所有集合的交集。
一些小建议
- SADD = Tagging (用来存放标签)
- SPOP/SRANDMEMBER = Random item (用来做一些随机数操作)
- SADD + SINTER = Social Graph (用来做一些社交关系)
redis 学习(6)-- 集合类型的更多相关文章
- 第二百九十八节,python操作redis缓存-Set集合类型,可以理解为不能有重复元素的列表
python操作redis缓存-Set集合类型,可以理解为不能有重复元素的列表 sadd(name,values)name对应的集合中添加元素 #!/usr/bin/env python # -*- ...
- 尚硅谷redis学习4-数据类型
redis的数据类型包括String,Hash(类似于JAVA里的map),List,Set,Zset(sorted Set) String(字符串) string是redis最基本的类型,你可以理解 ...
- Redis之无序集合类型命令
Redis 集合(Set) Redis 的 Set 是 String 类型的无序集合.集合成员是唯一的,这就意味着集合中不能出现重复的数据. Redis 中集合是通过哈希表实现的,所以添加,删除,查找 ...
- Python学习笔记——集合类型
集合类型有两种不同的类型——可变集合(set)和不可变集合(frozenset) 可变集合不是可哈希的,不能用作字典的键,也不能用做其他集合中的元素 不可变集合是有哈希值的,能被用做字典的键或者是作为 ...
- [Google Guava]学习--新集合类型BiMap
BiMap提供了一种新的集合类型,它提供了key和value的双向关联的数据结构. Bimap 能非常方便的实现map<key,value>的转置要求,也就是value变为key,key变 ...
- [Google Guava]学习--新集合类型Multimap
每个有经验的Java程序员都在某处实现过Map<K, List<V>>或Map<K, Set<V>>,并且要忍受这个结构的笨拙. 假如目前有个需求是给两 ...
- [Google Guava]学习--新集合类型Multiset
Guava提供了一个新集合类型Multiset,它可以多次添加相等的元素,且和元素顺序无关.Multiset继承于JDK的Cllection接口,而不是Set接口. Multiset主要方法介绍: a ...
- Scala学习笔记--集合类型Queue,Set
补充知识:http://www.importnew.com/4543.html 正文开始 scala.collection.immutable scala.collection.mutable 队列Q ...
- Swift 学习- 05 -- 集合类型
// 集合类型 // swift 提供 Arrays , Sets 和 Dictionaries 三种基本的集合类型用来存储数据 , 数组(Arrays) 是有序数据的集, 集合(Sets)是无序无重 ...
- StackExchange.Redis 之 Set集合 类型示例
话不多说直接上代码: // set添加单个元素 stopwatch.Start(); "); stopwatch.Stop(); Console.WriteLine("set添加单 ...
随机推荐
- 分享代码到GitHub
1.本地安装git 2.项目文件夹右键Git bash here,弹出git命令窗口 3.输入git init,使项目加入Git管理 4.输入git add .,将项目全部内容添加到git 5.输入“ ...
- oracle取出所有表和视图
select c.TABLE_NAME, d.COMMENTS, d.table_type, (select wmsys.wm_concat(a.column_name) from user_cons ...
- 2.微服务开发框架——Spring Cloud
微服务开发框架—Spring Cloud 2.1. Spring Cloud简介及其特点 简介: Spring Cloud为开发人员提供了快速构建分布式系统中一些常见 ...
- PHP 验证5-20位数字加字母的正则(数字和字母缺一不可)!!!
$pattern = '/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{5,20}$/'; if(!preg_match($pattern,$username)){ re ...
- CentOS 安装 Mongodb详解 --- 有Linux基础
安装包:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.4.1.tgz 安装过程 安装pstree小工具,以及其使用 关闭 ...
- 微信小程序之地址联动
这就是我们要实现的效果 <view class="consignee"> <!-- consignee 收件人 --> <text>收件人: & ...
- LC 526. Beautiful Arrangement
uppose you have N integers from 1 to N. We define a beautiful arrangement as an array that is constr ...
- python - 注释说明
归类三种注释风格: 大段的自定义块状注释 """ #========================================= # FileName: upgra ...
- 20 Django REST Framework 更改PUT/PATCH/DELETE的传参字段,默认为pk
01-lookup_field 默认为 lookup_field='pk' 更改后的效果:
- debain安装文泉驿字体
sudo apt-get install ttf-wqy-microhei sudo apt-get install ttf-wqy-zenhei