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的领劵中心,当然图是截取京东的,公司的就不截了... 其中 ...
随机推荐
- 自动安装zabbix_agent脚本 -- python2
#!/usr/bin/env python # -*- coding: utf-8 -*- import os ZABBIX_SERVER_IP='10.171.100.28' if os.path. ...
- notepad++中设置python运行
1. Notepad++ ->"运行"菜单->"运行"按钮 2. 在弹出的窗口内输入以下命令: cmd /k python "$(FULL ...
- 《LeetBook》leetcode题解(15):3Sum[M]
我现在在做一个叫<leetbook>的免费开源书项目,力求提供最易懂的中文思路,目前把解题思路都同步更新到gitbook上了,需要的同学可以去看看 书的地址:https://hk029.g ...
- CentOS命令行界面与图形界面切换(图文详解)
不多说,直接上干货! Ctrl + Alt +F1,到图形界面 Ctrl + Alt +F2,到命令行界面 欢迎大家,加入我的微信公众号:大数据躺过的坑 人工智能躺过的坑 同 ...
- C/C++ -- Gui编程 -- Qt库的使用 -- QtWidget
#include<QtGui> int main(int argc, char * argv[]) { QApplication app(argc, argv); QTextCodec:: ...
- Linux下svn服务器搭建
初次在linux上搭建svn服务器,本来以为很繁琐,其实很简单,主要分为以下几个步骤: 1. 首先安装subversion,命令:yum install subversion 2. 创建svn仓库 ...
- C# 新建 exe文件,并且自定义协议从浏览器中启动该程序
1. C# 新建一个 exe 文件: 打开你的 vs ,[文件] ---> [新建] ---> [项目] 选择 Windows 窗体应用,并起一个名字: 接着该文件会在当前项目的 myap ...
- 远程桌面控制项目开发(Spring+Netty+Swing)
[目录] 1.前言 2.初现端倪 3.款款深入 4.责任细分 5.功能层级图 6.项目结构 7.关键类设计 8.一些设计想法 9.待优化 10.一点心得 11.效果演示 12.讨论 13.GitHub ...
- python单链表
#!/usr/bin/env python3 # -*- coding:utf-8 -*- class LNode: """ 结点类 """ ...
- [转] Hadoop MapReduce开发最佳实践(上篇)
前言 本文是Hadoop最佳实践系列第二篇,上一篇为<Hadoop管理员的十个最佳实践>. MapRuduce开发对于大多数程序员都会觉得略显复杂,运行一个WordCount(Hadoop ...