Redis is unbelievably cool. It is so easy to set it up and connect to it in Clojure that I find myself using it whenever I need to cache anything with persistence between runs. Even for a single set of data it's actually easier to use Redis than deal with data files and their problems (naming, overwriting, concurrent access, etc).
Redis is also great because it's essentially a collection of data structures with concurrent programming primitives, persistence added on top. Data structures mean you can offload quite a bit of work onto it. For example, we use it to cache search results — and you can do results paging entirely from within redis (LRANGE).
It isn't really comparable to Cassandra, they really do different things. Also, I am not a fan of the whole "NoSQL" thing. I use PostgreSQL when it makes sense, and Redis when Redis makes sense.
We just rewrote our app from a Postgres backend to a Redis backend. The main difference I see with using NoSQL vs traditional SQL is that you massage the data during insert time so when you goto to look it up later it's pretty much already in the form you need it. This makes lookups super fast, regardless of whether you're paging or not.
I can honestly say I'll never look back. Traditional SQL had a nice run but the incredible gains in simplicity and performance with nosql are indisputable - especially performance.
Case in point: In our initial testing it looks like the Redis setup will be able to support approx 10,000 accounts on one modest dedicated server vs about 100-200 accounts using Postgres.
I think Redis is great (i'm using it for a few apps as a backend store for resque, and soon as a rails partial cache with better control over expiration based on an object's dependency-graph).
Yet, I don't understand why people use such superlatives constantly about it. Is anyone else a happy user but a bit overwhelmed by the hype? (And i hesitate to use that word because it sounds overly negative.) Call me a student of human psychology noticing a trend that in this case happens to be in my interests. It would be much more irritating if I hated Redis - I don't, but I still can't ignore the squirmy feeling i get when I read about it...
if you want my opinion, people are tired of seeing stuff that are hard to work with. I think Redis has its value, but part of the hype is clearly the fact that it is something simple, clear, non ad-hoc (we only care about CS data structures). A pretty alien concept in the database world.
An amazing release! For me, the most significant feature is by far virtual memory - which means that not all the data has to reside in physical memory.
antirez has written a lot about Redis virtual memory, which is worth checking out if you are using Redis:
Redis 2.2.0 will be a memory optimization release so even with VM disabled this new version of Redis is going to take a very small percentage of the current memory in order to store small lists and sets (for instance less than ~200 elements), like it happens already with hashes.
Woohoo! Redis has quickly become my favorite transient data store. I'm using a combination of Postgres, Redis and Cassandra and feel like I have the natural data mapping for every scenario. No more pushing square pegs into round holes.
* Redis is a lot simpler and more dynamic since it isn't intended to solve petabyte problems or used on large clusters of computers. An example, you can play with Redis online: http://try.redis-db.com/
* Redis is much easier to understand, since Redis is a key-value store with rich datatypes (such as lists, sets and hashes). Cassandra is a database paradigm shift build to solve Google scale problems.
* Redis perfomance is similar to memcached - and memcached's perfomance is pretty amazing.
I would only pick something like Cassandra if I had to store a lot of data on a large number of computers. If I wanted to do something fast and I know that my data won't grow to terabytes then Redis is a very good choice.
Redis has a rapidly growing list of data operations to model a wide variety of problems within a bound storage space (the VM feature expands that space). Cassandra does a specific task, unlimited high volume redundant writes, extremely well. I use Redis for session data, caching and queuing needs but for the huge volume data store Cassandra is the answer.
Redis is a swiss army knife, Cassandra is a Ka-Bar.
I don't suppose you'd consider blogging about that setup (and in particular which data store you find to be natural for which scenario)? I don't know Redis or Cassandra (or similar) very well, which means it's hard to know what sort of things they're best suited to, compared to each other or to an RDBMS.
At some point I would like to blog about it but right now I am under the gun to deliver a product so I'm writing a lot more code than english for the next few months.
In a nutshell I use Postgres for the relatively static data and Cassandra for the very high volume transactional data. I use Redis for ad-hoc data structures and some caching. The natural fit means I'm not jamming de-normalized data into a relational database for performance reasons. Hope this helps.
Like many others, I'm also in the early stages of love with redis. It works for so many cases, and is so simple to setup that I see myself just dropping it in everywhere. But my favorite feature of Redis when I was starting out was probably antirez himself. He is extremely helpful and a great open source project leader. The documentation (especially the tutorial-like wiki articles) is great, antirez helps out tons of people on the mailing list and in IRC, and his rate of output is incredible (I believe RC1's original release date actually got moved up, and he hit the new date right on the nose). Gives me a lot of confidence that this awesome project is here to stay.
Redis is also great because it's essentially a collection of data structures with concurrent programming primitives, persistence added on top. Data structures mean you can offload quite a bit of work onto it. For example, we use it to cache search results — and you can do results paging entirely from within redis (LRANGE).
It isn't really comparable to Cassandra, they really do different things. Also, I am not a fan of the whole "NoSQL" thing. I use PostgreSQL when it makes sense, and Redis when Redis makes sense.