Introduction
Tile38 is an open-source in-memory geospatial database and geofencing server. It stores geographic objects (points, polygons, GeoJSON) and provides real-time spatial queries, geofencing with webhook notifications, and a Redis-compatible protocol. It is designed for IoT fleet tracking, logistics, and location-aware applications.
What Tile38 Does
- Stores and indexes geographic points, lines, polygons, and GeoJSON objects
- Runs spatial queries (NEARBY, WITHIN, INTERSECTS) with sub-millisecond latency
- Triggers real-time geofence events via webhooks, gRPC, MQTT, or Kafka
- Provides roaming geofences that move with tracked objects
- Persists data to disk with append-only file durability
Architecture Overview
Tile38 uses an R-tree spatial index for fast range and proximity queries. It speaks the Redis RESP protocol, so any Redis client can connect. Data is stored in memory for speed and persisted to an append-only file on disk. Geofences are evaluated continuously as objects move, with events dispatched to configured endpoints in real time.
Self-Hosting & Configuration
- Run via Docker or download a single binary for Linux, macOS, or Windows
- Data directory defaults to ./data; configure with --dir flag
- Set authentication with CONFIG SET requirepass
- Configure max memory and eviction policies via CONFIG commands
- Expose port 9851 (default) and optionally enable TLS
Key Features
- Sub-millisecond spatial queries on millions of objects
- Real-time geofencing with enter, exit, and cross notifications
- Roaming geofences that track proximity between moving objects
- GeoJSON, WKT, and simple point/bounds input formats
- Redis-compatible protocol for easy client integration in any language
Comparison with Similar Tools
- PostGIS — Full SQL power with PostgreSQL; Tile38 is faster for real-time geofencing
- Redis (with geospatial) — Basic geo commands only; Tile38 adds polygons and geofences
- MongoDB Geospatial — Document-oriented; Tile38 is purpose-built for spatial workloads
- H3 (Uber) — Hexagonal indexing library; Tile38 is a full database server
FAQ
Q: How many objects can Tile38 handle? A: It comfortably handles millions of objects in memory with sub-ms query times.
Q: Does it support clustering? A: Tile38 supports leader-follower replication but not automatic sharding.
Q: Can I use it with existing Redis clients? A: Yes, it speaks the Redis RESP protocol natively.
Q: How does geofencing work? A: You create a fence query with SETHOOK; Tile38 continuously evaluates object movements and sends webhook notifications on enter/exit events.