jedis实现操纵redis的常用api及使用场景

时间:2023-02-09 17:30:00

简单记录一下,和描述一下常用的业务场景。好记性不如烂笔头。

pom.xml

jedis实现操纵redis的常用api及使用场景jedis实现操纵redis的常用api及使用场景
<!--整合redis-->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
        </dependency>
View Code

场景1:浏览排行榜场景,比如说一个房屋列表,每次点进去详情,就会浏览数加1,而且,我们只取前10位,而且我们是按照点赞的数量来排序的。是不是有点小复杂?不用担心,redis两个命令就搞定。屌的一逼。

首先了解一下,zset这个集合的特性。有序列表 类似<Key,List<Map<key,value>>>  的类型  和hash差不多 但是,需要注意的是,他的值是很有讲究的,即是说他是有序的,肯定有个排序规则,所以,你要往里面放值,必须是   

zadd zset  100 a  200 b  300 c

key是zset 

100 a  200 b  300 c  相当于list里面一个一个对象

100相当于分数,必须是int类型  a 是我们实际的值

也就是说  我们想插入值的时候,必须是按照这种  

我这里是一口气插入三个值  key相同

java 的api 实现  看注释 

 private static final String HOT_HOUSE_KEY = "hot_house"; //点赞的key

//
增加点赞的方法 public void increase(Long id) { try { Jedis jedis = new Jedis("127.0.0.1"); jedis.zincrby(HOT_HOUSE_KEY, 1.0D, id + ""); //每次为 值 id + "" 加1 // 0代表第一个元素,-1代表最后一个元素,保留热度由低到高末尾10个房产,因为zset是排序的, // 所以说默认的是从低到高,我们要保留前十名,我们就要把第一和倒数 第11之间的值移除掉 填坑 ~~这个是个错误,因为如果这样的话,那就永远只有10条了。错误逻辑
       // 最主要是记住api的用法 这里就注释了~
// jedis.zremrangeByRank(HOT_HOUSE_KEY, 0, -11); jedis.close(); } catch (Exception e) { log.error(e.getMessage(),e); } } //得到点赞数的所有排行榜列表 从高到低排列 public List<Long> getHot() { try { Jedis jedis = new Jedis("127.0.0.1"); //因为是默认排序从低到高,所以我们要反过来取,指定区间内的成员。其中成员的位置按分数值递减(从大到小)来排列 Set<String> idSet = jedis.zrevrange(HOT_HOUSE_KEY, 0, -1); jedis.close(); List<Long> ids = idSet.stream().map(Long::parseLong).collect(Collectors.toList()); return ids; } catch (Exception e) { log.error(e.getMessage(), e); return Lists.newArrayList(); } }