redis in action 一些基本操作 ZSET类型

0人阅读 评论(0) 收藏 举报
分类:
import java.util.HashMap;
import java.util.Map;

import redis.clients.jedis.Jedis;

public class SortSetType {
    public static void main(String[] args) {
        LinkRedis linkRedis = LinkRedis.getLinkPedis();
        Jedis jedis = linkRedis.getJedis();
        // Redis sorted
        // set的内部使用HashMap和跳跃表(SkipList)来保证数据的存储和有序,HashMap里放的是成员到score的映射,而跳跃表里存放的是所有的成员,排序依据是HashMap里存的score,使用跳跃表的结构可以获得比较高的查找效率,并且在实现上比较简单

        // zadd -- 向zset中添加元素member,score 用于排序,如果元素存在,则更新其顺序,返回0代 表没添加成功
        // Long zadd(String key, double score, String member)
        // Long zadd(String key, double score, String member, ZAddParams params)
        // Long zadd(String key, Map<String,Double> scoreMembers)
        // Long zadd(String key, Map<String,Double> scoreMembers, ZAddParams
        // params)

        Map<String, Double> map = new HashMap<String, Double>();
        map.put("a", 1.0);
        map.put("b", 2.0);
        map.put("c", 3.0);
        map.put("d", 4.0);
        System.out.println(jedis.zadd("zset", map));

        // zrange -- 取出集合中的元素
        // Set<String> zrange(String key, long start, long end)
        // Set<String> zrangeByLex(String key, String min, String max)
        // Set<String> zrangeByLex(String key, String min, String max, int
        // offset, int count)
        // Set<String> zrangeByScore(String key, double min, double max)
        // Set<String> zrangeByScore(String key, double min, double max, int
        // offset, int count)
        // Set<String> zrangeByScore(String key, String min, String max)
        // Set<String> zrangeByScore(String key, String min, String max, int
        // offset, int count)
        // Set<Tuple> zrangeByScoreWithScores(String key, double min, double
        // max)
        // Set<Tuple> zrangeByScoreWithScores(String key, double min, double
        // max, int offset, int count)
        // Set<Tuple> zrangeByScoreWithScores(String key, String min, String
        // max)
        // Set<Tuple> zrangeByScoreWithScores(String key, String min, String
        // max, int offset, int count)
        // Set<Tuple> zrangeWithScores(String key, long start, long end)
        System.out.println(jedis.zrange("zset", 0, -1));
        System.out.println(jedis.zrangeWithScores("zset", 0, -1));

        // zrem -- 删除名称为key的zset中的元素member
        // Long zrem(String key, String... members)
        // Long zremrangeByLex(String key, String min, String max)
        // Long zremrangeByRank(String key, long start, long end)
        // Long zremrangeByScore(String key, double start, double end)
        // Long zremrangeByScore(String key, String start, String end)
        System.out.println(jedis.zrem("zset", "a"));

        // zincrby -- 修改元素的排序,如果元素不存在则添加该元素,且排序的score值为增加值
        // Double zincrby(String key, double score, String member)
        // Double zincrby(String key, double score, String member, ZIncrByParams
        // params)
        System.out.println(jedis.zincrby("zset", 5.0, "b"));
        System.out.println(jedis.zrange("zset", 0, -1));

        // zrank -- 返回元素在集合中的排序位置,就是索引值
        // Long zrank(String key, String member)
        System.out.println(jedis.zrank("zset", "b"));

        // zrevrank -- 返回从大到小的排序索引值,就是逆序位置
        // Long zrevrank(String key, String member)
        System.out.println(jedis.zrevrank("zset", "b"));

        // zrevrange -- 返回集合中从大到小排序(降序)的,索引start到end的所有元素
        // Set<String> zrevrange(String key, long start, long end)
        // Set<String> zrevrangeByLex(String key, String max, String min)
        // Set<String> zrevrangeByLex(String key, String max, String min, int
        // offset, int count)
        // Set<String> zrevrangeByScore(String key, double max, double min)
        // Set<String> zrevrangeByScore(String key, double max, double min, int
        // offset, int count)
        // Set<String> zrevrangeByScore(String key, String max, String min)
        // Set<String> zrevrangeByScore(String key, String max, String min, int
        // offset, int count)
        // Set<Tuple> zrevrangeByScoreWithScores(String key, double max, double
        // min)
        // Set<Tuple> zrevrangeByScoreWithScores(String key, double max, double
        // min, int offset, int count)
        // Set<Tuple> zrevrangeByScoreWithScores(String key, String max, String
        // min)
        // Set<Tuple> zrevrangeByScoreWithScores(String key, String max, String
        // min, int offset, int count)
        // Set<Tuple> zrevrangeWithScores(String key, long start, long end)
        System.out.println(jedis.zrevrange("zset", 0, -1));

        // zcount -- 返回集合中给定区间的数量
        // Long zcount(String key, double min, double max)
        // Long zcount(String key, String min, String max)
        System.out.println(jedis.zcount("zset", 0, 3));

        // zcard -- 返回集合中所有元素的个数
        // Long zcard(String key)
        System.out.println(jedis.zcard("zset"));

        System.out.println(jedis.del("zset"));
        linkRedis.close();
    }

}
查看评论

