I have a couple of load balanced node.js servers that need to have some shared state. All servers have high frequency in both reads and writes. What would be a good approach for a consistent shared memory among all instances that wouldn't be a bottleneck as much as possible? I initially went with redis, which is still an option unless there are better approaches for dealing with this. Also, Would a central server approach be a good alternative?
Redis is a good solution to get Highly available data, you can scale redis easily using a master slave architecture where all the writes go to the master whose data is replicated to all slaves, all read happens from the slave.
But as the data is highly available CAP theorem suggests that we cannot guarantee consistency, Redis is no exception to this theorem
Since you need a consistent common data store I would suggest to read more on redis consistency guarantees
The data store I would suggest is an in memory RDBMS, but it mainly depends on what kind of data are you storing, what would it be used for, how are you gonna query it etc.