Redis 3.0.0 beta-1 is out

1,704 views
Skip to first unread message

Salvatore Sanfilippo

unread,
Feb 11, 2014, 5:36:11 AM2/11/14
to Redis DB
Hi all,

the first beta of Redis 3.0.0, or should I say "Redis Cluster"? is
out! Our road to get 3.0.0 stable starts officially today.

In this release what I tried to do is to refine the basic operations
in order to provide a software that is ready for "developer
evaluation". There are still a few issues open that will be fixed in
the course of the next betas, but 3.0.0-beta1 is surely something you
can test, evaluate, and develop for. It is also API freeze from the
point of view of the client, and introduces one of the first API break
since months (hash tags), with the exception of multi-keys operations
that could be enabled in the future for keys in the same hash slot,
but should not break clients compatibility in any way.

Also the Cluster Tutorial was improved a bit, and it is still the
entry point for new Cluster users together with the cluster
specification for more advanced users:

http://redis.io/topics/cluster-tutorial
http://redis.io/topics/cluster-spec

This release does not feature only Redis Cluster support, but also a
major speedup, since it introduces a new object called EMBSTR, that is
an SDS string and a Redis object structure encoded in the same
allocation, reducing cache misses. However the focus is definitely on
the cluster and it is a very "poor" release otherwise, as other major
releases usually provide much more enhancements: most of the next
improvements outside the cluster are are deserved for the 3.2 release,
that will be a "back to fundamentals" release.

Next steps: beta-2 will be focused a lot on writing unit tests for
Redis Cluster. It is possible that a completely new testing framework
will be written specifically for Redis Cluster, and that running the
two test suits for Redis standalone and the cluster version will
require executing different commands: Redis Cluster tests are likely
to be slow and many users may not care about cluster.

I saw new things in the area of clients: Jedis included support for
Redis Cluster, and Predis improved the support that was already
present. Thank you for your work guys!

However make sure to avoid using key names containing {} characters
while testing those clients, the hash slot thing was added just a few
days ago so clients must fix the algorithm. Redis-rb-cluster is
already fixed and can be used with hash slots already.

From the point of view of support for multiple DC setups, this is
still an ongoing effort. You can already clone every master node in
other DCs but there is currently no mechanism preventing those slaves
from trying to get promoted when a master is failing. The idea is to
have the ability to configure a set of instances as "fixed", so
they'll only switch master when a configuration change is detected,
but will never try to get elected. However this is not enough, and
redis-trib should provide support to "mass-configure" all those slaves
as masters when switching to a new datacenter is needed (but this will
be as simple as sending CLUSTER FAILOVER to every slave). I would love
to get feedbacks about this, how do you plan to use multi-DC setups?

IMPORTANT: keep in mind that if you start evaluating Redis for
development or production, before the release of the stable version
you'll get direct support from me every time you find an issue. Fixing
issues in Redis Cluster will be considered critical and high priority
even if the release is in beta.

The next beta, beta-2, will be released between 10 and 12 March 2014.

Have fun!
Salvatore

--
Salvatore 'antirez' Sanfilippo
open source developer - GoPivotal
http://invece.org

To "attack a straw man" is to create the illusion of having refuted a
proposition by replacing it with a superficially similar yet
unequivalent proposition (the "straw man"), and to refute it
-- Wikipedia (Straw man page)

Salvatore Sanfilippo

unread,
Feb 11, 2014, 5:38:57 AM2/11/14
to Redis DB
Oh! I forgot to say a few important things about how to fetch beta-1
without cloning the unstable branch:

1) Now we have a 3.0 branch on Github. This will only get commits that
are not likely to break things. New development will happen into
unstable as usually.
2) We have a Redis 3.0.0 beta section at redis.io download section
now. There are betas tarball.
3) Releases of betas are tagged on Github as usually, beta 1 is tagged
as 3.0.0-beta1.

Salvatore

Sam Saffron

unread,
Feb 11, 2014, 3:27:52 PM2/11/14
to redi...@googlegroups.com
Awesome. 

Quick question, is pub/sub stuff also shared between servers based on key? 

Matt Stancliff

unread,
Feb 11, 2014, 3:33:25 PM2/11/14
to redi...@googlegroups.com

On Feb 11, 2014, at 3:27 PM, Sam Saffron <sam.s...@gmail.com> wrote:

> Awesome.
>
> Quick question, is pub/sub stuff also shared between servers based on key?

Right now, any PUBLISH gets forwarded to all cluster nodes. You can subscribe to any node
in the cluster to receive a PUBLISH from any other node.

Benefit: You can subscribe anywhere and publish anywhere.
Drawback: If you have a lot of PUBLISH activity, you’ll be flooding your cluster with messages
getting broadcast to every node.


-Matt

Salvatore Sanfilippo

unread,
Feb 11, 2014, 6:01:53 PM2/11/14
to Redis DB
On Tue, Feb 11, 2014 at 9:33 PM, Matt Stancliff
<mstan...@gopivotal.com> wrote:
> Drawback: If you have a lot of PUBLISH activity, you'll be flooding your cluster with messages
> getting broadcast to every node.

Totally correct.

In the future we'll have more intelligent routing. The good thing
about the current setup is that's not as bad as it looks for a few
reasons:

1) Redis Pub/Sub does a lot of work when there are a lot of
subscribers. Publishing to keys with little/no subscribers is very low
cost, so servers receiving useless publish messages will not suffer
too much CPU wise.
2) Publish in Redis Cluster are propagated via a binary protocol that
does not involve the usual command dispatch thing, this basically
stresses point "1".
3) However bandwidth-wise you may a lot of duplicated messages, but
the solution is to run a separated cluster (possibly in the same
virtual machines of your "data" Redis Cluster) that has just as few
nodes as you need to have some decent fault tolerance, but is small
enough that the bandwidth cost is not crazy. For example 3 or 4 nodes.

