缓存数据库-redis数据类型和操作(sorted set)
一:Redis 有序集合(sorted set)
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
二:有序集合常用操作
1)zadd(name, *args, **kwargs) 在name对应的有序集合中添加元素
2)zcard(name) 获取name对应的有序集合元素的数量
3)zcount(name, min, max) 获取name对应的有序集合中分数 在 [min,max] 之间的个数
4)zincrby(name, value, amount) 自增name对应的有序集合的 name 对应的分数
5)zrange( name, start, end, desc=False, withscores=False, score_cast_func=float) 按照索引范围获取name对应的有序集合的元素
# 参数:
# name,redis的name # start,有序集合索引起始位置(非分数) # end,有序集合索引结束位置(非分数) # desc,排序规则,默认按照分数从小到大排序 # withscores,是否获取元素的分数,默认只获取元素的值 # score_cast_func,对分数进行数据转换的函数三:示例
[BEGIN] // ::
127.0.0.1:[]> zadd z1 s1 增加一个有序集合
(integer)
127.0.0.1:[]> zadd z1 s2
(integer)
127.0.0.1:[]> zadd z1 s3
(integer)
127.0.0.1:[]> ZCARD z1 有序集合的元素个数
(integer)
127.0.0.1:[]> zadd z1 s4
(integer)
127.0.0.1:[]> ZCOUNT zi 统计分数据在1,2中元素个数
(integer)
127.0.0.1:[]> ZCOUNT zi
(integer)
127.0.0.1:[]> ZCOUNT z1
(integer)
127.0.0.1:[]> ZINCRBY z1
""
127.0.0.1:[]> ZRANGE z1 查看有序集合
) "s1"
) "s2"
) "s3"
127.0.0.1:[]> ZRANGE z1 withscores 查看有序集合带分数
) "s1"
) ""
) "s2"
) ""
) "s3"
) ""
127.0.0.1:[]> ZINCRBY z1 有序集合自增
""
127.0.0.1:[]> ZRANGE z1 withscores
) "s2"
) ""
) "s3"
) ""
) ""
) ""
127.0.0.1:[]> ZRANK z1 s3 根据有序集合中的顺序查看
(integer)
127.0.0.1:[]> zrem z1 s3
(integer)
127.0.0.1:[]> ZRANGE z1 withscores 根据有序集合分数查看
) "s2"
) ""
) ""
) ""
) "s4"
) ""
127.0.0.1:[]> ZREMRANGEBYRANK z1 根据有序集合顺序删除
(integer)
127.0.0.1:[]> ZRANGE z1 withscores
) "s2"
) ""
) ""
) ""
127.0.0.1:[]> ZREMRANGEBYSCORE z1 根据有序集合分数删除
(integer)
127.0.0.1:[]> ZRANGE z1 withscores
(empty list or set)
127.0.0.1:[]> zadd z1 s1
(integer)
127.0.0.1:[]> zadd z1 s2
(integer)
127.0.0.1:[]> zadd z1 s3
(integer)
127.0.0.1:[]> zadd z1 s4
(integer)
127.0.0.1:[]> ZSCORE z1 s4
""
127.0.0.1:[]> zadd z2 s1
(integer)
127.0.0.1:[]> zadd z2 s2
(integer)
127.0.0.1:[]> zadd z2 s2
(integer)
127.0.0.1:[]> zadd z2 s5
(integer) 127.0.0.1:[]> help zinterstore ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
summary: Intersect multiple sorted sets and store the resulting sorted set in a new key
since: 2.0.
group: sorted_set 127.0.0.1:[]> ZINTERSTORE z3 z1
(integer)
127.0.0.1:[]> ZINTERSTORE z3 z1 z2 两个有序集合的交集,并保存到z3
(integer)
127.0.0.1:[]> ZRANGE z3
) "s1"
) "s2"
127.0.0.1:[]> ZINTERSTORE z3 z1 z2
(error) ERR syntax error
127.0.0.1:[]> ZUNIONSTORE z4 z1 z2 两个有序集合的并集,并保存到z4
(integer)
127.0.0.1:[]> ZRANGE z3
) "s1"
) "s2"
127.0.0.1:[]> ZRANGE z4
) "s3"
) "s4"
) "s5"
) ""
) "s1"
) "s2" [END] // ::
缓存数据库-redis数据类型和操作(sorted set)的更多相关文章
- 缓存数据库-redis数据类型和操作(list)
转: 狼来的日子里! 奋发博取 缓存数据库-redis数据类型和操作(list) 一:Redis 列表(List) Redis列表是简单的字符串列表,按照插入顺序排序.你可以添加一个元素导列表的头部( ...
- 缓存数据库-redis数据类型和操作(string)
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合) 一:String(字符串) string是redis ...
- 缓存数据库-redis数据类型和操作(set)
一:Redis 集合(Set) Redis的Set是string类型的无序集合.集合成员是唯一的,这就意味着集合中不能出现重复的数据. Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复 ...
- 缓存数据库-redis数据类型和操作(hash)
一:Redis 哈希(Hash) Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象. Redis 中每个 hash 可以存储 232 - 1 ...
- 缓存数据库redis
什么是Redis? Redis是一个TCP服务器,支持请求/响应协议. 在Redis中,请求通过以下步骤完成: 客户端向服务器发送查询,并从套接字读取,通常以阻塞的方式,用于服务器响应. 服务器处理命 ...
- Redis数据类型及其操作
redis数据类型即操作 1. 字符串 set 设置字符串 格式: set key value 例子: set name kainhuck get 获取字符串的值 格式: get key 例子: ge ...
- Redis数据类型和操作
<"Java技术员"成长手册>,包含框架.存储.搜索.优化.分布式等必备知识,都收集在GitHub JavaEgg ,N线互联网开发必备技能兵器谱,欢迎指导 Redis ...
- 缓存数据库-redis介绍
一:Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的 ...
- python【第十一篇】消息队列RabbitMQ、缓存数据库Redis
大纲 1.RabbitMQ 2.Redis 1.RabbitMQ消息队列 1.1 RabbitMQ简介 AMQP,即Advanced Message Queuing Protocol,高级消息队列协议 ...
随机推荐
- NOI前总结
最近也就是天天考试,总结一下. 7.1 开场T1T2都是不可做的概率期望,只有T3看起来可做,于是怒干4h+,将题解里面的所有结论都推出来了,大模拟写的一点毛病都没有,可还是因为2-SAT掌握不熟结果 ...
- (转)Tomcat version 7.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 and 6 Web mod
背景:在sts中导入web项目,却不能通过sts中的tomcat来加载该服务,并报出如下错误. “Tomcat version 7.0 only supports J2EE 1.2, 1.3, 1.4 ...
- Java入门:注册模块的实现
1.主活动图 用户选择注册选项,进入注册界面,开始输入注册信息,到最后完成注册.具体的活动图如下: 以上活动图中,矩形框里的操作不是在一个类里面实现的,而是通过Form类和UserService类来实 ...
- 火狐,discuz同步登录问题解决
<script type="text/javascript" src="http://******/uc/api/uc.php?time=1503386589&am ...
- django中django.conf.urls.url函数
在urls.py文件中,我们经常会看到类似于这样的代码: urlpatterns = [ url(r'^blog/(?P<year>[0-9]{4})/$', views.year_arc ...
- android中倒计时控件CountDownTimer分析
android中倒计时控件CountDownTimer分析 1 示例代码 new CountDownTimer(10000, 1000) { public void onTick(long milli ...
- Window10+Python3.5安装opencv
Window10+Python3.5安装opencv 标签: opencvpython 2017-05-14 16:47 2201人阅读 评论(0) 收藏 举报 分类: Python编程(41) ...
- 在MySQL或者SQLServer中,添加对象后自动返回主键到对象模型中的配置方式
设置是否使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中.MySQL和SQLServer执行auto-generated key fiel ...
- (一)在Lingo中使用集合
1. 在Lingo中使用集合 4.1 集合的基本用法和lingo模型的基本要素 Lingo虽然使用方便,但是如果要解决几万个,几十万个变量的优化问题时,我们总不能一个一个地列出x1,x2,…,x ...
- 用threading和Queue模块实现多线程的端口扫描器
一.Queue模块基础 q = Queue.Queue() q.qsize() 返回队列的大小 q.empty() 如果队列为空,返回True,反之Fals ...