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

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

pom.xmlredis

<!--整合redis-->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
        </dependency>
View Code

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

首先了解一下,zset这个集合的特性。有序列表 相似<Key,List<Map<key,value>>>  的类型  和hash差很少 可是,须要注意的是,他的值是颇有讲究的,便是说他是有序的,确定有个排序规则,因此,你要往里面放值,必须是   ide

zadd zset  100 a  200 b  300 c key是zset 100 a  200 b  300 c 至关于list里面一个一个对象 100至关于分数,必须是int类型 a 是咱们实际的值 也就是说 咱们想插入值的时候,必须是按照这种 我这里是一口气插入三个值 key相同

java 的api 实现  看注释 spa

 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(); } }
相关文章
相关标签/搜索