p5-RedisDB / RedisDB

Perl extension to access Redis
22 stars 11 forks source link

Compatibility with Redis/Redis::Fast #24

Closed vsespb closed 9 years ago

vsespb commented 9 years ago

Let's imagine one want to migrate from R::F to RedisDB.

I see now commands which returns multiple results have differnt API: like mget returns ARRAYREF, while R::F returns a list.

Pipelining has different API.

What else could be a problem?

trinitum commented 9 years ago

I'm not exactly sure about differences, but you right about data structures. RedisDB maps structures differently, particularly lists are returned as arrayrefs to avoid any ambiguity regarding result.

Pipelining is also different, you don't have to make any synchronous calls periodically to get results, each time you send a new command, package checks if there are replies to previous ones. Also, errors are passed to callbacks as RedisDB::Error objects, not sure how it is done in R::F.

For some commands results are additionally post-processed, namely: info, client_list, cluster_info, cluster_nodes, role, shutdown.

trinitum commented 9 years ago

And if you are interested in cluster support, note that RedisDB::Cluster does not support pipelining, as it is rather tricky to implement for cluster.

vsespb commented 9 years ago

Ok, thanks!