一类数据多种存储(虑将频繁查询的数据加载到内存或者内存数据库。如果一类数据,即要在内存中存储一份,又要在数据库中存储一)

一类数据多种存储

      为提升系统访问性能,程序设计通常会考虑将频繁查询的数据加载到内存或者内存数据库。如果一类数据,即要在内存中存储一份,又要在数据库中存储一份。下面的代码是获取Article(文章)的实现。

    public Article getArticle(int articleId) {

        Article article = articleDaoMemcachedImpl.getArticle(articleId);

        if (article == null) {

            article = articleDaoMysqlImpl.getArticle(articleId);

            if (article != null) {

                articleDaoMemcachedImpl.addArticle(article);

            }

        }

        return article;

    }

    通过上述代码我们可以看到,程序会先调用articleDaoMemcachedImpl.getArticle获取,如果获取不到,再调用articleDaoMysqlImpl.getArticle获取,然后再调用articleDaoMemcachedImpl.addArticle写入。上述articleDaoMemcachedImplMemcache实现,articleDaoMysqlImplmysql实现。

    这种实现,代码臃肿且不易扩展。假设需要再增加一种实现的情况下,对代码改动很大。使用XXX框架提供的Dao标准Api,可以很方便的实现扩展且代码简洁。

    public Article get(int articleId) {

        return CacheLoader.get(articleDaoMemcachedImpl, articleDaoMysqlImpl,

                    articleId);

    }

    简单的一句调用,就完美实现了一类数据二类存储,如果需要再增加一层存储,只需要再增加一类实现传入就可以了。

    XXXX Dao标准接口约定了当出现多种存储时,需要定义DaoCacaheImpl实现。上述例子的代码都是在DaoCacaheImpl里实现的。前面的共识里第三条也对此进行了说明。完整的文件结构如下:

    ArticleDao(接口), ArticleDaoCacheImplcache实现ArticleDao接口), ArticleDaoMemcachedImplmemcache实现ArticleDao接口), ArticleDaoMysqlImpl(mysql实现ArticleDao接口)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值