Using Redis SORT and GET to save on roundtrips
trentstrong.com
Using Redis SORT and GET to save on roundtrips
1–9 of 9 posts
Re: Using Redis SORT and GET to save on roundtrips
#2It is interesting that you can ask for single elements of an hash, like in: GET object:*->field
With 2.6 and scripting this kind of optimizations will become the rule.
Re: Using Redis SORT and GET to save on roundtrips
#3no need to sort by a non existing key, all you need is that the BY pattern does not contain an asterisk, so it is constant, that means all the elements have the same value for sorting, and Redis knows that it can skip it and use the List natural ordering. It is interesting that you can ask for single elements of an hash, like in: GET object:*->field With 2.6 and scripting this kind of optimizations will become the ru…
Excited for 2.6 and scripting. Has much changed on the scripting side since the 2.2-scripting branch?
Re: Using Redis SORT and GET to save on roundtrips
#4Re: Using Redis SORT and GET to save on roundtrips
#5Learned so much today!
Re: Using Redis SORT and GET to save on roundtrips
#6Re: Using Redis SORT and GET to save on roundtrips
#7no need to sort by a non existing key, all you need is that the BY pattern does not contain an asterisk, so it is constant, that means all the elements have the same value for sorting, and Redis knows that it can skip it and use the List natural ordering. It is interesting that you can ask for single elements of an hash, like in: GET object:*->field With 2.6 and scripting this kind of optimizations will become the ru…
Re: Using Redis SORT and GET to save on roundtrips
#8this assume you're connecting to one redis server and not running a cluster of redis servers, or have tagged the keys being requested in a cluster of redis servers
There is a trick, (used by some memcached client as far as I know), to do that without multiplexing, that is, usually you should do something like this:
send GET foo to socket1
send GET bar to socket2
replies = some_form_of_multiplexing(socket1,socket2)
Instead since we can observe that usually the round trip time between the peers at socket1 and socket2 are similar, we can do: send GET foo socket1
send GET bar socket2
reply1 = read(socket1)
reply2 = read(socket2)
This makes the implementation simpler without making the performances so much worse.So a good Redis client for a sharded environment should be able to do something like this:
replies = parallel_queries(["GET","foo"],["GET","bar"],["INCR zap"])
Trying to send the queries to all the servers in parallel and returning the replies ASAP, and in the right order of course.Re: Using Redis SORT and GET to save on roundtrips
#9this assume you're connecting to one redis server and not running a cluster of redis servers, or have tagged the keys being requested in a cluster of redis servers
When you are connected to multiple servers the best thing is to have a client that is able to parallelize requests against multiple servers. There is a trick, (used by some memcached client as far as I know), to do that without multiplexing, that is, usually you should do something like this: send GET foo to socket1 send GET bar to socket2 replies = some_form_of_multiplexing(socket1,socket2) Instead since we can obse…