美文网首页
vavr使用

vavr使用

作者: 上课睡觉觉 | 来源:发表于2018-06-10 22:26 被阅读0次

    高并发的场景下,DB前置缓存是常用的一种解决方案。
    通常做法是将从DB查询出的值放入缓存(分布式缓存或者本地缓存都可以),下次请求时先从缓存取数据,如果获取不到,再从DB查询;但是如果查询结果本就为空,缓存里会落空值,这样会导致请求还是全部落到DB,这时候就需要在DB放置一个空对象。
    我们可以使用guava的Optional类,也可以自己定义一个实现了Serializable接口的result类用来存放空对象,正好最近接触到了vavr,所以尝试使用了一下vavr中的Option类。

    部分代码如下

    public MyObject queryMyObjectById(String id) {
        //根据主键id从缓存获取数据
        Option<MyObject> option = (Option<MyObject>)cacheManager.getObject(id);
        if (option != null) {
            return option.getOrNull();
        } else {
            MyObject myObject = myObjectDAO.queryMyObjectById(id);
            //如果查询为空,放入空对象,防止所有查询为空的结果落到DB上
            cacheManager.put(id, Option.of(myObject));
            return myObject;
        }
    }
    

    Vavr 是Java 8+中一个函数式库,提供了一些不可变数据类型及函数式控制结构。
    官方英文文档链接
    翻译文档链接

    相关文章

      网友评论

          本文标题:vavr使用

          本文链接:https://www.haomeiwen.com/subject/cmbqeftx.html