March 2019 – Edition #74
A Newsletter About Everything Redis
Dateline: Air Canada Flight 162, Seat 16F, Somewhere over Winnipeg
One of the biggest things to happen in the Redis world since I last wrote was Redis Day Tel Aviv. I had been a part of the planning and had seen all the really interesting sessions that were on the schedule. I packed my bag on Sunday to make it to the event on Wednesday. In the middle of the Atlantic I started to get cold, followed by warm. My airline food wasn’t sitting well with me.
Fast forward to Wednesday, the day of the event, instead of getting excited for the first talk at Redis Day Tel Aviv, I was lying in a hospital bed in Tel Aviv, IV tube stuck in my arm. A doctor comes up to me and asks, “Did you get a flu shot this year?” I tell him no. He shakes his head with slight judgement. We do an x-ray that reveals I also have pneumonia as a bonus to my case of influenza. If I had only gotten a flu shot, I’d be in a comfortable chair, listening to smart Redis users wax poetic about topics such as cache eviction and module SDKs.
However, my partner in Redis crime, Mr. Loris Cro was fit as an ox and fully in-attendance making up for my disappointing, totally preventable-with-a-vaccine-sickness. Now that I’ve developed an immunity to these wretched diseases, I will be strong like ox for RedisConf in just a few weeks (keep reading for more on that)!
Redis Trivia: Redis open source allows for an individual key that is up to 512mb in length. That’s right, the key not the value. Of course, keys of this length are not rational for any known use-case. Redis Enterprise saves some allocation and allows for a still roomy but more reasonable 64kb length keys. One could say that it inoculates your application from the sickness of multi-megabyte keys.
Redis Day Highlights Special
File under: special-edition, highlights, i-missed-all-this
Editor’s note: This is not comprehensive – just some highlights from the day. Special thanks to Loris Cro for his help on this section.
Antirez: Stuff I Made for Redis v6
Redis 6 will be a big release. Internal improvements to time-to-live percision, better tooling for Redis Cluster, a more full featured modules API are all in the works, but perhaps the most intriguing is Access Control Lists (ACLs). It allows you to control who can execute what commands and over subsets of keys. Think of it like a antibodies that fight off the disease of accidental or malicious execution of FLUSHALL.
Elena Kolevska: What Happens When Redis Runs Out of Memory
Good question, what happens? Does it die? Apparently no. Elena (CTO at Invisible City) gives us a tour of how key eviction strategies evolved in Redis over time. Now, if you were paying attention to Redis Day London in November, you might recall a repeated exposure to this content. It’s good stuff and the more you’re exposed to it, the less likely that you’ll come down with a case of out-of-memory-itis.
Jacob Komarovski & Roi Lipman: Constructing Graph Models from Unstructured Log Data with RedisGraph
Failures in distributed systems spread like viruses in a population according to Jacob from XpoLog. Logs help you diagnose problems but lines of text or tables are not always the best way of reasoning about network-related data. Graphs to the rescue, and since logging requires huge throughput, you definitely need RedisGraph, which uses linear algebra magic to speed queries up as Redis Labs’ Roi later explained.
Tom Yitav: Creating GraphQL API with Redis
Sometimes REST is not enough, in those cases you need GraphQL. This was certainly the case for me getting over this flu. Tom from the Israeli Army Force shows how GraphQL, whose goal is to build APIs where clients can handle data in a more granular way, and fits perfectly in front of Redis.
Keren Ouaknine & Meir Shpilraien: Benchmarking and Running RediSearch Active-Active
You know, going to the doctor is somewhat like being benchmarked. They run various aspects of your feature set through a series of tests and compare them to a known number. Luckily, for RediSearch our very own Keren & Meir presented how CRDTs coupled with RediSearch let you build truly geo-distributed full-text search indexes that support much higher throughput than Elasticsearch. Keren’s benchmarks are available on GitHub and she challenges you to run them yourself if not convinced.
Kfir Zuckerman: How to Scale Up Using Redis
Kfir is currently the VP of R&D at Binah AI, but in his previous job he was dealing with advertisement for podcasts, which are a booming industry, and while requests per second more than doubled every month, the number of Redis instances required to serve those requests remained the same. In this way, Redis is like getting a simple vaccine – you could come in contact with more and more sick people and that one little shot handles it all.
Gavrie Philipson and Loris Cro: WAT? You Can Write Redis Modules in That?!?
Gavrie and Loris (both Redis Labers) share their experiences in writing Redis modules in Rust and Zig respectively. Like no one medicine cures all illness, each language shines in different contexts. The main takeaway: C is not the only option to write a Redis Module.
Andrei Burd: Persistent HA Redis in Chaotic Environments
Andrei, a Senior Infrastructure Engineer at SeatGeek, shows his home-grown solution to have High Availability in Redis without Sentinel, by writing a glue service in Go to let HashiCorp Consul manage failover scenarios. I feel like my body is in failover, tbh.
File under: speedlimit, lua-is-everwhere
Leandro writes about using Nginx, Lua and Redis in a way to provide a neat little rate limiting system. Curiously, this is using the embedded Lua interpreter in Nginx instead of Lua in Redis. I should not rate limit kicking myself for failing to get that Flu shot.
File under: lua-is-everwhere, gaming-in-redis
Saar gives a gaming-centric rundown of how Redis is endemic at Snipe. He makes some solid points about how Redis really fits with gaming. Saar even gives a shoutout to the-module-formerly-known-as-ReJSON (now RedisJSON).
File under: prove-it, snakey-language
I love these type of projects. To prove how not-slow Python is, Bora (partially) re-implements Redis itself in Python and then runs a standard Redis benchmark on it. You’ll have to read on for the results, but don’t make too early of a diagnosis.
File under: optimizations-at-scale, single-threaded-is-my-jam
It’s a not well kept not-secret that Redis is single threaded. This little write-up outlines out to put smaller Redis instances manually on specific cores, thus using a lot more of the potential of the whole machine.
Libraries and Tools
File under: greatname, snakey-language
If you are ever in a meeting and someone suggests building a REST-based service on top of Redis with stuff like identity and access management. Stop the meeting and yell out the word “BRAMBLEWEENY.” After your colleagues stop checking your temperature to see if you are having some sort of fever induced fit, refer them to this neat, out-of-the-box solution that is really mostly a thin wrapper on top of Redis built in Python.
Folks if there was a pull requests river I’m pretty sure it just overflown.
New feature on
@zestyio #cms that I was part of building. I got to use knowledge gained from recent
#redis certification courses to do this 🙂
redis-py 3.2.0 is out! Big connection management improvements. Connections in forked processes now behave well. ConnectionPools now validate the health of Connections they give out. And for those using PubSub, 3.2.0 provides better polling support when waiting for new messages.
We’re pretty heads-down around here as we gear up for our biggest event of the year,
RedisConf19 on April 1-3. On April 1st we have the training day – we have a whole slate of different workshops to attend that are sure to appeal to your inner geek. On the 2nd and 3rd we have the main conference. Of course, I’m biased, but I think you should attend both the training and the conference, but we’d love to have you just for the conference too. Oh, just make sure you’re not like me and get vaccinated before you head over to the conference. Otherwise, you might make an unrequested detour with an IV drip.
This newsletter was produced and distributed by Redis Labs, Inc.
Redis Labs, Inc. 700 E El Camino Real, Suite 250, Mountain View, CA 94041