EhcacheCache和Redis做mybatis二级缓存对比

源码:

使用EhcacheCache做二级缓存

使用redis做二级缓存

我们都知道无论是使用redis做二级缓存,还是使用EhchcheCache做二级缓存,都需要去实现Cache接口,并实现其中的方法;使用EhchcheChche做二级缓存mybatis帮我们实现了,我们只需要引入相应的maven 依赖(坐标)即可;而使用Redis做二级缓存我们需要自己去实现Cache接口;

Cache接口中的方法:

package org.apache.ibatis.cache;

import java.util.concurrent.locks.ReadWriteLock;

public interface Cache {
    String getId();

    void putObject(Object var1, Object var2);

    Object getObject(Object var1);

    Object removeObject(Object var1);

    void clear();

    int getSize();

    ReadWriteLock getReadWriteLock();
}

下图是EhcacheCache做二级缓存:
image.png
下图是Redis做二级缓存:

image.png

详细代码就不贴出来了;这里贴出测试代码:

@RequestMapping("/findAll")
    public String findAll() {
        long begin = System.currentTimeMillis();
        List<Person> persons = personService.findAll();
        long ing = System.currentTimeMillis();
        System.out.println(("请求时间:" + (ing - begin) + "ms"));
        return JSON.toJSONString(persons);
    }
    @RequestMapping("/cacheFindAll")
    public String cacheByFindAll() {
        long begin = System.currentTimeMillis();
        List<Person> persons = personService.findAll();
        long ing = System.currentTimeMillis();
        personService.findAll();
        long end = System.currentTimeMillis();
        System.out.println(("第一次请求时间:" + (ing - begin) + "ms"));
        System.out.println(("第二次请求时间:" + (end - ing) + "ms"));
        return JSON.toJSONString(persons);
    }

首先我们测试redis做二级缓存;我们先执行findAll方法;测试结果如下:

然后执行cacheByFindAll方法,测试结果如下

image.png
然后我们测试EhcacheCache做和二级缓存,执行findAll方法;测试结果如下:
image.png
后执行cacheByFindAll方法,测试结果如下
image.png
使用Redis做二级缓存,除了第一次时间较长之外,之后的几次都几乎到70-80ms之间;
使用EhcacheCache做二级缓存,除了第一次时间较长之外,之后的几次基本上不花费时间;
是不是差别很大,这就是为什么mybatis帮我们实现了EhcacheCache做二级缓存的方式,虽然说redis很牛X,但得看用到什么地方;用好了事半功倍,用到了不该用的地方得不偿失;

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值