一: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,对分数进行数据转换的函数
  6)zrank(name, value) 获取某个值在 name对应的有序集合中的排行(从 0 开始)
  7)zrem(name, values) 删除name对应的有序集合中值是values的成员
  9)zremrangebyrank(name, min, max)  根据排行范围删除
  10)zremrangebyscore(name, min, max)   根据分数范围删除
  11)zscore(name, value)  获取name对应有序集合中 value 对应的分数
  12)zinterstore(dest, keys, aggregate=None) 获取两个有序集合的交集,如果遇到相同值不同分数,则按照aggregate进行操作
  13)zunionstore(dest, keys, aggregate=None) 获取两个有序集合的并集,如果遇到相同值不同分数,则按照aggregate进行操作
  14)zscan(name, cursor=0, match=None, count=None, score_cast_func=float) 
 

三:示例

[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)的更多相关文章

  1. 缓存数据库-redis数据类型和操作(list)

    转: 狼来的日子里! 奋发博取 缓存数据库-redis数据类型和操作(list) 一:Redis 列表(List) Redis列表是简单的字符串列表,按照插入顺序排序.你可以添加一个元素导列表的头部( ...

  2. 缓存数据库-redis数据类型和操作(string)

    Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合) 一:String(字符串) string是redis ...

  3. 缓存数据库-redis数据类型和操作(set)

    一:Redis 集合(Set) Redis的Set是string类型的无序集合.集合成员是唯一的,这就意味着集合中不能出现重复的数据. Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复 ...

  4. 缓存数据库-redis数据类型和操作(hash)

    一:Redis 哈希(Hash) Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象. Redis 中每个 hash 可以存储 232 - 1 ...

  5. 缓存数据库redis

    什么是Redis? Redis是一个TCP服务器,支持请求/响应协议. 在Redis中,请求通过以下步骤完成: 客户端向服务器发送查询,并从套接字读取,通常以阻塞的方式,用于服务器响应. 服务器处理命 ...

  6. Redis数据类型及其操作

    redis数据类型即操作 1. 字符串 set 设置字符串 格式: set key value 例子: set name kainhuck get 获取字符串的值 格式: get key 例子: ge ...

  7. Redis数据类型和操作

    <"Java技术员"成长手册>,包含框架.存储.搜索.优化.分布式等必备知识,都收集在GitHub JavaEgg ,N线互联网开发必备技能兵器谱,欢迎指导 Redis ...

  8. 缓存数据库-redis介绍

    一:Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的 ...

  9. python【第十一篇】消息队列RabbitMQ、缓存数据库Redis

    大纲 1.RabbitMQ 2.Redis 1.RabbitMQ消息队列 1.1 RabbitMQ简介 AMQP,即Advanced Message Queuing Protocol,高级消息队列协议 ...

随机推荐

  1. UVA.12169 Disgruntled Judge ( 拓展欧几里得 )

    UVA.12169 Disgruntled Judge ( 拓展欧几里得 ) 题意分析 给出T个数字,x1,x3--x2T-1.并且我们知道这x1,x2,x3,x4--x2T之间满足xi = (a * ...

  2. 《剑指offer》— JavaScript(23)二叉搜索树的后序遍历序列

    二叉搜索树的后序遍历序列 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 相关知识 二叉查找树(B ...

  3. Python 爬虫入门(三)—— 寻找合适的爬取策略

    写爬虫之前,首先要明确爬取的数据.然后,思考从哪些地方可以获取这些数据.下面以一个实际案例来说明,怎么寻找一个好的爬虫策略.(代码仅供学习交流,切勿用作商业或其他有害行为) 1).方式一:直接爬取网站 ...

  4. Chapter 6(树)

    1.树的储存方式 //****************双亲表示法************************ #define Max_TREE_SIZE 100 typedef int TElem ...

  5. Service Fabric —— Actor / Stateless Service 概念

    作者:潘罡 (Van Pan) @ Microsoft 上一节我们谈到了Stateful Service.在Service Fabric中,Stateful Service是理解Micro Servi ...

  6. python基础之模块之序列化

    ---什么是序列化(picking)? 我们把变量从内存中变成可存储或传输的过程称之为序列化. 序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上. 反过来,把变量内容从序列化的 ...

  7. 并发库应用之二 & Java原子性操作类应用

    Java5的线程并发库中,提供了一组atomic class来帮助我们简化同步处理.基本工作原理是使用了同步synchronized的方法实现了对一个long, integer, 对象的增.减.赋值( ...

  8. Docker registry私有仓库(七)

    Docker registry私有仓库搭建基本几步流程(采用nginx+认证的方式) 1. 申请免费的ssl证书 https://buy.wosiqn.com/free 2. 设置nginx ssl证 ...

  9. 关于720p和1080p观看距离和效果

    分类: 不同分辩率的信号源,对观看距离的要求是不同的.在标清时代,看电视台的画面,要离得好鬼远,否则就会觉得画面粗糙闪炼唔舒服.720P及1080P的观看距离又应该点样呢?系唔系买个50寸的平板电视要 ...

  10. Redis slowlog慢查询

    slowlog (阅读原文) 此命令用于读取和重置redis慢请求日志 redis slow log概述 redis的slow log记录了那些执行时间超过规定时长的请求.执行时间不包括I/O操作(比 ...