redis进阶实例

redis提供了多重相关操作,以前只会简单的get、set,当项目用到rightPush、rightPop以及leftPush、leftPop处理优先级任务时,我才发现这个功能的好用,善用工具类,坚决很多问题,看完有惊喜

   /**
     * redis 的get和set方法
     */
    @Test
    public void test01() {
        CacheUtils.set("jarvins:robot:" + 1, initRobotRole(1));
        CacheUtils.set("jarvins:robot:" + 2, initRobotRole(2));
        CacheUtils.set("jarvins:robot:" + 3, "jarvins");

        System.out.println(CacheUtils.get("jarvins:robot:1", RobotRole.class));
        RobotRole robotRole = CacheUtils.get("jarvins:robot:2", RobotRole.class);
        System.out.println(robotRole.getRoleName());
        System.out.println(CacheUtils.get("jarvins:robot:3",String.class));
    }


    /**
     * redis 的del方法: 可以输入多个key
     */
    @Test
    public void test02() {
        CacheUtils.del("jarvins:robot:" + 2,"jarvins:robot:" + 1);
    }

    /**
     * getObj的使用
     */
    @Test
    public void test03() {
        Object obj = CacheUtils.getObj("jarvins:robot:1");
        System.out.println(obj);
    }

    /**
     * getObj
     * retain true保留,false取完直接删掉
     */
    @Test
    public void test04() {
        Object obj = CacheUtils.getObj("jarvins:robot:1", false);
        System.out.println("============" + obj);
    }

    @Test
    public void test05(){
        CacheUtils.set("jarvins:robot:num",100);
        CacheUtils.incr("jarvins:robot:num",4);
        final double decr = CacheUtils.decr("jarvins:robot:num", 2);
        System.out.println(decr);
    }

    // ------------------------------------------以下针对map进行操作-------------------------------------------------//

    /**
     * 向key对应的map中添加缓存对象
     * addMap(String key, String field, T obj)
     */
    @Test
    public void test06() {
        CacheUtils.addMap("jarvins:robot:robotName", initRobot("robotCuqi").getLoginName(), initRobotRole(1));
    }

    /**
     * CacheUtils.getMapField
     */
    @Test
    public void test07() {
        RobotRole jarvins = CacheUtils.getMapField("jarvins:robot:robotName", initRobot("jarvins1").getLoginName(), RobotRole.class);
        System.out.println(jarvins);
    }

    /**
     * 获取所有的map集合
     */
    @Test
    public void test08(){
        Map<String, RobotRole> robotRoleMap = CacheUtils.mget("jarvins:robot:robotName", RobotRole.class);
        System.out.println(robotRoleMap);
        System.out.println(robotRoleMap.get("jarvins1"));
        System.out.println(robotRoleMap.get("jarvins1").getRoleName());
    }

    /**
     * 根据key值删除map元素
     */
    @Test
    public void test09() {
        CacheUtils.delMapField("jarvins:robot:robotName","robotCuqi");
    }

    /**
     * 设置失效时间
     */
    @Test
    public void test10() {
        CacheUtils.expire("jarvins:robot:3", 10000);
    }

    //------------------------------------set操作-----------------------------------//
    @Test
    public void test11() {
        CacheUtils.sadd("jarvins:fans:keys","fans","cars","robotic");
        Set<String> keys = CacheUtils.keys("jarvins:fans:keys");
    }

    //-----------------------------------list-------------------------------------//

    /**
     * rightPush
    */

    @Test
    public void test12(){
        CacheUtils.rightPush("jarvins:fans:robotList", initRobotUserList1());
        List<Object> objectList = CacheUtils.returnList("jarvins:fans:robotList");
        System.out.println(objectList);
    }

    /**
     * 从list左侧插入
     */
    @Test
    public void test13() {
        CacheUtils.leftPush("jarvins:fans:robotList", initRobotUserList2());
    }

    /**
     * 取出所有的list内容
     */
    @Test
    public void test14() {
        List<Object> objects = CacheUtils.returnList("jarvins:fans:robotList");
        Object o = objects.get(0);
        System.out.println(objects);
        System.out.println(o);
    }

    @Test
    public void test15(){
        CacheUtils.leftPop("jarvins:fans:robotList");
    }

    


    // 初始化
    public RobotRole initRobotRole(Integer robotId) {
        RobotRole robotRole = new RobotRole();
        robotRole.setRoleName("ai机器人");
        robotRole.setLastEditorId(123);
        robotRole.setCreateTime(new Date());
        robotRole.setId(robotId);
        return robotRole;
    }

    public RobotUser initRobot(String robotName){
        RobotUser robotUser = new RobotUser();
        robotUser.setLoginName(robotName);
        robotUser.setRobotName(robotName);
        return robotUser;
    }

    public List<RobotUser> initRobotUserList1(){
        List<RobotUser> userList = Lists.newArrayList();
        userList.add(initRobot("BruceLee1"));
        userList.add(initRobot("BruceLee2"));
        userList.add(initRobot("BruceLee3"));
        return userList;
    }

    public List<RobotUser> initRobotUserList2(){
        List<RobotUser> userList = Lists.newArrayList();
        userList.add(initRobot("BruceLee7"));
        userList.add(initRobot("BruceLee8"));
        userList.add(initRobot("BruceLee9"));
        return userList;
    }

此测试类拿去就可以用,但是不能跑,相关的代码有点多,可以看看下面的这个地址

https://gitee.com/SmileLsf/jarvins_redis.git

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值