Linux应用与ubuntu基本操作

-
  • 1970年01月01日 08:00

用python实现一个redis的zset数据结构

用了redis也有2年多了,常常感叹于redis的优美和精悍,麻雀虽小五脏俱全。 最近手痒冒出用python在内存中实现一个zset数据结构的想法。 思路是这样的: hash + sortedlist...
  • u010180339
  • u010180339
  • 2014-09-15 22:15:10
  • 3278

Redis系列-set类型和zset类型

set类型  Set是集合,它是string类型的无序集合。 set是通过hash table 实现的,添加、删除和查找的复杂度都是0(1)。 对集合我们可以取并集、交集、差集。 sadd ...
  • SDN_SUPERUSER
  • SDN_SUPERUSER
  • 2013-11-01 20:48:43
  • 3749

java对redis各种数据类型的基本操作

一、key的基本操作 private void KeyOperate() { System.out.println("======================ke...
  • qiqizhiyun
  • qiqizhiyun
  • 2015-11-06 18:29:36
  • 5414

redis set zset 的具体操作

前面已经了解了set和zset的数据结构。现在了解一下在使用的过程中具体命令。 set是集合,是String类型的无序集合,它是通过hash实现的,所以它在操作时候的复杂度和hash一样,O(1),这...
  • mggwct
  • mggwct
  • 2016-03-02 16:32:09
  • 1160

Nosql之Redis: zset(有序集)数据类型及操作命令

zset全称为sorted-sets类型,和set数据类型有极为相似,都是字符串的集合,都不允许重复的成员 出现在一个set中.两者的主要区别是zset的每一个成员都会有一个分数(score)与之关...
  • u012768474
  • u012768474
  • 2016-06-06 08:28:20
  • 296

redis之有序集合类型(Zset)——排行榜的实现

Redis有序集合类似Redis集合存储在设定值唯一性。不同的是,一个有序集合的每个成员带有分数,用于以便采取有序set命令,从最小的到最大的分数有关。 Redis 有序set添加,删除和测试中的O(...
  • loophome
  • loophome
  • 2015-12-24 14:57:48
  • 13255

NoSQL之Redis对zset(有序集合)数据类型的操作

一、简介 Sorted set(zset)是set的升级版本,它在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新得值调整顺序。可以理解为有两...
  • liutingxu1
  • liutingxu1
  • 2013-12-03 17:13:56
  • 4889

redis取zset中score最大的member

1.zrange key start stop [withscores]   zrange key -1 -1 [withscores] 返回有序集 key 中,指定区间内的成员。 其中成员的...
  • chen199199
  • chen199199
  • 2016-01-18 10:52:16
  • 6197

Redis学习之zsets类型及操作

zsets类型与功能: 操作命令:
  • swordgirl2011
  • swordgirl2011
  • 2017-12-15 00:11:03
  • 168
    个人资料
    持之以恒
    等级:
    访问量: 511
    积分: 503
    排名: 11万+
    文章存档
    最新评论