# Redis Loadable Modules System

DevFeed: [Redis Loadable Modules System](<https://devfeed.tech/articles/redis-loadable-modules-system-20597.md>)

Original publisher: [Read original article](<http://antirez.com/news/106>)

Published: 2016-05-10T17:02:55Z

Content type: opinion

Language: en

Sources: [Antirez](<https://devfeed.tech/sources/antirez.md>)

Topics: [Redis](<https://devfeed.tech/topics/redis.md>), [modules](<https://devfeed.tech/topics/modules.md>), [Scripting](<https://devfeed.tech/topics/scripting.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [systems](<https://devfeed.tech/topics/systems.md>)

Tags: [lua](<https://devfeed.tech/tags/lua.md>), [modules](<https://devfeed.tech/tags/modules.md>), [programming](<https://devfeed.tech/tags/programming.md>), [redis](<https://devfeed.tech/tags/redis.md>), [scripting](<https://devfeed.tech/tags/scripting.md>), [systems](<https://devfeed.tech/tags/systems.md>)

## AI overview

The article discusses Redis loadable modules, explaining why the feature was delayed and outlining concerns about API incompatibility, system stability, ecosystem quality, and dependence on Redis internals. It contrasts modules with Lua scripting and describes a planned discussion of Redis's future roadmap.

## Source excerpt

It was a matter of time but it eventually happened. In the Redis 1.0 release notes, 7 years ago, I mentioned that one of the interesting features for the future was "loadable modules". I was really interested in such a feature back then, but over the years I became more and more skeptic about the idea of adding loadable modules in Redis. And probably for good reasons. Modules can be the most interesting feature of a system and the most problematic one at the same time: API incompatibilities between versions, low quality modules crashing the system, a lack of identity of a system that is extendible are possible problems. SO, for years, I managed to avoided adding modules to Redis, and Lua scripting was a good tool in order to delay their addition. At the same time, years of experience with scripting, demonstrated that scripting is a way to "compose" existing features, but not a way to extend the capabilities of a system towards use cases it was not designed to cover. Previous attempts at modules also showed that one of the main pain points about mixing Redis and loadable modules is the way modules are bound with the Redis core. In may ways Redis resembles more a programming language than a database. To extend Redis properly, the module needs to have access to the internal API of the system. Directly exporting the Redis core functions to modules creates huge problems: the module starts to depend on the internal details of Redis. If the Redis core evolves, the module needs to be rewritten. This creates either a fragile modules ecosystem or stops the evolution of the Redis core. Redis internals can't stop to evolve, nor the modules developers can keep modifying the module in order to stay updated with the internals (something that happened in certain popular systems in the past, with poor results). With all this lessons in mind, I was leaving Catania to fly to Tel Aviv, to have a meeting at Redis Labs to talk about the roadmap for the future months. One of the topics of