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.

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.