En aquest tema, aprendrem com crear mòduls personalitzats per Redis. Els mòduls de Redis permeten ampliar la funcionalitat del servidor Redis amb noves comandes i tipus de dades. Això és especialment útil quan necessitem funcionalitats específiques que no estan disponibles en Redis per defecte.
- Introducció als Mòduls de Redis
Què és un Mòdul de Redis?
Un mòdul de Redis és una biblioteca que s'integra amb el servidor Redis per proporcionar funcionalitats addicionals. Els mòduls poden afegir noves comandes, nous tipus de dades i altres funcionalitats avançades.
Avantatges dels Mòduls de Redis
- Extensibilitat: Permeten afegir funcionalitats específiques sense esperar que s'incloguin en el nucli de Redis.
- Rendiment: Els mòduls s'executen dins del mateix procés que Redis, oferint un rendiment molt alt.
- Flexibilitat: Poden ser desenvolupats en C o C++ i altres llenguatges compatibles amb C.
- Configuració de l'Entorn de Desenvolupament
Requisits Previs
- Redis 4.0 o superior.
- Compilador C (com
gcc
). - Coneixements bàsics de programació en C.
Instal·lació de Redis
Si encara no tens Redis instal·lat, pots seguir les instruccions del Mòdul 1 per instal·lar-lo.
Estructura del Projecte
Organitza el teu projecte de mòdul de Redis de la següent manera:
- Creant el Primer Mòdul
Exemple de Codi: my_module.c
#include "redismodule.h" // Funció que s'executa quan es crida la comanda "hello" int HelloCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) { if (argc != 2) { return RedisModule_WrongArity(ctx); } RedisModule_ReplyWithSimpleString(ctx, "Hello, Redis!"); return REDISMODULE_OK; } // Funció d'inicialització del mòdul int RedisModule_OnLoad(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) { if (RedisModule_Init(ctx, "mymodule", 1, REDISMODULE_APIVER_1) == REDISMODULE_ERR) { return REDISMODULE_ERR; } if (RedisModule_CreateCommand(ctx, "mymodule.hello", HelloCommand, "readonly", 1, 1, 1) == REDISMODULE_ERR) { return REDISMODULE_ERR; } return REDISMODULE_OK; }
Explicació del Codi
- Incloure la Biblioteca de Redis:
#include "redismodule.h"
- Funció de la Comanda:
HelloCommand
és la funció que s'executa quan es crida la comandamymodule.hello
. - Funció d'Inicialització:
RedisModule_OnLoad
és la funció que inicialitza el mòdul. Registra el mòdul i la comandamymodule.hello
.
Makefile
REDIS_MODULE_NAME = mymodule REDIS_MODULE_SO = $(REDIS_MODULE_NAME).so REDIS_MODULE_SRC = src/my_module.c all: gcc -fPIC -shared -o $(REDIS_MODULE_SO) $(REDIS_MODULE_SRC) -I/path/to/redis/src clean: rm -f $(REDIS_MODULE_SO)
Compilació del Mòdul
- Carregant i Provant el Mòdul
Carregar el Mòdul en Redis
Provar la Nova Comanda
- Exercicis Pràctics
Exercici 1: Afegir una Nova Comanda
Crea una nova comanda mymodule.goodbye
que retorni el missatge "Goodbye, Redis!".
Solució
int GoodbyeCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) { if (argc != 2) { return RedisModule_WrongArity(ctx); } RedisModule_ReplyWithSimpleString(ctx, "Goodbye, Redis!"); return REDISMODULE_OK; } int RedisModule_OnLoad(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) { if (RedisModule_Init(ctx, "mymodule", 1, REDISMODULE_APIVER_1) == REDISMODULE_ERR) { return REDISMODULE_ERR; } if (RedisModule_CreateCommand(ctx, "mymodule.hello", HelloCommand, "readonly", 1, 1, 1) == REDISMODULE_ERR) { return REDISMODULE_ERR; } if (RedisModule_CreateCommand(ctx, "mymodule.goodbye", GoodbyeCommand, "readonly", 1, 1, 1) == REDISMODULE_ERR) { return REDISMODULE_ERR; } return REDISMODULE_OK; }
Exercici 2: Afegir un Paràmetre a la Comanda
Modifica la comanda mymodule.hello
per acceptar un paràmetre i retornar "Hello, [paràmetre]!".
Solució
int HelloCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) { if (argc != 2) { return RedisModule_WrongArity(ctx); } size_t len; const char *name = RedisModule_StringPtrLen(argv[1], &len); RedisModule_ReplyWithFormat(ctx, "Hello, %s!", name); return REDISMODULE_OK; }
- Conclusió
En aquest tema, hem après com crear mòduls personalitzats per Redis. Hem vist com configurar l'entorn de desenvolupament, escriure el codi del mòdul, compilar-lo i carregar-lo en Redis. També hem practicat amb exercicis per reforçar els conceptes apresos. Amb aquests coneixements, pots començar a crear mòduls personalitzats per adaptar Redis a les teves necessitats específiques.
Curs de Redis
Mòdul 1: Introducció a Redis
Mòdul 2: Estructures de Dades de Redis
Mòdul 3: Comandes i Operacions de Redis
Mòdul 4: Persistència de Redis
- Instantànies (RDB)
- Fitxers Només de Afegeix (AOF)
- Configuració de la Persistència
- Còpia de Seguretat i Restauració
Mòdul 5: Seguretat de Redis
Mòdul 6: Optimització del Rendiment de Redis
Mòdul 7: Clúster i Alta Disponibilitat de Redis
Mòdul 8: Mòduls i Extensions de Redis
- Introducció als Mòduls de Redis
- Mòduls Populars de Redis
- Creant Mòduls Personalitzats
- Utilitzant Redis amb Altres Tecnologies