redis 持久化性能

总览

尽管有许多可用于Java的高性能消息传递系统,但大多数都避免引用基准,包括持久消息传递和消息的序列化/反序列化。 这样做有多种原因。 1)您并不总是需要或想要持久消息2)您希望使用自己的序列化选项。 避免使用它们的一个重要原因是,这两种方法都会使消息传递速度降低多达10倍,看起来并不那么好。 大多数消息传递基准测试都将重点介绍传递原始字节而没有持久性的性能,因为这提供了最高的数字。 有些还引用了持久消息编号,但是这些编号通常要慢得多。

如果您需要高效地对实际数据进行序列化和反序列化,并且即使您已学会了不使用这些数据,也想记录和重播消息该怎么办?

更高的性能序列化和耐用性

我已经编写了一个库,试图解决更多的问题,正如我所看到的,以便为您提供更好的整体解决方案。 它不是可用的最快消息传递,但是它是持久的,并且包括序列化和反序列化时间。 正如我已经指出的那样,这可能比传输序列化数据的成本高10倍,因此在实际应用中,该解决方案可以更快。

示例:发送价格

在此测试InProcessChronicleTest .testPricePublishing()中,我发送价格事件,该事件包括一个较长的时间戳,一个符号,一个出价价格/数量和要价/数量。 写入数据的时间为0.4 µS(0.0004毫秒),通过TCP连接接收数据的时间为1.8 µS。

注意:此连接在两端都是持久的,因此您可以查看哪些数据已排队发送和已接收。 如果连接丢失,即使服务器不可用(例如,重新启动客户端),它也可以从原来的位置继续播放,或者可以选择播放客户端已经收到的任何消息。

为了发送和接收500万条消息,我使用了-Xmx32m -verbosegc标志,该标志表明只需要很少的堆,并且在此测试过程中没有发生任何GC。 这意味着该库对您的其余应用程序影响很小。

与外部化对象进行比较。

为了说明这一点,我将其与在InProcessChronicleTest中序列化和反序列化包含相同数据的对象所需的时间进行了比较。 testSerializationPerformance()。 PriceUpdate对象是可外部化的,并且该基准测试 “比较JVM平台上序列化库的各个方面”表明,可外部化对象可以是可用的最快序列化之一。 在同一台计算机上花费的时间是2.7 µS进行序列化和7.5 µS进行反序列化。 注意:这不包括消息传递或持久性,仅用于序列化和反序列化。

序列化 运输 写作时间 时间阅读
Java纪事 TCP和持久性 0.4微秒 1.8微秒
可外部化 没有 2.7微秒 7.5微秒
可序列化 没有 3.8微秒 13.2微秒

结论

在对消息传递进行基准测试时,您应该包括发送和接收真实消息所花费的时间,而不仅是byte [],还包括持久性(如果需要)。

参考:来自Vantage Java博客的JCG合作伙伴 Peter Lawrey提供的高性能持久消息 。

翻译自: https://www.javacodegeeks.com/2013/02/high-performance-durable-messaging.html

redis 持久化性能

redis 持久化性能_高性能持久消息相关推荐

  1. java mina性能_高性能Java网络框架 MINA

    Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络 ...

  2. fst java性能_高性能序列化框架FST

    fst是完全兼容JDK序列化协议的系列化框架,序列化速度大概是JDK的4-10倍,大小是JDK大小的1/3左右. 首先引入pom de.ruedigermoeller fst 2.04 测试代码 pa ...

  3. [Redis]Redis章2 Redis 持久化

    一.Redis持久化是如何工作的?  什么是持久化?简单来讲就是将数据放到断电后数据不会丢失的设备中,也就是我们通常理解的硬盘上. 首先我们来看一下数据库在进行写操作时到底做了哪些事,主要有下面五个过 ...

  4. 高性能分布式缓存redis(持久化原理 安全策略 过期删除内存淘汰策略 性能压测 高可用 Redis Cluster)

    redis redis(持久化原理 安全策略 过期删除&内存淘汰策略 性能压测 高可用 Redis Cluster) 1. 持久化原理 1.1 持久化流程(落盘) 1.2 RDB详解 1.2. ...

  5. redis和mysql内存数据库性能_Redis高性能内存数据库

    (一)什么是Redis? Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zse ...

  6. java如何实现redis分片存储_面试官:你说一下Redis吧,怎么实现高可用,还有持久化怎么做的?...

    前言 作为Java程序员,在面试过程中,缓存相关的问题是躲不掉的,肯定会问,例如缓存一致性问题,缓存雪崩.击穿.穿透等.说到缓存,那肯定少不了Redis,我在面试的时候也是被问了很多关于Redis相关 ...

  7. redis aof 备份和恢复_深入理解Redis持久化

    redis持久化的意义 持久化机制的介绍 RDB和AOF的基本介绍 RDB持久化机制的优点 RDB持久化机制的缺点 AOF持久化机制的优点 AOF持久化机制的缺点 RDB和AOF到底该如何选择 RDB ...

  8. mysql数据库优化面试redis持久化_【大厂面试06期】谈一谈你对Redis持久化的理解?...

    Redis持久化是面试中经常会问到的问题,这里主要通过对以下几个问题进行分析,帮助大家了解Redis持久化的实现原理. 1.Redis持久化是什么? 2.Redis持久化有哪些策略?各自的实现原理是怎 ...

  9. redis 缓存过期默认时间_缓存的必知必会:一文搞懂Redis持久化和过期机制

    本文主要介绍了 Redis 持久化的两种机制:RDB 和 AOF,以及键过期的策略:惰性删除和定期删除,还有 RDB.AOF 和复制功能对过期键的处理. RDB RDB 是 Redis 持久化的第一种 ...

最新文章

  1. js高级程序设计(六)面向对象
  2. elasticsearch导入数据的几种方法
  3. 记录第一次使用jni编译so包的入门操作
  4. Encapsulate Downcast(封装向下转型)
  5. 信奥中的数学:母函数
  6. c语言学习-判断一个数的正、负,输出相应信息
  7. mysql 5.5 双机热备_mysql 5.5双机热备份 master-master
  8. fiddler4请求拒绝原因
  9. android 谷歌地图离线访问,谷歌升级Android版地图应用 支持离线使用
  10. java单例接口_JAVA单例模式
  11. 攻防世界re:logmein
  12. react antd表格中渲染一张或多张图片
  13. JavaScript大作业 (校园运动会网站设计与实现)
  14. xsy3320 string
  15. c语言 循环结构 ppt,C语言中 循环结构.ppt
  16. IT码农进入日企之路——模拟试题
  17. 【AU】单链表就地逆置
  18. OpenCV 图像处理:白化(whitening)
  19. ESP32-硬件SPI读取MCP3208
  20. UART的RTL逻辑设计部分 - uart_tx

热门文章

  1. 漫画:什么是优先队列
  2. Java通过Class的对象来获取泛型的class示例
  3. Spring Boot的自动化配置原理
  4. react-redux模型图
  5. android微信分享之视频、URL地址、表情分享
  6. (转)漫画:什么是分布式事务?
  7. java作为kafka生产者实验及Expiring超时问题解决
  8. MySQL创建字段+数据处理函数+汇总数据(聚集函数)+分组数据
  9. 反射和配置文件的实际应用
  10. neo4j 迁移_在Kubernetes中迁移Neo4j图模式