Currently we have an application that doesn't scale well because of multiple concurrent updates to a table which gets locked. The tech stack is ASP.NET and backend is in SQL Server.To avoid database access I am considering using NoSQL as a message queue where a producer service allocates tasks based on business logic into different message queues in Redis. Any recommendations would be appreciated.Proposed architectureA user logs in and the server creates a consumer process which reads the MQ, and starts working on the Task. It makes only two database updates - one registering the logged in user and other creating a new entry in the Task table. All consequent updates (quite a few ) are updated in Redis. At the end of the Task, the task object with all the new details is pushed to another queue for persistence to the RDMBS where the Task table is updated with all other data.
Using NoSQL as MQ and for maintaining state
design;sql;nosql;redis