@@ -24,11 +24,15 @@ redisctl enterprise module list -o json
2424## Get Module Details
2525
2626``` bash
27- # Get details for a specific module
27+ # Get details for a specific module by UID
2828redisctl enterprise module get < module_uid>
2929
30+ # Get module by name (case-insensitive)
31+ redisctl enterprise module get --name search
32+ redisctl enterprise module get --name ReJSON
33+
3034# Get specific fields
31- redisctl enterprise module get < module_uid > -o json | jq ' {name, version, capabilities }'
35+ redisctl enterprise module get --name search -o json -q ' {name: module_name , version: semantic_version }'
3236```
3337
3438## Upload Module
@@ -92,6 +96,11 @@ redisctl enterprise module list -o json | jq '.[] | select(.module_name == "sear
9296To enable modules when creating a database:
9397
9498``` bash
99+ # Using the --module flag (recommended)
100+ redisctl enterprise database create --name my-search-db --memory 1073741824 \
101+ --module search --module ReJSON
102+
103+ # Using JSON data
95104redisctl enterprise database create --data ' {
96105 "name": "my-search-db",
97106 "memory_size": 1073741824,
@@ -112,3 +121,154 @@ redisctl enterprise database update-modules <db_id> --data '{
112121 ]
113122}'
114123```
124+
125+ ## Custom Module Development (RE8+)
126+
127+ Redis Enterprise 8.x uses a new native module packaging format. The following tools help with custom module development and packaging.
128+
129+ ### Validate Module Metadata
130+
131+ Validate a ` module.json ` file against the Redis Enterprise schema before packaging:
132+
133+ ``` bash
134+ # Basic validation
135+ redisctl enterprise module validate ./module.json
136+
137+ # Example output:
138+ # Validating: ./module.json
139+ #
140+ # v module_name: jmespath
141+ # v version: 300
142+ # v semantic_version: 0.3.0
143+ # v min_redis_version: 7.0.0
144+ # v compatible_redis_version: 8.0.0
145+ # v commands: 33 commands defined
146+ # v capabilities: 7 capabilities
147+ #
148+ # v Module metadata is valid for Redis Enterprise 8.x
149+
150+ # Strict mode (require all recommended fields)
151+ redisctl enterprise module validate ./module.json --strict
152+ ```
153+
154+ ** Validation checks:**
155+ - Required fields: ` module_name `
156+ - Recommended fields: ` version ` , ` semantic_version ` , ` min_redis_version `
157+ - Important for RE8: ` compatible_redis_version ` (required for upgrade tests)
158+ - Commands and capabilities definitions
159+
160+ ### Inspect Module Package
161+
162+ Inspect a packaged module zip file to verify its structure and contents:
163+
164+ ``` bash
165+ # Basic inspection
166+ redisctl enterprise module inspect ./redis-jmespath.Linux-x86_64.0.3.0.zip
167+
168+ # Example output:
169+ # Package: redis-jmespath.Linux-x86_64.0.3.0.zip
170+ #
171+ # Files:
172+ # module.json (6.2 KB)
173+ # jmespath.so (6.5 MB)
174+ #
175+ # Metadata:
176+ # Name: jmespath
177+ # Display: JMESPath
178+ # Version: 0.3.0 (300)
179+ # Min Redis: 7.0.0
180+ # Compatible: 8.0.0
181+ # Commands: 33
182+ # Capabilities: types, replica_of, backup_restore, ...
183+ #
184+ # v Package structure is valid for RE8 user_defined_modules
185+
186+ # Show all commands
187+ redisctl enterprise module inspect ./module.zip --full
188+ ```
189+
190+ ** Structure validation:**
191+ - Files must be at zip root (no subdirectories)
192+ - Must contain ` module.json `
193+ - Must contain ` .so ` module binary
194+
195+ ### Package Module
196+
197+ Create an RE8-compatible module zip package:
198+
199+ ``` bash
200+ # Basic packaging
201+ redisctl enterprise module package \
202+ --module ./libredis_jmespath.so \
203+ --metadata ./module.json \
204+ --out ./dist/redis-jmespath.Linux-x86_64.0.3.0.zip
205+
206+ # Package with validation
207+ redisctl enterprise module package \
208+ --module ./module.so \
209+ --metadata ./module.json \
210+ --out ./package.zip \
211+ --validate
212+ ```
213+
214+ ### module.json Format
215+
216+ The ` module.json ` file describes your module for Redis Enterprise:
217+
218+ ``` json
219+ {
220+ "module_name" : " jmespath" ,
221+ "display_name" : " JMESPath" ,
222+ "version" : 300 ,
223+ "semantic_version" : " 0.3.0" ,
224+ "min_redis_version" : " 7.0.0" ,
225+ "compatible_redis_version" : " 8.0.0" ,
226+ "author" : " Your Name" ,
227+ "description" : " JMESPath query support for Redis" ,
228+ "license" : " MIT" ,
229+ "command_line_args" : " " ,
230+ "capabilities" : [
231+ " types" ,
232+ " replica_of" ,
233+ " clustering" ,
234+ " backup_restore"
235+ ],
236+ "commands" : [
237+ {
238+ "command_name" : " JMESPATH.QUERY" ,
239+ "command_arity" : -3 ,
240+ "first_key" : 1 ,
241+ "last_key" : 1 ,
242+ "step" : 1 ,
243+ "flags" : [" readonly" ]
244+ }
245+ ]
246+ }
247+ ```
248+
249+ ** Key fields:**
250+ - ` version ` : Numeric version (e.g., 300 for 0.3.0)
251+ - ` semantic_version ` : Human-readable version string
252+ - ` compatible_redis_version ` : Maximum Redis version tested (important for RE8 upgrades)
253+ - ` commands ` : Full command metadata including arity, key positions, and flags
254+
255+ ### Deploying Custom Modules
256+
257+ Custom modules can be deployed via:
258+
259+ 1 . ** Bootstrap** - Using ` user_defined_modules ` in cluster init:
260+ ``` bash
261+ redisctl enterprise workflow init-cluster \
262+ --name my-cluster \
263+ 264+ --password secret \
265+ --data ' {
266+ "user_defined_modules": [
267+ {"url": "https://host/redis-jmespath.zip"}
268+ ]
269+ }'
270+ ```
271+
272+ 2 . ** Admin UI** - Upload via Settings > Redis Modules
273+
274+ 3 . ** Kubernetes** - Using ` userDefinedModules ` in RedisEnterpriseCluster spec
0 commit comments