Assess performance and integrity of Redis data storage + serialization
Aaronontheweb opened this issue · comments
Need to assess the following before we begin making any changes:
- Is Akka.Persistence.Redis making the best use of its underlying data structures? I.E. how many I/O writes per logical write are we using right now?
- Is Akka.Persistence.Redis serializing its data in accordance with Akka.NET best practices?
- Is Akka.Persistence.Redis creating identifiers in Redis that will play nicely with Redis Cluster, per #93
Looks like we're using bespoke serialization for Akka.Persistence.Redis: #33
Same issue happened with almost all of the Akka.Persistence plugins: akkadotnet/akka.net#3811
edit: this is only for snapshots - not sure how the journal does it just yet...
Looks like we might be doing the right thing for journal serialization:
Akka.Persistence.Redis/src/Akka.Persistence.Redis/JournalHelper.cs
Lines 23 to 33 in 392f9b8
Compare that to what we do in MongoDb:
The actual Redis data structure layouts, at first glance, seem sensible - but the low performance numbers might be due to the use of the Redis channels for firing events that drive Akka.Persistence.Query:
Akka.Persistence.Redis/src/Akka.Persistence.Redis/Journal/RedisJournal.cs
Lines 90 to 130 in 392f9b8
We might want to add the option to disable those for users who aren't using Akka.Persistence.Query with this plugin.