🚀 Redis ORM Cache for Odoo
One shared ORM cache for every Odoo worker and every instance — cut PostgreSQL load, keep multi-worker deployments consistent.
⚡ Why you need this
In production Odoo deployments running multiple workers — and especially in load-balanced clusters — every worker keeps its own ORM cache in local memory. These caches do not talk to each other: data that one worker has just loaded still has to be loaded again by the others, and when data changes, the other workers' caches are not aware of the change until they expire on their own. The more workers and servers you add, the more duplicate cache data sits in RAM and the more repeated queries reach PostgreSQL. This module replaces each worker's local cache with a single shared cache on Redis, so every worker and every instance reads from and writes to the same source.
🎯 What you get
🔄 A consistent view of the data
Every worker — on the same server or across a cluster — reads from and writes to the same cache. When data changes, all workers see the change at the same time, regardless of which worker handles the next request.
📊 A lighter load on your PostgreSQL
Once one worker loads a piece of data, every other worker can reuse it. Your database stops repeating the same work for each worker, which means less CPU pressure, fewer open connections, and more headroom for the queries that really matter.
📈 Scaling that actually pays off
Add more workers or more application servers behind your load balancer without paying the usual "duplicate cache" tax. Each new process joins the same shared cache, so growing your infrastructure makes the system faster — not just bigger.
🛡️ Peace of mind when deploying
If your Redis server is down at the moment Odoo starts, Odoo simply continues with its standard in-memory cache and logs a warning — your business is not blocked. You can adopt the module without making Redis a new single point of failure on day one.
🧩 Zero changes to your existing modules
Standard, custom, and third-party modules keep working exactly as before. You do not rewrite anything, you do not call a new API — just configure once and the whole ORM benefits.
⏱️ Up and running in minutes
Add four lines to your odoo.conf, restart, and you are done. No code changes, no migrations, no maintenance jobs to babysit. Actual gains depend on your workload, but the setup cost is the same for everyone: minimal.
👥 Who benefits most
Production servers with multiple workers
Any Odoo server running with two or more workers — the recommended setup for production. You get cache consistency from day one.
Load-balanced clusters
Teams running several Odoo instances behind a load balancer can finally have a single, shared cache layer instead of N isolated ones.
Busy installations
Sites serving many concurrent users where repeated database queries have become a visible bottleneck or a cost concern.
🛠️ Installation
1️⃣ Install the Redis Python client
On every Odoo server:
pip install redis
2️⃣ Have a Redis server available
If you do not already have one, here are common ways to install Redis:
🐧 Ubuntu / Debian
sudo apt update
sudo apt install redis-server
sudo systemctl enable --now redis-server
🎩 CentOS / RHEL
sudo yum install redis
sudo systemctl enable --now redis
🐳 Docker
docker run -d --name redis-cache -p 6379:6379 redis:latest
3️⃣ Configure Odoo
Place this module in your Odoo addons directory and add the following options to your
odoo.conf:
[options]
# Required: load the module at server startup
server_wide_modules = base,web,ro_cache_redis
# Required: Redis connection URL
redis_cache_url = redis://localhost:6379/0
# Optional: cache entry expiration in seconds (default: 3600)
redis_cache_expiration = 3600
# Optional: prefix for cache keys (default: odoo_orm_cache)
redis_cache_prefix = odoo_orm_cache
📝 Configuration reference
| server_wide_modules |
Required. Must include
ro_cache_redis.
Append it to the default value, for example
base,web,ro_cache_redis.
|
| redis_cache_url |
Required. Redis connection string in the form
redis://[user:password@]host:port/db.
|
| redis_cache_expiration | Optional. Expiration of cache entries in seconds. Default: 3600. |
| redis_cache_prefix |
Optional. Prefix applied to cache keys. Default:
odoo_orm_cache.
Useful when the Redis server is shared with other applications.
|
4️⃣ Restart Odoo
sudo systemctl restart odoo
In the Odoo log you should see a line similar to:
✅ INFO: Connected to Redis cache server at redis://localhost:6379/0
⚠️ Important notes
-
The module must be declared in
server_wide_modules. Installing it only from the Apps menu is not enough. - If Redis is unreachable at startup, Odoo falls back to its default in-memory cache and logs a warning.
- Apply the same configuration to every Odoo worker and every instance that should share the cache.
💡 Features
- ✅ Drop-in replacement for the default Odoo ORM cache — no changes to existing modules.
- ✅ Shared across workers and instances through a single Redis server.
- ✅ Configurable expiration and key prefix via standard Odoo configuration options.
- ✅ Per-database key isolation so multiple databases can safely share the same Redis instance.
- ✅ Automatic fallback to the default in-memory cache if Redis is not available at startup.
- ✅ Disabled during Odoo test runs to keep test isolation intact.
🚀 Ready to speed up your Odoo?
Install Redis ORM Cache today and bring a shared, consistent ORM cache to every worker and every instance.
One-time payment
$39.99 USD
No subscriptions, no recurring fees.
- ✅ Unlimited workers & instances
- ✅ Lifetime updates
- ✅ Email support included
- ✅ Works with standard, custom & third-party modules
Use the "Buy Now" button at the top of this page on the Odoo App Store to purchase.
❓ Frequently Asked Questions
Which Odoo version is supported?
This release is built and tested for Odoo 16 (Community and Enterprise).
Do I need to change my existing modules?
No. The module is a drop-in replacement for the default ORM cache. Standard, custom and third-party modules keep working without any code change.
What happens if my Redis server goes down?
If Redis is unreachable at startup, Odoo automatically falls back to its standard in-memory cache and logs a warning — so Redis never becomes a new single point of failure for your business.
Is the license per server, per worker, or per database?
One purchase covers unlimited workers, instances and databases inside the same organization, under the OPL-1 license terms.
Can multiple Odoo databases share the same Redis server?
Yes. Cache keys are isolated per database, and you can also customize the key prefix to safely share Redis with other applications.
Do updates cost extra?
No. Your purchase includes lifetime updates of this module for Odoo 16.
📋 Changelog
Version 1.0.1
- Stability improvements and minor bug fixes.
- Reduced resource usage in multi-database deployments.
- Smoother cooperation between the local and shared cache layers.
Version 1.0.0
- Initial release.
📞 Support
Get in touch
Questions about installation, configuration, or compatibility?
TechRover · Version 1.0.1 · Licensed under OPL-1
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module