Two posts this week, learnings and details on the redis SF meetup

This commit is contained in:
R. Tyler Croy 2011-06-05 12:08:07 -07:00
parent da3fe5d9d3
commit 803fe4b22a
2 changed files with 104 additions and 0 deletions

View File

@ -0,0 +1,89 @@
---
layout: post
title: SF Redis Meetup Recap
tags:
- redis
- meetups
---
I went to the [impromptu redis SF
meetup](http://groups.google.com/group/redis-db/browse_thread/thread/b56c0c3819aaf922#)
yesterday at Epicenter Cafe in SoMA and I figured I'd write up some notes about
it after the fact.
I'm very thankful that [Andy McCurdy](http://twitter.com/andymccurdy) (of
redis-py fame) got the ball rolling on this since [Pieter
Noordhuis](http://twitter.com/pnoordhuis) (of hiredis and redis fame) is only
in town for a few more days.
Apologies if some of my recollections are incorrect, I typed this up the day
after.
----
The meetup was predictably sized at about 10-12 folks at it's peak, with a lot
of the discussion centered around hammering [Pieter](https://github.com/pietern)
with questions.
For those who don't know, Pieter Noordhuis is 50% of the full-time engineering
staff working on Redis for VMWare (Salvatore being the other 50%).
The two main themes of discussion were: clustering and the scripting branch.
### Clustering
Probably not going to work well if you have very large keys or very large
values. Better suited for smallish keys/values which can be easily migrated
from one node to another. Migrations will block a request for the
in-transit key and wait for an acknowledgement from the destination node,
if the migration succeeds then the request will respond with an "ASK {host}"
styled response, otherwise it will return the value (IIRC) if it could not
be migrated properly.
Some additional commands and responses will be added to the protocol to
enable better client support for clustering. It is hoped that clients will
do a sufficiently good job of abstracting clustering out so it's more
opaque to API consumers.
The Redis team is trying to avoid solving too many perceived problems with
clustering before it's released and they can see how people are using it in
the real world.
### Scripting Branch
If you're not familiar, there's a branch of Redis right now that has a lot
of folks excited as it adds Lua scripting support to Redis by way of the
`EVAL` and `EVALSHA` commands. Allowing you to send tiny scripts to the server
and have it atomically evaluate the script (think: classic check-and-set
problem).
The way things are going, there's certainly seems to enough interest to
warrant merging the scripting branch into a more mainline branch (2.4 or
something).
They intend on exposing `EVALSHA` as part of the API, allowing you to invoke
a previously registered/evaluated script by the SHA1 of the script.
Scripting and clustering are orthogonal, while the regular key-space is
clusterable the hashes containing the Lua code objects and the script SHA1s
is completely separate. Any server you want to evaluate a script on, must
be informed of that script itself.
While you can disable certain commands in the Redis config, I expressed my
anxiety about letting clients willy-nilly call `EVAL` as the script
evaluation will block the event loop in Redis until the script is finished.
Pieter seemed interested in a potential configuration of allowing EVALSHA
while disallowing `EVAL`, allowing deployment (see: puppet) to pre-register
"approved" scripts in some form or fashion to be appropriately (and safely)
called.
----
Overall the night was interesting, Pieter and Salvatore are both really bright
guys who approach these problems very thoughtfully and carefully (yet not
paralized by uncertainty).
Redis has a bright future.
----

View File

@ -0,0 +1,15 @@
---
layout: post
title: Learnings Week 22 2011
tags:
- learnings
---
This past week, despite moving apartments across Berkeley on Wednesday, I
managed to learn some interesting things here and there.
* The [GNU/diff](http://www.gnu.org/software/diffutils/) utility can display full side-by-side diffs with the use of the `-y` flag. In conjunction with `colordiff` (e.g. `diff -y file.c file.c.orig | colordiff`) this can provide pretty helpful, console-based, side-by-side comparisons
* [oprofile](http://oprofile.sf.net) is both useful and a pain in the ass, at the same time
* [Sasparalla](http://en.wikipedia.org/wiki/Sarsaparilla), the drink, is very similar to root beer. Sasparilla the plant, is a trailing vine native to central america. I always thought The Stranger character in The Big Lebowski was ordering some kind of liquor, not a root beer.
* In [Jenkins](http://jenkins-ci.org), using a combinations of promoted builds, "keep build forever" and build descriptions is a great way to denote: which build is ready to be deployed (promoted builds) and which builds *have* been deployed (keep forever, edit description).
* The authentic German bakery "[Octoberfeast](http://www.yelp.com/biz/octoberfeast-bakery-berkeley-3)" in downtown Berkeley sells loafs of bread, but no brötchen. The hunt continues.