mirror of
https://bitbucket.org/s_l_teichmann/mtsatellite
synced 2024-11-17 23:58:17 +01:00
81 lines
2.7 KiB
Plaintext
81 lines
2.7 KiB
Plaintext
mtredisalize
|
|
------------
|
|
|
|
A simple server that offers a TCP/Redis interface for LevelDB and SQLite3 based
|
|
Minetest worlds.
|
|
|
|
Disclaimer:
|
|
|
|
!!! This software is very young and not well tested! Use at your own risk.
|
|
!!! If you want to try it out backup your original databases, please!
|
|
|
|
Motivation:
|
|
|
|
The Redis backend is nice if you want to do use the backend for other
|
|
purposes than backing the Minetest server at the same time, e.g. do
|
|
some mapping. On the other hand Redis is - by its nature as an in-memory
|
|
database - quiet a memory hungry beast. This is fine if you have smaller
|
|
worlds or a lot of hardware to throw on it.
|
|
|
|
The other two backends (SQLite3 and LevelDB) are embedded database
|
|
which are hard to work with if you want to access them from another
|
|
process.
|
|
|
|
The idea of mtredisalize is to wrap a server around the embedded databases
|
|
and offer a TCP Redis interface a Minetest server and other
|
|
processes can connect with.
|
|
|
|
Beware! This is _not_ a fully featured Redis server with all of its commands.
|
|
Only the subset of Redis commands is implemented which is needed to run Minetest
|
|
on top of it.
|
|
|
|
To build mtredisalize a Go 1.x (x >= 1) environment is needed. By now
|
|
it is only tested on Ubuntu 14.04/amd64.
|
|
|
|
Obtain:
|
|
|
|
$ go get bitbucket.org/s_l_teichmann/mtsatellite/cmd/mtredisalize
|
|
|
|
Development:
|
|
|
|
$ go get -u github.com/mattn/go-sqlite3
|
|
$ go install github.com/mattn/go-sqlite3
|
|
$ go get -u github.com/jmhodges/levigo
|
|
$ go install github.com/jmhodges/levigo
|
|
$ hg clone https://s_l_teichmann@bitbucket.org/s_l_teichmann/mtsatellite
|
|
$ cd mtsatellite/cmd/mtredisalize
|
|
$ go build
|
|
|
|
Usage:
|
|
|
|
$ mtredisalize [<options>] /path/to/database
|
|
|
|
with options:
|
|
-cache=32: cache size in MB # Cache size for LevelDB
|
|
-driver="leveldb": type of database (leveldb, sqlite)
|
|
-host="": host to bind
|
|
-gc-duration="24h": Duration between forced GCs.
|
|
-port=6379: port to bind
|
|
-version=false: Print version and exit.
|
|
|
|
To use mtredisalize with your particular world you have to modify the
|
|
world.mt of the world.
|
|
|
|
You have to set the backend to redis and redis_address, the redis_port and the
|
|
redis_hash to match the start options of mtredisalize. The hash is ignored by
|
|
mtredisalize but has to be in the world.mt to make Minetest happy.
|
|
redis_port defaults to 6379.
|
|
|
|
gameid = minetest
|
|
backend = redis
|
|
redis_address = localhost
|
|
redis_port = 6380
|
|
redis_hash = IGNORED
|
|
|
|
would e.g. matches:
|
|
|
|
$ mtredisalize --port=6380 --host=localhost ..
|
|
|
|
The mandatory path is the path to the database file: map.sqlite in case
|
|
of SQLite3 and the directory map.db in case of LevelDB right beside the world.mt file.
|