Is Redlock safe? (1 hour of undistributed reading +/-[clock skew])
This is Salvatore Sanfilippo @antirez‘s rebuttal to Martin Kleppmann @martinkl‘s “How to do distributed locking”, which is, in turn, a critique of the former’s distributed lock algorithm for Redis, a.k.a. Redlock. Distributed systems shoptalk always generates a stir and Martin compiled a summary that at https://storify.com/martinkl/redlock-discussion, which includes this gem by Julia Evans @b0rk‘s “TIL: clock skew exists”.
An offshoot of the item above in which Salvatore Sanfilippo @antirez is inspired to use Redis (or any other data store that satisfies two conditions), a majority and a variation on known algorithms for solving the problem of generating monotonically growing IDs.
An important addition to the upcoming GEO API that enables pagination and set operations on the search’s results.
I’ve put together a few GEO-related helper scripts to test some ideas. This is still very much WIP (the next version is almost a complete rewrite) so any suggestions/feature/etc is welcome 🙂 BTW, Documentation Driven Development is awesome.
Adrien Moreau/de Montgon @adrienmo did an outstanding job with this article because it explains how to elegantly solve a seemingly complex problem in a way that that’s similar to how winning the jackpot should you feel: reduce the data’s footprint, minimize network traffic and prevent race conditions. And use Lua 🙂
If you’re using Redis as a local cache – that is, on the same server as your application – you should really move to using UDS (Unix Domain Socket) instead of the network stack, as demonstrated by Olav A. Mjelde @olavamjelde‘s numbers.
OH Ben Nadel @BenNadel > Every time I interact with #Redis, it just makes me happy. Something about the simplicity of the API – it’s joyous.
RMA is a command line interface that examines your data in vitro and reports memory-related statistics. The idea is awesome, and Nikolay Bondarenko @misterionkell certainly knows his way around Redis’ internals so the information reported is accurate as long as RMA updated with upcoming versions. I certainly feel there’s a need for such tools, but since memory analysis is tightly coupled with Redis’ implementation this functionality should make its way to the core… and it will 🙂
Anonymous pampa (or maybe 9eb5?) wrote a small CLI “multitool” for dumping, loading and prettifying Redis data.
A trenchant review of Redis’ transactions from Mark Paluch @mp911de. ‘Nuff said.
A lineup of bash scripts that use named pipes for a producer-consumer pattern, and then some, from Stefan Petrea @wsdookadr.
@getsentry‘s approach to data management is an example polyglot-ism: immutable BLOBs are stored in Riak whereas variables are in Postgres. At scale, however, the data comes in at high rates and while an RDBMS is a marvelous tool for querying it, locking overheads quickly become staggering… which is just where Redis was put to use (4 years ago!) as a high speed data ingestion buffer as told by David Cramer. FQ: “Only time will tell how much longer until we face new constraints, but we’re confident that choosing Redis early on was the right choice”
I love how open @StackOverflow are with their operations and the semi-regular updates that the team gives are always a delight. The architecture/infrastructure that it takes for keeping it up is amazing consider its lean size (small is better) and the requests that it handles (big is better) – by Nick Craver @Nick_Craver.
A mouthful title with mouthwatering content from Ryan Wallner @RyanWallner via @ClusterHQ, that is in fact an easy-to-follow (with pictures!) guide for building and operating a highly available master-slave Redis pair.
Kyle @stockholmux tops the score (or more accurately, makes it a score) with a vigintennial post. This time, in the interest of science, Kyle refutes his own hypothesis that serving static content (i.e. files) from Redis using
GETRANGE-based pseudo streaming would be faster than disk.
Ryan Walker on how to build Straw – a platform for near real-time search of a streaming text data. Besides code, the platform consists of Apache Kafka, Apache Storm, Elasticsearch, Lucene’s Luwak & Redis for the stream’s processing.
“The easiest way to get started with Redis on the Mac – Just download, drag to the applications folder, and double-click”… sounds easy enough. By José Padilla @jpadilla_.
Tyler Treat @tyler_treat revisits his earlier benchmarking effort and polishes it using his lessons learned since. Besides asking “what about Disque?”, this iterative process leads one to an obvious question: how do you benchmark a benchmark?
OH Javier Lozano @jglozano >
Step 1: Create table called “Redis”Step
2: Store “data” in “Redis”Step
3: Get immediate approval to use “Redis” in enterprise
#winning <- Brilliant & you get to use SEQUEL!