主流内存的功能和性能比较

电脑杂谈  发布时间:2020-03-23 08:05:26  来源:网络整理

java将数据保存到内存_数据不能被存入内存_ 内存

内存数据库可以分为关系内存和键值内存. 在实际应用中,内存主要与大型关系(例如oracle或mysql)结合使用. 它们注重性能,并具有类似于缓存的作用. 他们不注意数据完整性和数据一致性. 基于键值的内存比关系更易于使用,性能和可伸缩性更好,因此在应用程序中它们比关系内存得到更多的使用. 本文首先比较FastDB,Memcached和Redis主流内存的功能特性,然后比较H2,Memcached和Redis内存的性能. 我希望每个人都可以根据其业务需求的特定特征选择合适的开源产品.

FastDb是一个高效的关系内存系统,具有实时功能和便捷的C ++接口. 通过控制读取访问模式,FastDB针对应用程序进行了优化. 通过减少数据传输的开销和非常有效的锁定机制来提供高速查询. 对于使用的每个应用程序文件,都将映射到虚拟内存空间. 因此,查询是在应用程序的上下文中执行的,而无需切换上下文和数据传输. 在fastdb中并发访问的同步机制是通过原子指令实现的,这几乎不会增加查询开销.

FastDB的特征包括以下几个方面:

1. FastDB不支持客户端-服务器体系结构,因此所有使用FastDB的应用程序都必须在同一主机上运行;

2,fastdb假定整个都在RAM中,并根据此假设优化查询算法和接口.

3,fastdb没有缓冲区管理开销,并且不需要在文件和缓冲池之间传输数据.

4. 整个fastdb搜索算法和结构是基于所有数据都存在于内存中的假设,因此数据交换的效率不会很高.

5. Fastdb支持事务,备份以及系统崩溃后的自动恢复.

6. fastdb是面向应用程序的. 表由应用程序的类信息构成.

FastDB无法支持Java API接口,这使得FastDB不适合该应用程序.

Memcached是基于键值的开源缓存服务器系统. 它主要用于数据缓存,不能完全称为.

Memcached的API使用32位循环冗余校验(CRC-32)计算键值并将数据分布在不同的机器上. 当表已满时,新数据将被LRU机制替换. 由于memcached通常仅用作缓存系统,因此使用memcached的应用程序在写回速度较慢的系统(例如后端)时将需要其他过程来更新memcached中的数据.

memcached具有用于多种语言的客户端开发套件,包括: Perl,PHP,JAVA,C,Python,Ruby,C#.

Redis是高性能的键值. Redis的出现在很大程度上弥补了缺少键值存储(例如内存缓存)的不足,并且在某些情况下可以起到补充关系的作用. 它提供了C ++,Java,Python,Ruby,Erlang,PHP客户端.

FastDB不适合,因为它不支持Java客户端. 在对Memcached和Redis进行比较时,它分为性能和功能两个方面.

有关性能的详细信息,建议您继续阅读. 我已经在H2,Memcached和Redis的读写,删除方面进行了性能测试.

因此,从内存功能的全面角度来看 内存,建议使用Redis.

此性能测试选择当前相对成熟和使用的内存. 这些主流的性能通过读写性能测试进行比较. 在性能测试期间,同时记录每个产品的稳定性.

比较的内存包括Memcached,Redis,H2.

java将数据保存到内存_ 内存_数据不能被存入内存

性能测试主要包括用于读取,写入和删除内存的测试.

使用单个线程将一定数量的记录插入内存中,记录插入时间,每条记录的数据大小相同;然后执行一定数量的读取操作以记录读取时间;最后删除这些数据并记录时间.

基于读写效率的内存性能综合评估.

具体测试数据量为:

1. 插入10,000条数据并记录时间;

2. 读取上述10,000条数据并记录时间;

3. 逐个删除上述10,000条数据并记录时间.

此测试总共需要一台联系服务器. 配置如下:

CPU: 2.13GHz @ Intel(R)Xeon(R)CPU E7-4830,总共32个CPU,每个CPU 8个内核;

内存: 8G物理内存,9G交换分区;

磁盘: 250G物理磁盘;

网卡: 单个网卡,最大带宽1000Mbps,全双工

在此服务器上构建中标云平台并创建虚拟机. 所有三个内存都部署在虚拟机中. 虚拟机配置为:

CPU: Intel(R)Xeon(R)CPU E7-4830 @ 2.13GHz,总共2个CPU,每个CPU 8个内核;

内存: 1G物理内存,5G交换分区;

磁盘: 50G物理磁盘;

网卡: 单个网卡,最大带宽1000Mbps,全双工

