Very effective for end-user searching applications and for generating search results. Also very well suited to those looking for high reliability and performance. If [you're doing] fuzzy searching or if you are working on a smaller end-user application or an internal application that does not require high performance and flexible/adapting searching then it may not be necessary to use Solr.
Perfect solution for caching needs. If you have a bottleneck due to frequent data access to your database, then Redis can really help you by diverting those traffic away from your database. Its key/value pair structure also makes data lookup very efficient, providing excellent performance.
Faceted navigation and field collapsing/grouping : filtering and quick results were what we needed for our websites. Our customers needed to have this functionalities for good and efficient results.
We tested them with our customers' registered searches (they received all new goods matching with their registered searches by emails and/or mobile push). Results were incredible by comparison with our old system (old MySQL requests).
Note : we didn't put all our data in Solr. Just what we need for searching uses. Other data stayed in our MySQL database.
Auto-suggest : our old auto-suggest wasn't performing well. With Apache Solr, our new one was worked really well ! The suggestions came quickly and suggestions were good.
We also extended auto-suggestion with geo-spatial data and it worked well.
Hit highlighting : we used this functionality and we didn't have problem and nasty surprise.
Keep all data status during data upgrading (see next details for improvements)
Easy for developers to understand. Unlike Riak, which I've used in the past, it's fast without having to worry about eventual consistency.
Reliable. With a proper multi-node configuration, it can handle failover instantly.
Configurable. We primarily still use Memcache for caching but one of the teams uses Redis for both long-term storage and temporary expiry keys without taking on another external dependency.
Fast. We process tens of thousands of RPS and it doesn't skip a beat.
Redis is super fast but it comes with a cost. Whole dataset resides in RAM. So it can be costly as primary memory is more costly, then secondary ones.
Persistence issues: To achieve it, Redis uses a memory dump to create a persistence snapshot, that's cool. But it requires some Linux Kernel tweaking to avoid performance degradation while the Redis server process is forking. This further causes latency.
Master-slave structure side effect: Master-slave architecture comes with its own side effects. Please note that there will be only one master with multiple slaves for replication. All writing goes to the master, which creates more load on the master node. So, when the master goes down, the whole architecture does.
We will definitely continue using Redis because: 1. It is free and open source. 2. We already use it in so many applications, it will be hard for us to let go. 3. There isn't another competitive product that we know of that gives a better performance. 4. We never had any major issues with Redis, so no point turning our backs.
It takes some time to deploy and currectly maintein it. And also, to learn how to use and integrate in the enviroment as well. Once you get theses steps done, it usability is very simple, and almost of the time it don't require no further attention on it. Even for maintence, if you deploy it on a cluster mode, it is very reliable and easy to take one host down.
It is quite simple to set up for the purpose of managing user sessions in the backend. It can be easily integrated with other products or technologies, such as Spring in Java. If you need to actually display the data stored in Redis in your application this is a bit difficult to understand initially but is possible.
The support team has always been excellent in handling our mostly questions, rarely problems. They are responsive, find the solution and get us moving forward again. I have never had to escalate a case with them. They have always solved our problems in a very timely manner. I highly commend the support team.
We switched from search indexes stored in MySQL to soar and it's made a world of difference for our growing businesses. The relational databases are very poor for handling the complex data searches require and Solr delivered all the tools we need to get the performance our end users are demanding.
UI isn't that great compared to the other competitors. The management of our memcached cluster was becoming pretty complicated as the application grew in size. Redis is a much better option compared to memcached. Redis is bit unreliable compared to the alternative RabbitMQ especially when it needs to be integrated with Celery.
It's enabled us to deliver fast, relevant search results on our new website. The site is still in beta and being actively developed so our complete ROI is still unknown.
It integrates very well with Drupal so it has saved us from having to develop a custom solution.
Existing tools like Redisson that were built over Redis reduced dev time in solving challenging problems, which had a positive impact on ROI.
We initially misused Redis for persistent storage which had a negative impact on ROI because we were paying a lot for inactive users.
The increased performance we achieved using Redis in areas like locking helped us improve the performance of our system reducing the likelihood of system timeouts.