mirror of
				https://bitbucket.org/s_l_teichmann/mtsatellite
				synced 2025-10-31 08:05:27 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			84 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.8 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/mtredisalize/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/mtredisalize
 | |
|   $ cd mtredisalize/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.
 | |
| 
 | |
| This is Free Software under the terms of the MIT license. See LICENSE file for details.
 | |
| (c) 2014 by Sascha L. Teichmann
 |