测试应用程序已部署在通用桌面上,并且桌面配置为:

CPU: Intel(R)Xeon(R)CPU E7-4830 @ 2.13GHz,总共2个CPU,每个CPU2内核;

 内存_数据不能被存入内存_java将数据保存到内存

内存: 1G物理内存,2G交换分区;

磁盘: 64G物理磁盘;

网卡: 单个网卡,最大带宽1000Mbps(共享) 内存,全双工

台式机和服务器使用普通的内部LAN连接.

在安装Memcached之前,请安装相关的libevent库. 步骤如下:

#tar -zxvf libevent-2.0.12.stable.tar.gz

#cd libevent-2.0.12.stable

#./configure --prefix = / usr / libevent

#make

#进行安装

memcached安装需要从源代码进行编译和安装,步骤如下:

#tar -zxvf memcached-1.4.15.tar.gz

#cd ./memcached-1.4.15

#./configure --with-libevent = / usr / libevent

#make

#进行安装

Redis的安装也从源代码开始. 将压缩的Redis源代码包复制到/ usr / local /目录. 安装步骤如下:

#tar -zxvf redis-2.6.14.tar.gz

#cd ./redis-2.6.14

 内存_java将数据保存到内存_数据不能被存入内存

#make

启用Redis随附的Redis服务器和客户端访问工具,如下所示:

#src / redis服务器

#src / redis-cli

H2的安装相对简单,只需使用unzip命令将其解压缩即可.

解压缩后,进入bin目录,并将h2.sh文件中Java命令启动的主类和选项修改为:

org.h2.tools.Server -tcpAllowOthers -webAllowOthers

然后执行脚本h2.sh以启动. H2提供了本地命令行控制台. 启动方法是:

#java -cp * .jar org.h2.tools.Shell

通常,使用图形Web界面更为方便.

Memcached的测试结果如下:

基准测试结果如下:

设置数据花费的时间(毫秒): 344

获取数据花费的时间(毫秒): 8297

删除数据所花费的时间(毫秒): 187

Redis测试结果如下:

基准测试结果如下:

设置数据花费的时间(ms): 5594

获取数据花费的时间(毫秒): 6312

数据不能被存入内存_java将数据保存到内存_ 内存

删除数据所花费的时间(毫秒): 3969

H2的测试结果如下:

基准测试结果如下:

设置数据花费的时间(ms): 14609

获取数据花费的时间(毫秒): 14859

删除数据所花费的时间(毫秒): 10469

从结果来看,Memcached的性能最佳,Redis位居第二,H2的性能最差. 详细地说,Redis的读取性能比Memcached稍好.

在执行此测试之前,该软件并未进行优化,因为总测试数据为10,000,每个数据小于1KB,但总计为10MB,并且只有一个线程,因此默认配置应足够,因此测试结果可以反映它们各自的性能.

产生此结果的主要原因是这三个软件的功能丰富程度不同以及使用内存的条件不同. H2作为关系具有持久存储功能,因此它仍然使用大量磁盘,并且H2还需要考虑关系的关键特性,例如数据完整性和原子性. Redis使用键-值范例,该范例无法到达关系. 这种可靠性具有较少的功能,可以更多地关注性能,但是为了防止数据丢失,它支持持久性存储机制. Memcached也是键值方法,它不支持持久存储,纯内存软件.

还有一种情况与性能无关. 在编写测试应用程序时,Memcached需要最少的代码,其次是Redis,而H2需要最多的代码.

结合以上功能特点和性能测试结果的分析,选择内存的结论如下:

1. 如果没有特殊要求,则Memcached具有最佳的综合性能和最方便的编程. 建议使用它.

2. 如果有很多读取操作,并且内存需要提供持久性存储以避免重启后数据丢失,建议使用Redis.

关于性能,您可以参考[6]中的比较. 最终的比较结果表明,Redis在小文件和大文件的读写性能方面优于Memcached,尤其是在大文件的读写性能方面,Memcached性能不高.

关于功能,您可以参考[7]中的分析. 分析指出,Redis对Memcached的最大补充就是对持久性的支持,这可以防止在重新启动或升级计算机时丢失数据.

我的测试代码是用Java开发的,开发环境是Eclipse 3.7. 如果您需要我所有的测试代码,可以在评论中留下电子邮件,我将其发布.

[1]来自源的Memcached构建.

[2]配置Memcached.

[3] Redis文档.

[4] Jedis 2.0 API! / index.html.

[5] H2引擎版本1.3.172(2013-5-25).

[6] Memcache和Redis性能比较..

[7] Memcache和Redis功能分析..


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-149258-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...