This repository is a very simple implementation of abstract-leveldown
using ioredis
(redis) as the data store.
I couldn't get redis-down
to function properly and figured the abstract-leveldown
API was simple enough to re-implement.
const { IORedisDown } = require('@etomon/ioredisdown');
const Redis = require('ioredis');
const levelup = require('levelup');
// A connection string
let db = levelup(new IORedisDown('blah'), 'redis://localhost:6379');
// As an object containing settings
db = levelup(new IORedisDown('blah'), {
host: '127.0.0.1',
port: 6379
});
// Pass your own redis
const redis = new Redis(6379, '127.0.0.1');
db = levelup(new IORedisDown('blah'), {
redis: redis
});
The options (second) parameter in levelup
gets passed directly to the constructor of IORedis.
If an array is passed it will spread the array elements across the constructor.
So db = levelup(new IORedisDown('blah'), [ 6379, '127.0.0.1' ])
and
const redis = new Redis(6379, '127.0.0.1');
db = levelup(new IORedisDown('blah'), {
redis: redis
});
Are equivalent
I didn't have time to figure out how encoding-down
works so encoding/decoding is currently handled by [`@etomon/encode-tools](https://github.com/EtomonUSA/encode-tools).
Crucially, data will be serialized as msgpack
by default. Keys will be serialized as JSON, then hashed using xxhash3.
The second argument of the IORedisDown
constructor can be used to configure the EncodeTools
instance.
At present, the hashing algorithm must be xxhash3
.
By default, these are the settings
const DEFAULT_ENCODING_OPTIONS: EncodingOptions = {
// If Buffers need to be encoded as string they will be encoded as base64
binaryEncoding: BinaryEncoding.base64,
// * This is ignored, must be xxhash3 *
hashAlgorithm: HashAlgorithm.xxhash3,
// By default will store data as msgpack
serializationFormat: SerializationFormat.msgpack,
// Not used
uniqueIdFormat: IDFormat.uuidv4String
}
@etomon/ioredisdown
is written in TypeScript, to build run npm run build
.
Documentation can be found here.
Etomon IORedisDown is licensed under the GNU LGPL-3.0, a copy of which can be found at https://www.gnu.org/licenses/.
Generated using TypeDoc