In the future the idea is to use bloom filters to understand when it's
worth trying to publish, as in, it is likely there is a subscriber for
that key in the target node.

Marcos NiLs

unread,
Feb 11, 2014, 10:59:04 PM2/11/14
to redi...@googlegroups.com
Hi there, 

Congratulations for such an incredible work.

We want to let you know that starting from version 2.4.0 which will be released in a couple of minutes Jedis Cluster will have full support for HashTags. Salvatore, I think you're gonna like these tests (https://github.com/xetorthio/jedis/pull/541/files#diff-d6fcdcedcc4208284993c7b4a89ae0daR174)

Keep up the excellent work.


Marcos.

Salvatore Sanfilippo

unread,
Feb 12, 2014, 4:11:37 AM2/12/14
to Redis DB
On Wed, Feb 12, 2014 at 4:59 AM, Marcos NiLs <marco...@gmail.com> wrote:
> https://github.com/xetorthio/jedis/pull/541/files#diff-d6fcdcedcc4208284993c7b4a89ae0daR174


Thanks Marcos! I can recognize those strings indeed :-) Awesome work,
it was super cool to see such a support from the Jedis and Predis
community.

Sonerao Jadhav

unread,
Feb 12, 2014, 4:35:54 AM2/12/14
to redi...@googlegroups.com

Hello

Salvatore i am jadhav sonerao and i hope you can help me for learning the concept  of redis   i dont have any Knowledge of that Redis but i would like to learn that  please help me  and suggest  best tutorial to leran that one 


















Salvatore Sanfilippo

unread,
Feb 12, 2014, 5:44:45 AM2/12/14
to Redis DB
Hello, the best thing is to start at "redis.io". Also if you serach
with google you'll find a number of slides and talks.

This is a good introduction -> https://vimeo.com/56651266
> --
> You received this message because you are subscribed to the Google Groups
> "Redis DB" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to redis-db+u...@googlegroups.com.
> To post to this group, send email to redi...@googlegroups.com.
> Visit this group at http://groups.google.com/group/redis-db.
> For more options, visit https://groups.google.com/groups/opt_out.

Daniele Alessandri

unread,
Feb 12, 2014, 8:28:19 AM2/12/14
to redi...@googlegroups.com
On Tue, Feb 11, 2014 at 11:36 AM, Salvatore Sanfilippo <ant...@gmail.com> wrote:

However make sure to avoid using key names containing {} characters
while testing those clients, the hash slot thing was added just a few
days ago so clients must fix the algorithm. Redis-rb-cluster is
already fixed and can be used with hash slots already.

Predis has been updated to support key hash tags with redis-cluster. This change is already available on GitHub (both v0.8 and master branches) and it's going to be included in v0.8.6 which will be released sometime tomorrow in the afternoon (CET).

PS: congrats on the first beta, it's already quite a milestone :-)

--
Daniele Alessandri
http://clorophilla.net/
http://twitter.com/JoL1hAHN

Salvatore Sanfilippo

unread,
Feb 12, 2014, 9:48:07 AM2/12/14
to Redis DB
Thank you Daniele!
> --
> You received this message because you are subscribed to the Google Groups
> "Redis DB" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to redis-db+u...@googlegroups.com.
> To post to this group, send email to redi...@googlegroups.com.
> Visit this group at http://groups.google.com/group/redis-db.
> For more options, visit https://groups.google.com/groups/opt_out.



Sonerao Jadhav

unread,
Feb 13, 2014, 12:57:13 AM2/13/14
to redi...@googlegroups.com

Salvatore Thank You for Guidance but even  i done google but i dont understand exact conecept of Rides can you provide some web link for as a reference  


--
You received this message because you are subscribed to a topic in the Google Groups "Redis DB" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/redis-db/0DB1rpTE180/unsubscribe.
To unsubscribe from this group and all its topics, send an email to redis-db+u...@googlegroups.com.

Salvatore Sanfilippo

unread,
Feb 13, 2014, 3:58:29 AM2/13/14
to Redis DB
Hello Sonearo,

you may try with this online tutorial -> http://try.redis.io/
It let you try Redis on your browser to understand the kind of operations it does.

In general Redis is a computer program that accept connections form other programs.
These other programs connecting to Redis are able to execute "commands".
Commands are able to manipulate data inside Redis.

There is also a freely available book about Redis here: http://openmymind.net/2012/1/23/The-Little-Redis-Book/

What you can do is to start reading and send an email to the list when you don't understand something, but with a specific question, otherwise it is hard to help.

Salvatore
       — Wikipedia (Straw man page)

Sonerao Jadhav

unread,
Feb 13, 2014, 5:44:19 AM2/13/14
to redi...@googlegroups.com
Big Thank You

Salvatore for that

Rutul Patel

unread,
Oct 4, 2014, 1:02:48 PM10/4/14
to redi...@googlegroups.com
As per rediscluster specification when we use keys such as {stuff}* it will compute hash for just "stuff" and the key of this pattern will be stored in a particular hash slot which in turn will be stored in a particular node.
Now I want to fire scan command with a match hint on that particular node to retrieve keys of the pattern {stuff}* so that I can performc delete on those keys.

How I will know on which node key will be stored.
So basically I want to use Hash tags and contact that particular node to fire scan command.
Please tell me how I can achieve this using JedisCluster.

Sonerao Jadhav

unread,
Oct 5, 2014, 8:31:14 AM10/5/14
to redi...@googlegroups.com
Hello Sir I am Passionate to Learn What is Radis please Help me
I hope for Positive Revert Back

--
Reply all
Reply to author
Forward
0 new messages