Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/vectorface/redis-migrate

CLI tool to create and run redis key migrations
https://github.com/vectorface/redis-migrate

Last synced: 3 months ago
JSON representation

CLI tool to create and run redis key migrations

Awesome Lists containing this project

README

        

redis-migrate
=============

CLI tool to create and run redis key migrations.

[![Build Status](https://travis-ci.org/Vectorface/redis-migrate.png)](https://travis-ci.org/Vectorface/redis-migrate)

## Overview

A migration file consists of a single exported object with two keys: `up` and
`down`. The current release is designed to be backwards compatible with Redis
2.6 and 2.4. As such, it uses `KEYS`, which is blocking and should not be used
on a production db when dealing with any significant number of keys. Future
releases will allow for non-blocking operation using `SCAN`, `HSCAN`, etc.

## Installation

It can be installed via `npm` using:

```
npm install -g redis-migrate
```

## Usage

```
Usage: redis-migrate [up|down|create]

Options:

-h, --help output usage information
-V, --version output the version number
```

## Example Migration File

``` javascript
exports.up = [
{
cmd: 'moveKeysToHashFields',
src: {key: /(app:user:\d+):address/},
dst: {key: '$1:properties', field: 'address'}
},
{
cmd: 'renameKeys',
src: {key: /(app:post:\d+):lastModifiedTimestamp/},
dst: {key: '$1:lastModified'}
}
];

exports.down = [
{
cmd: 'moveHashFieldsToKeys',
src: {key: /(app:user:\d+):properties/, field: 'address'},
dst: {key: '$1:address'}
},
{
cmd: 'renameKeys',
src: {key: /(app:post:\d+):lastModified/},
dst: {key: '$1:lastModifiedTimestamp'}
}
];
```