David Leadbeater > App-redisp > App::redisp

Download:
App-redisp-0.13.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Module Version: 0.13   Source  

NAME ^

App::redisp - Perl redis shell

VERSION ^

version 0.13

SYNOPSIS ^

 $ redisp
 localhost> keys "foo*"
 "foobar", "food"
 localhost> set foobarbaz, 12
 "OK"

 # Or in perl style
 localhost> $foobar
 10

 # Actually these next ones aren't implemented yet...
 localhost> .encoding utf-8
 localhost> .server xxx
 localhost> .reconnect
 localhost> .output json

DESCRIPTION ^

Redis and Perl share similar data types, therefore I thought it would be useful to have a Redis shell interface that appears to behave as Perl. This is a Perl Read-Eval-Print Loop (REPL) that happens to understand Redis.

The use of Redis aims to be transparent, you just use a variable like $foo and it will be read or saved to Redis. For a temporary variable that is only visible to Perl use my $foo.

USAGE ^

 redisp [--help] [--server=host] [--port=port] [--encoding=encoding]
   [--serialize=serializer]

OPTIONS ^

LIMITATIONS ^

The main noticable thing is common key naming styles in Redis such as "foo-bar" or "foo:bar" require quoting on the Perl side. For example to access a top level key of foo:bar you need to access ${"foo:bar"}.

In Redis a key has one type; in Perl a glob reference may have HASH, ARRAY, SCALAR, etc values. This application makes Perl match the Redis behaviour, it's invalid to use more than one type at a particular name. The error will be: ERR Operation against a key holding the wrong kind of value.

Due to the way this works it's impossible to use symbolic references (e.g. ${"foo$a"}), your code needs to reference top level keys it uses at compile time.

EXAMPLES ^

Yet more examples, because the synopsis section was getting sort of big.

info is a command that returns a hash, so to grab something like the version you can do this:

 localhost> info
 [returns big hash]

 localhost> info->{redis_version}
 "2.1.10"

Due to some commands clashing with Perl keywords you can't use them as functions. Keys and exists is something notable for this.

  localhost> keys "foo*" # Special cased

  localhost> sort keys "foo*" # doesn't work as you'd expect

  localhost> sort redis qw(keys foo*) # does what you wanted

Pub/sub can be used, but you need to write some code yourself: XXX: This doesn't work at all yet!

 localhost> subscribe foo, sub { print "@_\n" }
 [prints messages, ^C stops, but you'll need to unsubscribe manually]
 localhost> unsubscribe foo

BUGS ^

This goes quite close to the internals of Perl so there may be issues with constructs I haven't thought of. Raise bugs via http://rt.cpan.org.

The output produced by:

  ANYEVENT_REDIS_DEBUG=1 DEBUG=1 redisp

for your issue would be helpful.

SEE ALSO ^

Tie::Redis, http://redis.io/commands, Eval::WithLexicals, Term::ReadLine::Perl (I recommend you install this or ::Gnu).

AUTHOR ^

David Leadbeater <dgl@dgl.cx>

COPYRIGHT AND LICENSE ^

This software is copyright (c) 2011 by David Leadbeater.

This program is free software. It comes without any warranty, to the extent permitted by applicable law. You can redistribute it and/or modify it under the terms of the Beer-ware license revision 42.

syntax highlighting: