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


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

    pom.xml

    <!--整合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(); } }
  • 相关阅读:
    Ubuntu 虚拟机空间不足增加空间笔记
    am335x sd卡启动开启识别emmc kernel 上的改动
    Delphi实现树型结构具体实例
    学习 TTreeView [15]
    delphi中Treeview的使用介绍
    按下F2编辑dxDBTreeView的节点
    dbtreeview
    我的dbtreeview–treeview直接连接数据表_delphi教程
    SqlDbx连接oracle(可用)
    SqlDbx连接oracle(无需安装Oracle客户端)
  • 原文地址:https://www.cnblogs.com/coder-lzh/p/8955883.html
Copyright © 2020-2023  润新知