mirror of
https://github.com/SunRed/haste-server.git
synced 2024-12-29 07:20:11 +01:00
Added Redis store support
This commit is contained in:
parent
26c148ff37
commit
a1d5f79708
5 changed files with 83 additions and 4 deletions
34
README.md
34
README.md
|
@ -16,6 +16,40 @@ Major design objectives:
|
|||
3. `npm install`
|
||||
4. `npm start`
|
||||
|
||||
## Storage
|
||||
|
||||
## File
|
||||
|
||||
To use file storage (the default) change the storage section in `config.js` to something like:
|
||||
|
||||
``` json
|
||||
{
|
||||
"path": "./data",
|
||||
"type": "file"
|
||||
}
|
||||
```
|
||||
|
||||
Where `path` represents where you want the files stored
|
||||
|
||||
### Redis
|
||||
|
||||
To use redis storage you must install the redis package in npm globall using
|
||||
|
||||
`npm install redis --global`
|
||||
|
||||
Once you've done that, your config section should look like:
|
||||
|
||||
``` json
|
||||
{
|
||||
"type": "redis",
|
||||
"host": "localhost",
|
||||
"port": 6379,
|
||||
"db": 2
|
||||
}
|
||||
```
|
||||
|
||||
All of which are optional except `type` with very logical default values.
|
||||
|
||||
## Author
|
||||
|
||||
John Crepezzi <john.crepezzi@gmail.com>
|
||||
|
|
6
TODO
6
TODO
|
@ -1,5 +1,9 @@
|
|||
cache headers for static assets
|
||||
redis storing
|
||||
chng how file def is written
|
||||
make redis work without in package
|
||||
make redis connection into a separate method
|
||||
|
||||
tests
|
||||
|
||||
# shared version only
|
||||
twitter posting with ^T
|
||||
|
|
|
@ -14,8 +14,10 @@
|
|||
],
|
||||
|
||||
"storage": {
|
||||
"type": "file",
|
||||
"path": "./data"
|
||||
"type": "redis",
|
||||
"host": "localhost",
|
||||
"port": 6379,
|
||||
"db": 2
|
||||
}
|
||||
|
||||
}
|
||||
|
|
38
lib/redis_document_store.js
Normal file
38
lib/redis_document_store.js
Normal file
|
@ -0,0 +1,38 @@
|
|||
var redis = require('redis');
|
||||
var winston = require('winston');
|
||||
var hashlib = require('hashlib');
|
||||
|
||||
// TODO move to a different method (conn)
|
||||
var RedisDocumentStore = function(options) {
|
||||
if (!RedisDocumentStore.client) {
|
||||
var host = options.host || '127.0.0.1';
|
||||
var port = options.port || 6379;
|
||||
var index = options.db || 0;
|
||||
RedisDocumentStore.client = redis.createClient(port, host);
|
||||
RedisDocumentStore.client.select(index, function(err, reply) {
|
||||
if (err) {
|
||||
winston.error('error connecting to redis index ' + index, { error: error.message });
|
||||
process.exit(1);
|
||||
}
|
||||
else {
|
||||
winston.info('connected to redis on ' + host + ':' + port + '/' + index);
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
// Save file in a key
|
||||
RedisDocumentStore.prototype.set = function(key, data, callback) {
|
||||
RedisDocumentStore.client.set(key, data, function(err, reply) {
|
||||
callback(!err);
|
||||
});
|
||||
};
|
||||
|
||||
// Get a file from a key
|
||||
RedisDocumentStore.prototype.get = function(key, callback) {
|
||||
RedisDocumentStore.client.get(key, function(err, reply) {
|
||||
callback(err ? false : reply);
|
||||
});
|
||||
};
|
||||
|
||||
module.exports = RedisDocumentStore;
|
|
@ -19,7 +19,8 @@
|
|||
|
||||
"dependencies": {
|
||||
"winston": "*",
|
||||
"hashlib": "*"
|
||||
"hashlib": "*",
|
||||
"package": "*"
|
||||
},
|
||||
|
||||
"devDependencies": {
|
||||
|
|
Loading…
Reference in a new issue