ANTIREZ Profile picture
May 29, 2018 14 tweets 4 min read
Redis 5 thread! What's new? Why I call it Redis 5? Lets start from this last question. Redis future versions will be called Redis 5, Redis 6, Redis 7 and so forth. We release every 1 / 1.5 years more or less, there is no point in saying 3.2 or 4.4.
However versioning schema will not change, so like we did for 4.0 having 4.0.1, 4.0.2, we'll do the same for 5.0.x. Also as usually release candidates of 5 start at version 4.9.101 for RC1, 4.9.102 for RC2 and so forth. So this is "Redis 5" without too many other attributes.
What's new in Redis 5?

1) The star of the release is... the new streams data type with the consumer groups. If you don't know what they are we have a good introduction here that will show you the important parts: redis.io/topics/streams…
Redis Streams were also covered here: brandur.org/redis-streams even if back then when @brandur wrote this great blog post, consumer groups were totally lacking from the implementation, so the new story is a bit more complex, but the new features are useful!
2) Redis modules have two new set of APIs: timers and cluster. The Cluster API is not about "Redis Cluster", is a cluster message bus abstraction so that you can write distributed systems with Redis. I'm re-writing Disque on top of those new APIs, as a Redis module.
3) RDB was modified in order to include LFU/LRU metadata alongside with keys. This means that if you restart an instance with RDB, the eviction process will not start at random, but will still use clues from the last execution.
4) Redis 5 moves away from the redis-trib.rb Ruby script to manage the cluster. Now the cluster manager is inside redis-cli itself. Try redis-cli --cluster help, to get more info. It is faster, does not require any dependency (like Redis...), and we are going to improve it more.
5) Sorted sets are now like lists! They have pop-style and block operations: ZPOPMAX ZPOPMIN BZPOPMAX BZPOPMIN. They are documented: redis.io/commands/bzpop… and redis.io/commands/zpopm…
6) The active defragmentation feature now works better, even if currently cannot be used with Streams (just a matter of the next RC release...). It was improved in many ways, but is currently disabled because we upgraded to Jemalloc 5.1, and we need to re-write the hooks.
7) HyperLogLogs now use a better and faster algorithm. Now they are implemented in terms of this paper: arxiv.org/abs/1702.0128 (the PR was submitted by the author of the paper in person :-D
8) Better memory reporting capabilities. We have now different favors of memory usage and fragmentation reporting that use the allocator internals, and are used both for INFO output and for MEMORY DOCTOR.
9) Now many commands that have sub commands, have a special HELP command! So instead of going nuts remembering, you just type "OBJECT HELP" for instance, and it shows you the subcommands available. Usability is important and programmers do not deserve terrible APIs.
10) Many other random things: speed improvements, Jemalloc was updated, a number of fixes (many backported into Redis 4). And so forth.
Thanks to @RedisLabs for sponsoring my work.
A special thank you to the following contributors.

Fabio Nicotra
Soloestoy
Itamar Haber
Oran Agra
Dvir Volk
dejun.xdj
Guy Benoish
Charsyam
Otmar Ertl
Jan-Erik Rediger
Spinlock

(Ordered by number of commits).

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with ANTIREZ

ANTIREZ Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @antirez

Jul 17, 2021
Technologies like Copilot tell us two things:
1. How good AI is getting at reproducing and, in some way, abstracting patterns from a big corpus. GPT-3 and Copilot are stunning examples.
2. How much repetitive and empty of creativity most programming tasks are.
Because while spectacular, Copilot has nothing to do with solving tasks; it's just producing obvious boilerplate stuff for us: things that humans need to write following certain API specifications, googling for the missing bits from StackOverflow pages.
Like certain manual jobs, that should be executed by humans only for fun, and not 8 hours per 5 days to pay the bills (and I hope they will get fully automated soon), something similar is happening with programming.
Read 5 tweets
Apr 15, 2021
I wonder if the product team of Twitter agrees against the edit button, or there is a single (or just a few), very powerful person, saying "no" while others disagree (even just in their thoughts).
I say this because the public reasons against the edit button are weak. Tweets only need to be editable for a short time, they can be marked as edited, and if edited after the first like/reply an edit history could be attached, and shown if you click the "edited" label.
Moreover the idea that you can just read carefully your own tweets and avoid any error disregards all we know about how humans work. We tend to filter things we are sure are correct. I would be surprised if the "no edit" position is very widespread inside the Twitter HQ.
Read 5 tweets
Mar 11, 2021
Folks, do you remember that I'm writing a sci-fi novel? Well, I'm almost done, in Italian. I did many (-many-) reviews, and I'm ready to work with an editor. However now I'm fully convinced that I can't translate it myself, I spent already an incredible amount of energy on it.
So I need an English (mother tongue) translator that translates sci-fi from Italian to English. I already tried to contact two different translators, I've the feeling that sci-fi is not something most translators are comfortable working with. Moreover I've *zero* credibility.
This is my first novel and I'm a computer programmer, many good translators only translate things of writers that have a story of successful novels, or they interface with a publisher (that I don't want to have, I'll self-publish my book).
Read 4 tweets
Mar 10, 2020
A few words about the coronavirus for my dear followers. I'm in Italy right now and we are closed in our homes. We reached a very critical situation because, when it was time to act, the measures required looked too restrictive from the POV of western countries culture.
Unfortunately viruses spread regardless of what we think. The only way to stop the infection is to stay at home and to limit the contacts at every cost. The North of Italy has one of the most advanced health care of the world, yet at this point hospitals reached an hard limit.
Don't believe that this is just a flu that is a bit more severe. In Italy 8% of people in intense care units are between 20 and 49 years old. In certain hospitals the ICUs are already too busy and doctors are left having to choose who will survive based on the chances they have.
Read 6 tweets
Nov 16, 2019
In programming there is always one point where the community splits in two, in one side people that appreciate very simple languages, and in the other people that are fascinated with the powerful languages full of abstractions.
In the past it was C vs C++, but now the same pattern applies to more modern languages. One of the reason is probably that languages that look very different give the illusion to be part of a caste of elite programmers that "get" what the others are missing.
However I think that there is a more deep meaning in all this. There are two levels of design in software. One is local: how a given function is written, certain ways you use to express a computation, and so forth. The other is more global.
Read 5 tweets
Oct 16, 2019
I just merged SSL support into Redis unstable. This feature has an interesting story that I want to tell you. It was kinda of a "process" to reach the right solution, or at least a solution that looks a lot better than the alternatives.
Many wanted SSL in the past, however the first very serious effort at providing a concrete pull request that implemented SSL in all the channels, including Replication, Redis Sentinel, Redis Cluster, was from AWS. The work of two smart folks there.
Thanks to this work, we understood that to implement SSL just as a "minimal code change" effort was not going to work. SSL is very different from normal sockets, and has different assumptions, certain things are asynchronous where sockets are synchronous, N bytes may become M.
Read 8 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(