
Redis 3.0.0 is out - agonzalezro
https://groups.google.com/forum/#!msg/redis-db/dO0bFyD_THQ/Uoo2GjIx6qgJ
======
timdorr
From the release notes:
[https://raw.githubusercontent.com/antirez/redis/3.0/00-RELEA...](https://raw.githubusercontent.com/antirez/redis/3.0/00-RELEASENOTES)

    
    
        * Redis Cluster: a distributed implementation of a subset of Redis.
        * New "embedded string" object encoding resulting in less cache
          misses. Big speed gain under certain work loads.
        * AOF child -> parent final data transmission to minimize latency due
          to "last write" during AOF rewrites.
        * Much improved LRU approximation algorithm for keys eviction.
        * WAIT command to block waiting for a write to be transmitted to
          the specified number of slaves.
        * MIGRATE connection caching. Much faster keys migraitons.
        * MIGARTE new options COPY and REPLACE.
        * CLIENT PAUSE command: stop processing client requests for a
          specified amount of time.
        * BITCOUNT performance improvements.
        * CONFIG SET accepts memory values in different units (for example
          you can use "CONFIG SET maxmemory 1gb").
        * Redis log format slightly changed reporting in each line the role of the
          instance (master/slave) or if it's a saving child log.
        * INCR performance improvements.

~~~
vasquque
You fogot:

WARNING: Redis 3.0 is currently a BETA not suitable for production
environments.

~~~
james33
I think he just forgot to remove that from the changelog as this is indeed
marked as a stable release now, except possibly for the cluster feature.

~~~
antirez
Sorry, stale warning removed.

------
JonnieCache
Here's the full cluster spec: [http://redis.io/topics/cluster-
spec](http://redis.io/topics/cluster-spec)

Looking forward to seeing it taken apart by aphyr.

Congrats to Salvatore and the rest of the redis committers!

~~~
poooogles
Is he still doing Jepsen tests? Thought he was doing Clojure work atm?

~~~
steveklabnik
Yes, he is not doing Jepsen at the moment. The end of his last blog post on it
has some explanation. That said, I wouldn't wonder if he'd make an exception,
given that it's Redis...

~~~
necubi
He's been tweeting about Jepsen tests on Aerospike lately:
[https://twitter.com/aphyr/status/582653874894282752](https://twitter.com/aphyr/status/582653874894282752).

~~~
chupy
We are considering Aerospike because apparently a lot of our competitors are
using it and I really would love to see those tests.

------
gsnedders
(To note, I have limited experience with using Redis. My questions may be
stupid.)

As far as I can tell, most of the advantages of Redis come from the fact that
it's all held in memory and so access is fast. Is networked access to other
parts of the cluster quick enough that it is quicker than storing the data on
one computer, partly on disk? When would one want to use a Redis cluster
rather than something stored on-disk and cached in memory?

~~~
meritt
The primary advantage of Redis is native data types and access patterns beyond
simple key-values: lists, sets, sorted sets, hash tables, pub/sub,
hyperloglog, and scripting (lua) support.

Being memory-based was simply a feature but not necessarily something that set
it apart: Memcached had that area pretty well locked down for being a blazing
fast key-value store. And then Membase was basically memcached + persistence
and clustering. Now Redis has clustering too!

~~~
siculars
seconded. memory = fast is not the point. the point is that it gives you
specific data types that do specific things and since it's in memory it does
those things very quickly. that said, you need to implement your own
clustering or sharing solution. jury is still out on the new cluster code, i
havent reviewed it yet.

------
agonzalezro
For lazy readers: CLUSTERING!

~~~
xofer

       Maybe it works great from day one,
       maybe it will need a few more iterations, 
       and possibly with 3.2 we'll improve support for many stuff, 
       but my guess is that Redis 3.0.0 today, in some way, changes what Redis is.

~~~
agonzalezro
It's software. Everybody knows how it works :)

------
yankoff
I just hope it's not an April's fool joke

~~~
beat
Yeah, clustered Redis, announced today? Sounds like a joke to me!

~~~
antirez
Not a joke, the release was due in these days, so I picked 1 April since we
have a tradition now to ship 1 April. Last year with HyperLogLog support,
because of the futuristic name of the data structure, people had an hard time
to believe it was a really thing and not a joke.

~~~
alanh
I understand your reasons and nevertheless hope that you can realize that you
are still contributing to April Fool's insanity by making it that much harder
for people to tell what is serious and what isn't on this day of disregard.

You’re totally within your rights here. I just beg you to consider the
audience.

~~~
zymhan
Won't someone please think of the childr...er, developers!

~~~
beat
After many years of DevOps and configuration management, I've learned to think
of developers as children...

------
simon_weber
Does anyone have more details on what the "embedded string" object encoding is
and what workloads it helps with? The closest thing I can find is
[https://github.com/antirez/redis/issues/543](https://github.com/antirez/redis/issues/543),
which seems pretty old.

~~~
antirez
Hey, it's very straightforward. Normally you have something like the redis
object structure which has a type field, and a pointer to the actual
representation of the object. If type is REDIS_STRING, you have the pointer to
an "sds" string (where sds is the name of the string library used).

Now with embedded strings there is a special kind of string objects that
instead use a single allocation for both the object structure and the string
itself. This is slightly more memory efficient, but especially, improves
memory locality a lot, so basically everything uses string objects (string
types, or aggregate data types large enough to use string objects as values of
the collection), will perform better.

Those special strings are used only for small strings (the majority in most
work loads).

------
napsterbr
That was a nice timing, just yesterday I hacked around asyncio-redis package
to provide clustering support.

Anyone interested in trying it out, or contributing, you can see the project
here: [https://github.com/renatomassaro/asyncio-redis-
cluster](https://github.com/renatomassaro/asyncio-redis-cluster)

Edit: as for blocking requests, redis-py-cluster is an awesome lib that
provides cluster support over the traditional redis-py client.

------
oimaz
I really like antirez approach to building system software. Build it step-by-
step, iterate and very soon you have an amazing piece of software

------
jessaustin
[http://redis.io/download](http://redis.io/download)

~~~
lamby
(Or Debian unstable in an hour or so...)

------
flowerpot
Does the cluster feature deprecate redis-sentinel?

~~~
antirez
No... Sentinel will still be developed alongside with Redis Cluster. For
single instance deployments where all you want is HA, Sentinel may be a more
obvious way to get it compared to running Redis in cluster mode. In the _long_
term, with plenty of early warnings, we may support the current Sentinel use
case with Cluster and merge the two stuff.

~~~
flowerpot
Neat! Really looking forward to that!

------
devy
On
[https://github.com/antirez/redis/tree/3.0](https://github.com/antirez/redis/tree/3.0)
branch, it shows "This branch is 1004 commits ahead, 1252 commits behind
unstable".

------
martin1985
What is the best alternative for redis?

~~~
joeblau
[http://memcached.org/](http://memcached.org/) used to be. I haven't done
system architecture in about 2 years but when we were looking at in memory
databases, it came down to Redis or Memcache.

Depending on what you need your database for, there are some that perform
better than others. You can check this site for comparisons:
[http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-
redis](http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis)

~~~
BurningFrog
Redis is normally not in memory. Everything is written to disk and survives a
power failure.

Memcached is just a cache. Don't store anything there you can't lose.

~~~
tim333
Not sure that's quite right. From the docs:

>In order to achieve its outstanding performance, Redis works with an in-
memory dataset. Depending on your use case, you can persist it either by
dumping the dataset to disk every once in a while, or by appending each
command to a log.

~~~
BurningFrog
Well, it's written to disk either way. You're right that if you do the "once
in a while" setup, you can lose some data in a power failure.

At a previous job people started using Redis thinking it was a fast in-memory
data store. It turned out we had accumulated tens of thousands of records.

I haven't measured, but I doubt it's much faster than Postgres. It does have
other nice features. I like using the expiring records for caching.

------
bayesianhorse
April 1st is one of the worst dates for announcements ever...

~~~
Walkman

        p.s. no April fools here. 1 year ago I released HyperLogLog, today 3.0.0, just to contrast with some shit done this April fool lameness.
    

[https://twitter.com/antirez/status/583279481453936640](https://twitter.com/antirez/status/583279481453936640)

------
buster
Why not just linking to the google groups post or the release notes?

------
xai3luGi
Still no SSL, so using redis-client still just spews your password out all
over the internet.

~~~
untog
Why are you connecting to a Redis box across the internet? There's a great
(and after Heartbleed, prophetic) post on the Varnish web site about why they
don't implement SSL, I imagine Redis would be similar:

[https://www.varnish-cache.org/docs/trunk/phk/ssl.html](https://www.varnish-
cache.org/docs/trunk/phk/ssl.html)

~~~
EugeneOZ
Varnish is other thing. For cross-datacenter replication you will want SSL. So
for Redis Cluster it's a necessary thing.

~~~
danudey
For cross-datacenter replication you should be using a secured VPN anyway.

~~~
EugeneOZ
No, if your db can use SSL, then additional layer of complexity is not
required.

upd.: don't get me wrong, Redis is my favorite DB, really. But better to be
objective.

~~~
thedufer
It's hard to imagine every service in your infrastructure implementing SSL
would be more secure than a single VPN tool. You are very optimistic about the
difficulties of getting security right.

~~~
EugeneOZ
It's really simple to imagine and I even have implemented it :) "One single
VPN" may (and will) fail sometimes, so count your complexity and stability
with and without one extra service.

~~~
thedufer
I'm sorry to be skeptical, but when a random person on the internet claims to
have implemented SSL more securely than open source tools that are completely
built around security, I tend to not believe it.

Implementing SSL is easy. Implementing SSL correctly is very difficult, and
you probably won't find out you did it wrong for a long time, if ever.

~~~
EugeneOZ
I'm not implementing SSL, I just use it. With MySQL you can just use it. With
Redis you have to use VPN with all costs of VPN. Please calm down and stop
forcing your preference of VPN as the only right way.

