• 哪种缓存效果高?开源一个简单的缓存组件j2cache


    背景

    现在的web系统已经越来越多的应用缓存技术,而且缓存技术确实是能实足的增强系统性能的。我在项目中也开始接触一些缓存的需求。

    • 开始简单的就用jvm(java托管内存)来做缓存,这样对于单个应用服务器来说很好。
    • 为了系统的可用性,需要做灾备,那么就要多准备一套系统环境,这时就会有一些共享资源的问题,比如Tomcat的session共享出来
    • 几个系统会公用一套缓存数据,这样就变成一个共享池

    需求的增长也就带来了系统的变化,也正为这种变化我开始思考怎么让这些代码兼容,并为以后的系统模块提供比较统一的支持。正好在openfire这个开源项目上得到了启发,它的集群思路我觉得是种不错的解决方案。

    j2cache介绍

    随后就开始写一个简单的缓存系统,结构非常的简单,代码也非常的简单。说是开源其实也有点过了,只是觉得闭门造车没有意思,所以将代码放在github上,如果有高手看到指点一下那我不是赚大了。哈哈。

    github:https://github.com/mini188/j2cache

    代码非常简单,maven工程引入也很容易,我就不打算对代码做啥说明,有兴趣的朋友下载简单看看就能明白。 image

    项目主要特点:

    • Key-value的存储结构
    • 基于java.util.Map<K, V>接口,这样很容易与hashmap之类的兼容
    • 基于策略模式的扩展

    为此项目中实现了三种存储方案:

    • jvm虚拟机内存,适用于单应用,或者不需要同步的情况
    • redis,适用于需要redis的场景,比如缓存共享等
    • iginte,一种带网络计算的方案

    j2cache的入测试

    测试机器环境:

    我的测试方法比较简单,向缓存里连续写100万个对象,然后看看处理的性能。说明一下,这些测试都是在本机完成的

    OS:Windows7 64位

    CPU:I5-4210U @ 1.70GHZ 2.40GHZ

    RAM:8G

    Redis用的是Redis on Windows Redis-x64-3.2.100

    本地环境中写入1,000,000个对象的

    • 开始测试写入缓存jvmCache

    总共耗时:2380ms

    每毫秒写入:420条

    每秒写入:420000条

    • 开始测试写入缓存igniteCache

    总共耗时:9503ms

    每毫秒写入:105条。

    每秒写入:105000条。

    • 开始测试写入缓存redisCache

    总共耗时:40367ms

    每毫秒写入:24条。

    每秒写入:24000条。

    结果

    为了对各种方案进行一些数据上对比,做了一个简单的写入测试,使用本地内存做缓存这种方案最高效,写入量达到42万每秒。而redis则只达到了24000条/秒,我对redis不是特别熟悉,看到这个数据有点诧异。

    我比较懒,没有测试一段时间内的读写性能,只不过从这个简单的测试中发现,本地内存的效果还是很高的,如果加上一些其他的功能,比如网络传输,数据同步等后性能会下降。

    只不过redis和ignite差这么大我没有搞明白,不知道是不是我的方法不对呢?

     

    注:此文章为原创,欢迎转载,请在文章页面明显位置给出此文链接!
    若您觉得这篇文章还不错请点击下右下角的推荐,非常感谢!
    http://www.cnblogs.com/5207
  • 相关阅读:
    java进程自动杀死
    线程池的取值(一)与拒绝策略
    zju 1383 Binary Numbers
    可以连续几行数,,,分别相加求和
    几个数字的和
    zju 2812 Quicksum---------hdu 2734
    rwkj 1332 C语言实验四(函数):题目1、数字根
    zju 1295 Reverse Text
    zju 1241 Geometry Made Simple
    hdu 1379 DNA Sorting
  • 原文地址:https://www.cnblogs.com/5207/p/5908567.html
Copyright © 2020-2023  润新知