redis中的set集合问题
转自:http://www.linuxidc.com/Linux/2014-12/111015.htm
Redis数据库(set类型和zset类型)
[日期:2014-12-30] | 来源:Linux社区 作者:achelloworld | [字体:大 中 小] |
一.set类型
set是一个集合,它是string类型的无序集合,set是通过hash table实现的,添加,删除,查找的时间复杂度都是O(1),对于集合我们可以取并集,交集,差集。通过这些操作我们可以实现SNS中好友推荐和Blog的tag功能。
set常见操作:
(1)sadd
向一个集合中添加一个元素。例如:sadd set1 Hello
(2)smembers
查看集合中的所有元素。例如:smembers set1
(3)srem
删除集合中一个指定的元素。例如:srem set1 Hello
(4)spop
随机弹出set集合中德一个元素。例如:spop set1
(5)sdiff
求两个集合的差集,比如sdiff set1 set2,表示保留set1中与set2不同的所有元素。
(6)sdiffstore
将返回的差集存进一个集合。例如:sdiffstore set3 set1 set2,表示把set1与set2的差集存进
集合set3。
(7)sinter
返回给定两个集合的交集。例如:sinter set1 set2,表示返回set1和set2的交集。
(8)sinterstore
将两个集合的交集存进一个集合。例如:sinterstore set3 set1 set2,表示把set1和set2的交集
存进集合set3。
(9)sunion
返回给定两个集合的并集。例如:sunion set1 set2,表示返回set1和set2的并集。
(10)sunionstore
将两个集合的并集存进一个集合。例如:sunionstore set3 set1 set2,表示把set1和set2的并集
存进集合set3
(11)smove
从第一个key对应的set中移除member并添加到第二个对应的集合中。
例如:smove set1 set2 Hello,表示把set1中的Hello元素移动到set2中。
(12)scard
返回key对应集合的元素的个数。例如:scard set1。
(13)sismember
判断某一个元素是否为集合的元素。比如:sismember set1 Hello,表示判断Hello是否为set1的中
的元素。
(14)srandmember
随机返回名称为key的set的一个元素。例如:srandmember set1。
二.zset类型
zset是在set的基础上增加了顺序,形成一个有序的集合。
zset的常见操作:
(1)zadd
向有序集合zset中增加一个元素。例如:zadd zset 1 Hello
(2)zrange
输出zset中指定范围内的的所有元素,按照score从小到大的顺序。
例如:zrange zset 0 -1 withscores,表示输出有序集合zset中所有的元素,并且输出顺序号。
(3)zrem
删除名称为key的zset集合中的元素member。例如:zrem set1 Hello。
(4)zincrby
把有序集合zset中的指定元素的序列号加上指定的值。例如:zincrby zset 4 Hello
(5)zrank
返回名称为key的zset集合中元素的排名,按照下标从小到大的排名。例如:zrank zset Hello。
(6)zrevrank
返回名称为key的zset集合中元素的排名,按照下表从大到小的排名。例如:zrevrank zset Hello。
(7)zrevrange
按照score从大到小的顺序输出集合中所有元素。例如:zrevrange zset 0 -1 withscores。
(8)zrangebyscore
返回集合中给定区间的元素。例如:zrangebyscore zset 2 3 withscores
(9)zcount
返回集合中score在给定区间的数量。zcount zset 2 3
(10)zcard
返回集合中元素的个数。
(11)zremrangebyrank
按照索引来删除给定区间的元素。例如:zremrangebyrank zset 1 2
(12)zremrangebyscore
删除score在指定范围内的元素。例如:zremrangebyscore zset 1 2
Ubuntu 14.04下Redis安装及简单测试 http://www.linuxidc.com/Linux/2014-05/101544.htm
Redis集群明细文档 http://www.linuxidc.com/Linux/2013-09/90118.htm
Ubuntu 12.10下安装Redis(图文详解)+ Jedis连接Redis http://www.linuxidc.com/Linux/2013-06/85816.htm
Redis系列-安装部署维护篇 http://www.linuxidc.com/Linux/2012-12/75627.htm
CentOS 6.3安装Redis http://www.linuxidc.com/Linux/2012-12/75314.htm
Redis安装部署学习笔记 http://www.linuxidc.com/Linux/2014-07/104306.htm
Redis配置文件redis.conf 详解 http://www.linuxidc.com/Linux/2013-11/92524.htm
redis中的set集合问题的更多相关文章
- 从Redis中删除大集合对象的方法
Redis中的大集合对象,如set.zset等,如果有上千万个元素,一般是不能直接用del命令来删除的,因为del命令可能会耗时几秒钟,而redis本身是单线程的,在高并发的情况下会阻塞大量的请求,严 ...
- Redis中7种集合类型应用场景
StringsStrings 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字.使用Strings类型,你可以完全实现目前 Memcached 的功能,并且效率更 ...
- Redis中7种集合类型应用场景&redis常用命令
Redis常用数据类型 Redis最为常用的数据类型主要有以下五种: String Hash List Set Sorted set 在具体描述这几种数据类型之前,我们先通过一张图了解下Redis内部 ...
- redis中插入用户集合的语句,有四个属性
一.redis 数据结构使用场景 原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉了,从上周开始看 redis 的源码.目前目标是吃透 redis 的数据结构.我们都知道,在 ...
- 快速整明白Redis中的整数集合到底是个啥
整数集合简介 整数集合(intset)是Redis集合数据类型的内部编码之一,当集合数据类型中的元素都是整数并且元素数量较少的时候,Redis就使用整数集合作为内部编码. 整数集合(intset)中可 ...
- 面试官:Redis中有序集合的内部实现方式是什么?
面试官:Redis中基本的数据类型有哪些? 我:Redis的基本数据类型有:字符串(string).哈希(hash).列表(list).集合(set).有序集合(zset). 面试官:有序集合的内部实 ...
- redis中存储小数
在做一个活动的需求时,需要往redis中有序的集合中存储一个小数,结果发现取出数据和存储时的数据不一致 zadd test_2017 1.1 tom (integer) zrevrange test_ ...
- [日常] Redis中set集合的使用思考
公司部门同事有个需求,就是需要把当前另一个部门a中存储的数据全部导出来,自己当前业务b的数据全部导出来,两个要取一下差集,把a中存在,b中不存在的记下来,要去调用某接口把对应的文件删除.这个我感觉可以 ...
- Redis-技术专区-让你彻底会使用“Redis中最陌生且最强大的集合”(ZSET)【前篇】
前言介绍 很多小伙伴都跟我说,redis中,ZSet(有序集合)是他们最陌生的集合,同时也是觉得特别复杂的集合之一,在开发过程中经常会用到它,而且也是大家最不太有把握使用的集合,所以笔者就从ZSet集 ...
随机推荐
- SpringMVC之 数据绑定-1
SpringMVC学习系列(4) 之 数据绑定-1 在系列(3)中我们介绍了请求是如何映射到一个action上的,下一步当然是如何获取到请求中的数据,这就引出了本篇所要讲的内容—数据绑定. 首先看一下 ...
- 最小的MVC工程
asp.net mvc笔记一,最小的MVC工程 Asp.net MVC项目默认会引用很多第三方插件,特别是现在的5.0,默认示例项目就几十M,搞得都不知道那些才是MVC必须的,是重点,那些是可有可 ...
- 实践中总结——理解haslayout和BFC
1.HASLAYOUT 首先,haslayout翻译成中文就是:有布局. 所谓布局,指的是一个元素可以对本身和里边的元素进行尺寸计算和定位.这里只是谈IE6/7,据说微软之所以不是对所有元素默认有布局 ...
- c# 窗体最小化后截图实现
我们知道,当我们需要对Control进行截图时,我们可以使用Control.DrawToBitmap()进行截图, 那么问题来了,当我们的窗体最小化了,我们还怎么截图呢? 当窗体最小化的时候,我们知道 ...
- Xps实现文档显示、套打功能
wpf采用Xps实现文档显示.套打功能(原创) 近期的一个项目需对数据进行套打,用户要求现场不允许安装office.页面预览显示必须要与文档完全一致,xps文档来对数据进行处理.Wpf的Documen ...
- 一个Shell小脚本——旋转的斜杠
话不多说,请从代码中寻找乐趣吧! #!/bin/bash #----中断计数器----# incr= #----旋转的斜杠----# spin="/-\|" echo -en &q ...
- Microsoft Message Analyzer (微软消息分析器,“网络抓包工具 - Network Monitor”的替代品)官方正式版现已发布
Microsoft Message Analyzer (微软消息分析器,“网络抓包工具 - Network Monitor”的替代品)官方正式版现已发布 来自官方日志的喜悦 被誉为全新开始的消息分析器 ...
- 关于Grunt可视化的尝试
关于Grunt可视化的尝试 使用Grunt遇到的问题? 必须要安装NodeJS 必须安装grunt-cli 需要编写复杂的Gruntfile.js规则 每个项目中必须存在nodejs的grunt模块 ...
- iOS网络通信http之NSURLConnection
iOS网络通信http之NSURLConnection 移动互联网时代,网络通信已是手机终端必不可少的功能.我们的应用中也必不可少的使用了网络通信,增强客户端与服务器交互.这一篇提供了使用NSURLC ...
- API接口服务端
<?php /** * API接口服务端 * * */ require 'mysql_class.php'; header('Content-Type:text/html;charset=utf ...