redis sortedSet
zset 和set 相比:
zset 类型和set类型一样,不允许有重复的元素。zset是有序的,zset 有一个double类型的分数,这个分数可以重复,zset正是通过这个分数对集合中的元素从小到大排序的。
zset 和list 相比:
zset 和list 都是有序的,list是通过在链表实现的,两头取值快,中间取值慢;zet是用哈希表和跳跃表(二叉树)来实现的,两头中间添加删除查找都很快。
我们可以按照zset 的分数score进行排序和过滤查询
// 添加元素
zadd zset 1 c 2 i 5 o 9 p 3 a
zadd zset 4 u // 插入元素
zadd zset 10 c // 修改元素c的分数为10,返回0,表示没有插入新的元素 ——> zadd key score element,这个命令即可以添加元素,也可以修改已有元素的分数
zadd zset ch 15 c // 修改元素的分数的15,返回1,表示有一个分数被修改
zadd zset nx 20 c // nx 不更新,只添加,如果元素存在,无效
zadd zset xx 20 c // xx 只更新,不添加,如果元素不存在,无效
zadd zset incr 2 c // 指定元素分数增加2
查询元素
zrange zset 0 -1 [withscores] // 按照下标查询
zrevrange zset 0 1 [withscores] // 按照下标查询,反序,即最后一个元素的下标是0,倒数第二个元素的下标是1
zrangebyscore zset 2 4 [withscores] [LIMIT offset count] // 按照分数查询
zrevrangebyscore zset 2 2 [withscores] // 按照分数查询,反序
查询分数
zscore zset y // 返回指定成员的分数
查询元素索引
zrank zset p // 返回指定成员的索引,从小到大
zrevrank zset p // 返回指定成员的索引,从大到小
查询元素个数
zcard zset // 返回元素个数
zcount zset 1 2 // 返回分数1到2之间的元素个数
修改分数
zincrby zset 3 c // 分数加上3
删除元素
zrem zset p // 删除p 元素
zremrangebyrank zset 4 10 // 根据下标删除元素
zremrangebyscore zset 4 5 // 根据分数删除元素
redis sortedSet的更多相关文章
- 使用Redis SortedSet实现增量更新
导读:前段时间有个需求是提供一个接口供客户端增量更新数据,当有数据被删除了以后客户端也需要感知到,并且要支持一定并发: 关键词:高并发,增量更新 前言 何谓增量更新,顾名思义就是只更新变化的部分,这样 ...
- Redis sortedset实现元素自动过期
这里的自动过期,Redis并没有提供相应的api,但是可以使用一下方法来实现. 需求背景: 给用户返回的文章要求七日内不能重复:文章是存放在java list里边:(这一块就是从db将文章拿出来,然后 ...
- C#操作Redis SortedSet 有序集合
/// <summary> /// Redis 有序集合 /// </summary> public static void Redis_SetSorted() { Redis ...
- Redis sortedset有效集合数据结构
1. 增加一个有效集合 2. 查看元素个数 3. zscore 4. zcount 5. 返回指定元素的索引 zrank 6.zincrby 给元素a加90分 7. zrange查看范围
- 我是如何用redis做实时订阅推送的
前阵子开发了公司领劵中心的项目,这个项目是以redis作为关键技术落地的. 先说一下领劵中心的项目吧,这个项目就类似京东app的领劵中心,当然图是截取京东的,公司的就不截了... 其中 ...
- Redis 模糊查询删除操作
创建一条测试 数据 查询 创建:set name xiaoming 查询: get name 1.模糊搜索查询 Redis 模糊搜索 keys * 2.删除指定key : # 删除所有以user开头的 ...
- .net core redis的全套操作
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). Redis支持主从同步.数据可以从主服务器向任意数 ...
- Spring Boot 之 Redis详解
Redis是目前业界使用最广泛的内存数据存储. Redis支持丰富的数据结构,同时支持数据持久化. Redis还提供一些类数据库的特性,比如事务,HA,主从库. REmote DIctionary S ...
- 我是如何用redis做实时订阅推送的(转)
前阵子开发了公司领劵中心的项目,这个项目是以redis作为关键技术落地的. 先说一下领劵中心的项目吧,这个项目就类似京东app的领劵中心,当然图是截取京东的,公司的就不截了... 其中 ...
随机推荐
- rabbitmq系列三 之发布/订阅
1.发布/订阅 在上篇教程中,我们搭建了一个工作队列,每个任务只分发给一个工作者(worker).在本篇教程中,我们要做的跟之前完全不一样 —— 分发一个消息给多个消费者(consumers).这种模 ...
- JavaScript函数理解
本文参考自简书javaScript之函数详解 这里从函数的构造函数开始. 在js中,函数都是对象,它们都是Function构造函数的实例.因此,类似Java中的对象,函数名可以理解为指向该Functi ...
- python实现百度地图API获取某地址的经纬度
申请百度API 1.打开网页 http://lbsyun.baidu.com/index.php?title=首页 选择功能与服务中的地图,点击左边的获取密匙,然后按照要求申请即可,需要手机和百度账号 ...
- 使用json-lib-*.jar的JSON解析工具类
使用json-lib-2.4-jdk15.jar JSON工具类: import java.util.List; import net.sf.json.JSONArray; import net.sf ...
- Jmeter参数化与检查点
一.Jmeter参数话有3种方法: 1. add->pre processors->user parameter(用户参数) 2.add->config Element->CS ...
- mysql 数据库自动备份
@echo offset "Ymd=%date:~,4%%date:~5,2%%date:~8,2%""E:/MySQL/MySQL Server 5.7/bin/mys ...
- Go语言学习笔记十: 结构体
Go语言学习笔记十: 结构体 Go语言的结构体语法和C语言类似.而结构体这个概念就类似高级语言Java中的类. 结构体定义 结构体有两个关键字type和struct,中间夹着一个结构体名称.大括号里面 ...
- tar 命令压缩时报错 tar: Removing leading `/' from member names
在使用tar命令进行压缩打包的时候我们常常会遇到下面的错误.虽然它不会影响我们最后的压缩打包,但是间接说明了我们的命令是有问题的.接下来我们来看看解决的方法. 报错内容: [root@haha ~]# ...
- 修改MVC默认的pageBaseType以添加功能
试想下在MVC的前端页面JS或者html中需要使用多语言,而后端的多语言是维护在资源文件中的,前端如果使用的话需要使用AJAX频繁的获取,一个页面中可能会存在大量的需要语言转换的地方,频繁使用AJAX ...
- [转]How to tell NLog to log exceptions?
本文转自:https://stackoverflow.com/questions/9199073/how-to-tell-nlog-to-log-exceptions 问: Target: <t ...