mirror of
				https://bitbucket.org/s_l_teichmann/mtsatellite
				synced 2025-11-03 17:45:25 +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.
 |