Redis学习笔记(6)-SortedSet
package cn.com; import java.util.HashMap;
import java.util.Map;
import java.util.Set; import redis.clients.jedis.Jedis;
import redis.clients.jedis.Tuple; /**
* 有序集合的所有操作方法
*
* */
public class Redis_SortedSet { public static Jedis redis = new Jedis("localhost", 6379);// 连接redis /**
* ZADD key score member [[score member] [score member] ...]
* 将一个或多个 member 元素及其 score 值加入到有序集 key 当中。
* 如果某个 member 已经是有序集的成员,那么更新这个 member 的 score 值,并通过重新插入这个 member 元素,来保证该 member 在正确的位置上。
* score 值可以是整数值或双精度浮点数。
* 如果 key 不存在,则创建一个空的有序集并执行 ZADD 操作。
* 当 key 存在但不是有序集类型时,返回一个错误。
* */
public static void zadd(){
redis.flushDB();//清除数据
Map<String,Double> agemap=new HashMap<String,Double>();
agemap.put("age1", 1.0);
agemap.put("age2", 2.0);
agemap.put("age4", 4.0);
agemap.put("age3", 3.0);
agemap.put("age9", 9.0);
agemap.put("age5", 5.0);
redis.zadd("user", agemap);
Set<String> list=redis.zrange("user", 0, -1);
for(String s:list){
System.out.println(s);
} } /**
* 返回有序集 key 的基数。
* */
public static void zcard(){
redis.flushDB();//清除数据
Map<String,Double> agemap=new HashMap<String,Double>();
agemap.put("age1", 1.0);
agemap.put("age2", 2.0);
agemap.put("age4", 4.0);
agemap.put("age3", 3.0);
agemap.put("age9", 9.0);
agemap.put("age5", 5.0);
redis.zadd("user", agemap);
Long length=redis.zcard("user");
System.out.println(length);
} /**
* ZCOUNT key min max
* 返回有序集 key 中, score 值在 min 和 max 之间(默认包括 score 值等于 min 或 max )的成员的数量。
* */
public static void zcount(){
redis.flushDB();//清除数据
Map<String,Double> agemap=new HashMap<String,Double>();
agemap.put("age1", 1.0);
agemap.put("age2", 2.0);
agemap.put("age4", 4.0);
agemap.put("age3", 3.0);
agemap.put("age9", 9.0);
agemap.put("age5", 5.0);
redis.zadd("user", agemap);
Long number=redis.zcount("user", 5,9);
System.out.println(number); } /**
* ZINCRBY key increment member
*为有序集 key 的成员 member 的 score 值加上增量 increment 。
*可以通过传递一个负数值 increment ,让 score 减去相应的值,比如 ZINCRBY key -5 member ,就是让 member 的 score 值减去 5 。
*当 key 不存在,或 member 不是 key 的成员时, ZINCRBY key increment member 等同于 ZADD key increment member 。
*当 key 不是有序集类型时,返回一个错误。
*score 值可以是整数值或双精度浮点数
* */
public static void zincrby(){
redis.flushDB();//清除数据
Map<String,Double> agemap=new HashMap<String,Double>();
agemap.put("age1", 1.0);
agemap.put("age2", 2.0);
agemap.put("age4", 4.0);
agemap.put("age3", 3.0);
agemap.put("age9", 9.0);
agemap.put("age5", 5.0);
redis.zadd("user", agemap);
redis.zincrby("user", 55,"age5");
Set<String> list=redis.zrange("user", 0, -1);
for(String s:list){
System.out.println(s);
}
} /**
* ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]
* 计算给定的一个或多个有序集的交集,其中给定 key 的数量必须以 numkeys 参数指定,并将该交集(结果集)储存到 destination 。
* 默认情况下,结果集中某个成员的 score 值是所有给定集下该成员 score 值之和.
* */
public static void zinterstore(){
redis.flushDB();//清除数据 redis.zadd("user", 1, "age1");
redis.zadd("user", 3, "age3");
redis.zadd("user", 6, "age6");
redis.zadd("user", 2, "age2");
redis.zadd("user", 8, "age8"); redis.zadd("user1", 11, "age1");
redis.zadd("user1", 33, "age3");
redis.zadd("user1", 66, "age6");
redis.zadd("user1", 22, "age2");
redis.zadd("user1", 88, "age8");
redis.zadd("user1", 99, "age9"); redis.zinterstore("newset",new String[]{"user","user1"}); Set<String> list=redis.zrange("newset", 0, -1);
for(String s:list){
System.out.println(s);
}
} /**
* 返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。
* 可选的 LIMIT 参数指定返回结果的数量及区间(就像SQL中的 SELECT LIMIT offset, count ),注意当 offset 很大时,定位 offset 的操作可能需要遍历整个有序集,此过程最坏复杂度为 O(N) 时间。
* 可选的 WITHSCORES 参数决定结果集是单单返回有序集的成员,还是将有序集成员及其 score 值一起返回。
* */
public static void zrangeByScore(){
redis.flushDB();//清除数据
redis.zadd("user", 1, "age1");redis.zadd("user", 11, "age11");redis.zadd("user", 111, "age111");
redis.zadd("user", 3, "age3");redis.zadd("user", 33, "age33");redis.zadd("user", 333, "age333");
redis.zadd("user", 6, "age6");redis.zadd("user", 66, "age6");redis.zadd("user", 666, "age666");
redis.zadd("user", 2, "age2");redis.zadd("user", 22, "age22");redis.zadd("user", 222, "age222");
redis.zadd("user", 8, "age8");redis.zadd("user", 9, "age9");redis.zadd("user", 9, "age9");
Set<String> list=redis.zrangeByScore("user", 100, 700);
for(String s:list){
System.out.println(s);
}
} /**
* ZRANK key member
* 返回有序集 key 中成员 member 的排名。其中有序集成员按 score 值递增(从小到大)顺序排列。
* 排名以 0 为底,也就是说, score 值最小的成员排名为 0 。
* */
public static void rand(){
redis.flushDB();
redis.zadd("user", 1, "age1");redis.zadd("user", 11, "age11");redis.zadd("user", 111, "age111");
long number=redis.zrank("user", "age11");
//number 显示的位1 低名是从0 开始 age11 排名为第一
System.out.println(number);
} /**
* ZREM key member [member ...]
* 移除有序集 key 中的一个或多个成员,不存在的成员将被忽略。
* 当 key 存在但不是有序集类型时,返回一个错误
* */
public static void zrem(){
redis.flushDB();
redis.zadd("user", 1, "age1");
redis.zadd("user", 2, "age2");
redis.zadd("user", 3, "age3");
redis.zadd("user", 4, "age4");
redis.zadd("user", 5, "age5");
redis.zrem("user", "age2","age5");
Set<String> list=redis.zrange("user",0,-1);
for(String s:list){
System.out.println(s);
}
} /**
* 取排名在stat -end 之间的Tuple (strt 和end 指的指的是在集合中的排名 并非是score)
* Tuple 包含key 和 score
* */
public static void zrangeWithScores(){
redis.flushDB();
redis.zadd("user", 11, "age1");
redis.zadd("user", 22, "age2");
redis.zadd("user", 33, "age3");
redis.zadd("user", 44, "age4");
redis.zadd("user", 55, "age5");
Set<Tuple> list= redis.zrangeWithScores("user", 0, 2);
for(Tuple s:list){
System.out.println(s.getElement()+" store:"+s.getScore()); }
} /**
* 取排名在stat -end 之间的Tuple (strt 和end 指的是存储的score )
* Tuple 包含key 和 score
* */
public static void zrangeByScoreWithScores(){
redis.flushDB();
redis.zadd("user", 11, "age1");
redis.zadd("user", 22, "age2");
redis.zadd("user", 33, "age3");
redis.zadd("user", 44, "age4");
redis.zadd("user", 55, "age5");
Set<Tuple> list=redis.zrangeByScoreWithScores("user", 0, 35);
for(Tuple s:list){
System.out.println(s.getElement()+" store:"+s.getScore()); }
} /**
* 删除 排序号在 strt-end 之间的元素
* */
public static void zremrangeByRank(){
redis.flushDB();
redis.zadd("user", 11, "age1");
redis.zadd("user", 22, "age2");
redis.zadd("user", 333, "age33");
redis.zadd("user", 44, "age4");
redis.zadd("user", 55, "age5");
redis.zadd("user", 66, "age6");
redis.zadd("user", 77, "age7");
redis.zremrangeByRank("user", 0, 3);
Set<String> list=redis.zrange("user", 0, -1);
for(String s:list){
System.out.println(s);
}
} /**
* 倒序排列集合
* @param key (max最大score) (min 最小score)
* */
public static void zrevrangeByScore(){
redis.flushDB();
redis.zadd("user", 11, "age1");
redis.zadd("user", 22, "age2");
redis.zadd("user", 333, "age33");
redis.zadd("user", 44, "age4");
redis.zadd("user", 55, "age5");
Set<String> list=redis.zrevrangeByScore("user", 55, 0); for(String s:list){
System.out.println(s);
}
} /**
* 倒序取score 范围 max-min 之间的元素
* */
public static void zrevrangeByScoreWithScores(){
redis.flushDB();
redis.zadd("user", 11, "age1");
redis.zadd("user", 22, "age2");
redis.zadd("user", 333, "age33");
redis.zadd("user", 44, "age4");
redis.zadd("user", 55, "age5");
redis.zadd("user", 66, "age6");
redis.zadd("user", 77, "age7");
Set<Tuple> list= redis.zrevrangeByScoreWithScores("user", 66, 22);
for(Tuple s:list){
System.out.println(s.getElement()+" store:"+s.getScore());
}
} /**
* 倒序排列集合
* @param key star-end 取排序范围
* */
public static void zrevrangeWithScores(){
redis.flushDB();
redis.zadd("user", 11, "age1");
redis.zadd("user", 22, "age2");
redis.zadd("user", 333, "age33");
redis.zadd("user", 44, "age4");
redis.zadd("user", 55, "age5");
Set<Tuple> list=redis.zrevrangeWithScores("user", 0, 3); for(Tuple s:list){
System.out.println(s.getElement()+" score:"+s.getScore());
}
} /**
* 删除 key 在 score的值在star-end 之间的值
* */
public static void zremrangeByScore(){
redis.flushDB();
redis.zadd("user", 11, "age1");
redis.zadd("user", 22, "age2");
redis.zadd("user", 33, "age3");
redis.zadd("user", 44, "age4");
redis.zadd("user", 55, "age5");
redis.zremrangeByScore("user", 0, 22);
Set<String> list=redis.zrange("user", 0, -1);
for(String s:list){
System.out.println(s);
}
} /**
* 返回 key 中member 中的排名值
* */
public static void zrevrank(){
redis.flushDB();
redis.zadd("user", 11, "age1");
redis.zadd("user", 22, "age2");
redis.zadd("user", 33, "age3");
redis.zadd("user", 44, "age4");
redis.zadd("user", 55, "age5");
long l=redis.zrevrank("user", "age3"); System.out.println(l); } /**
* 返回有序集 key 中,指定区间内的成员。
* 其中成员的位置按 score 值递增(从小到大)来排序。
* 具有相同 score 值的成员按字典序(lexicographical order )来排列。
* */
public static void zrange(){
redis.flushDB();//清除数据
Map<String,Double> agemap=new HashMap<String,Double>();
agemap.put("age1", 1.0);
agemap.put("age2", 2.0);
agemap.put("age4", 4.0);
agemap.put("age3", 3.0);
agemap.put("age9", 9.0);
agemap.put("age5", 5.0);
redis.zadd("user", agemap);
redis.zincrby("user", 55,"age5");
Set<String> list=redis.zrange("user", 0, -1);
for(String s:list){
System.out.println(s);
} } /**
* 求两个集合的并集
* */
public static void zunionstore(){
redis.flushDB();//清除数据
redis.zadd("user", 1, "age1");
redis.zadd("user", 3, "age3");
redis.zadd("user", 6, "age6");
redis.zadd("user", 2, "age2");
redis.zadd("user", 10, "age10"); redis.zadd("user1", 11, "age1");
redis.zadd("user1", 33, "age3");
redis.zadd("user1", 66, "age6");
redis.zadd("user1", 22, "age2");
redis.zadd("user1", 88, "age8");
redis.zadd("user1", 99, "age9"); redis.zunionstore("newset",new String[]{"user","user1"});
Set<String> list=redis.zrange("newset", 0, -1);
for(String s:list){
System.out.println(s);
}
} public static void main(String [] args){
zrevrangeByScoreWithScores();
}
}
Redis学习笔记(6)-SortedSet的更多相关文章
- Redis学习笔记(二)Redis支持的5种数据类型的总结之String和Hash
引言 在Redis学习笔记(一)中我们已经会安装并且简单使用Redis了,接下来我们一起来学习下Redis支持的5大数据类型. 简介 Redis是REmote DIctionary Server(远程 ...
- Redis学习笔记(二) Redis 数据类型
Redis 支持五种数据类型:string(字符串).list(列表).hash(哈希).set(集合)和 zset(有序集合),接下来我们讲解分别讲解一下这五种类型的的使用. String(字符串) ...
- redis 学习笔记(6)-cluster集群搭建
上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞shardi ...
- Redis学习笔记~目录
回到占占推荐博客索引 百度百科 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合). ...
- Redis学习笔记4-Redis配置详解
在Redis中直接启动redis-server服务时, 采用的是默认的配置文件.采用redis-server xxx.conf 这样的方式可以按照指定的配置文件来运行Redis服务.按照本Redi ...
- Redis学习笔记7--Redis管道(pipeline)
redis是一个cs模式的tcp server,使用和http类似的请求响应协议.一个client可以通过一个socket连接发起多个请求命令.每个请求命令发出后client通常会阻塞并等待redis ...
- Redis学习笔记一:数据结构与对象
1. String(SDS) Redis使用自定义的一种字符串结构SDS来作为字符串的表示. 127.0.0.1:6379> set name liushijie OK 在如上操作中,name( ...
- Redis学习笔记之ABC
Redis学习笔记之ABC Redis命令速查 官方帮助文档 中文版本1 中文版本2(反应速度比较慢) 基本操作 字符串操作 set key value get key 哈希 HMSET user:1 ...
- (转)redis 学习笔记(1)-编译、启动、停止
redis 学习笔记(1)-编译.启动.停止 一.下载.编译 redis是以源码方式发行的,先下载源码,然后在linux下编译 1.1 http://www.redis.io/download 先 ...
随机推荐
- 【python游戏编程之旅】第五篇---嗷大喵爱吃鱼小游戏开发实例
本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 我们一同在前几期的博客中已经学到了很多pygame的基本知识了,现在该做个小游戏实战一下了. 前几期博客链接 ...
- BZOJ3680 : 吊打XXX
本题就是找一个受力平衡的点 我们一开始假设这个点是(0,0) 然后求出它受到的力,将合力正交分解后朝着合力的方向走若干步,并不断缩小步长,一步步逼近答案 #include<cstdio> ...
- TYVJ P1083 分糖果 Label:bfs
描述 童年的我们,将和朋友分享美好的事物作为自己的快乐.这天,C小朋友得到了Plenty of candies,将要把这些糖果分给要好的朋友们.已知糖果从一个人传给另一个人需要1 秒的时间,同一个小朋 ...
- Android jni开发资料--NDK环境搭建
谷歌改良了ndk的开发流程,对于Windows环境下NDK的开发,如果使用的NDK是r7之前的版本,必须要安装Cygwin才能使用NDK.而在NDKr7开始,Google的Windows版的NDK ...
- iOS开发中代理使用出现的问题解决
在给自定义的LHQTabBar设置代理的时候,定义的代理的属性的时候此时会报一个警告 我们需要遵守UITabBarDelegate的协议才行, 不过此时还有警告,警告已经变成了 此时我们需要在.m文件 ...
- 12.编写一个Java项目,定义包,在包下定义包含main方法的类,在main方法中声明8种基本数据类型的变量并赋值,练习数据类型转换。
注意:float虽然是4个自减,但是它的取值范围却比8个字节的long要大. float和double只能用来作科学计算或者是工程计算,但在商业计算中我们要用java.math.BigDecimal, ...
- svn服务器配置
源代码版本维护 官方网站:http://subversion.apache.org/ Windows客户端 TortoiseSVN:http://tortoisesvn.net/ 常见的版本控制软件 ...
- Functional programming
In computer science, functional programming is a programming paradigm, a style of building the struc ...
- 一些Office 365的问题收集
1. 按照MS的最佳实践, 应该是先有本地域, 然后再有Office 365. 但是我们公司刚好相反, 于是按照前面的文章做完了硬关联, 但是现在发现对于那些原本就在Office 365上的用户的Pr ...
- OpenCV学习笔记——视频的边缘检测
使用Canny算子进行边缘检测,并分开输出到三个窗口中,再给每一个窗口添加文字 代码: #include"cv.h" #include"highgui.h" / ...