Overall Satisfaction with Redis
We use Redis for low latency repetitive point queries. To break it down:
- Low latency: As it is in memory, saves on I/O
- Repetitive: As part of ETL we use it to address resolution, .i.e. given an address, find a representative lat long for it. As millions of rows are ETLed every day, there is high chance that they repeat. Having in-memory helps again
- Point queries: WHERE age BETWEEN 10 and 30 is a range query and WHERE age = 15 is a point query. We use it only for point queries
- When dataset is small enough to fit in-memory and get full benefits of reduced I/O
- Need of rich data structures for complex querying
- Speed of in-memory store and durability by disk at the same time
- Declarative querying like SQL
- Tools for monitoring and identifying performance bottlenecks
- Key schema design can be tricky and heavily impacts the performance (leading to key scans)
- We use it all the time for point queries and it worked well
- Though it is in-memory it is distributed and durable
- We need high availability for ETL and low read latency accelerates even further
Haven't extensively worked with MemSQL but it follows SQL interface which makes it instantaneously familiar to many non-computer scientists. Both are in-memroy and durable. However due to it NoSQL characteristics might scale better in a distributed environment, but haven't tested it how MemSQL solved this problem (if at all)