Redis Labs 最近宣布了一个新的Redis扩展方式:Redis Module System
Redis 现在可以通过 Lua 脚本进行扩展,但 Module 提供了更加底层的 Redis 访问方式
Module System 的意义重大,将汇集大量开发者的智慧,让 Redis 的用户能够使用到更多强大的功能
Module 示例
Redis Lab 发布了一些 module,例如
01
图片处理模块 graphicsmagick
GraphicsMagick 是图片处理的瑞士军刀,提供了高效强大的工具集
graphicsmagick 模块提供了在 Redis 内进行图片处理的功能,如
图片缩放命令
redis> GRAPHICSMAGICK.THUMBNAIL mypic 64 64
OK
把名为mypic的key所对应的图片缩放到宽64高64
图片旋转命令
redis> GRAPHICSMAGICK.ROTATE mypic 90
OK
把名为mypic的key所对应的图片旋转90度
02
字符串扩展命令 rxstrings
这个模块是对 Redis 字符串命令的扩展,如
CHECKAND
检查某key的值和指定的字符串是否相同,然后对其执行一个命令
redis> SET mykey “Hello World”
OK
redis> CHECKAND mykey “Hello World” SET mykey “Hello Redis Modules”
OK
redis> GET mykey
“Hello Redis Modules”
检查 mykey 的值是否为 “Hello World”,如果相同,执行后面的 SET 命令
PREPEND
在key值的前面添加字符串
redis> SET mykey ” World”
OK
redis> PREPEND mykey Hello
(integer) 11
redis> GET mykey
“Hello World”
把 "Hello" 添加到 mykey 的值的前面,形成一个新的字符串
Module 的开发和使用
Redis 的当前版本还不支持模块系统,据说会在4.0中发布,现在正在分支版本中测试,到时会提供模块的支持接口
开发者可以用C语言开发模块,然后做为动态库加载到 Redis
使用模块
(1)编译模块代码,得到模块文件
(2)加载到 Redis
可以在启动时加载,--loadmodule /path/to/module.so,或者在配置文件中指定
Redis 希望创建一个生态系统,可以让大家创建并分享模块,开发者可以把模块发布到 GitHub 供其他人使用,Redis 官方也会挑选和发布高质量的模块,让所有人根据自己的需求选择最合适的模块