keydb 提供的ModJS 模块

keydb 提供了ModJS 模块,可以支持js 开发redis 扩展,很方便,同时也支持了简单的npm 模块能力(但是也有不少限制)
以下是一个参考使用

环境准备

  • docker-compose
    注意npm 模块需要到redis 的work 目录(具体如下docker 的是/data)
 
version: '3'
services:
  keydb:
     image: eqalpha/modjs
     command:  keydb-server  /etc/keydb/keydb.conf  --loadmodule  /usr/lib/keydb/modules/modjs.so  /mymodules/dist/index.js
     volumes:
      - ./scripts:/scripts 
      - ./mymodules:/mymodules
      - ./mymodules/node_modules:/data/node_modules
     ports:
       - 6379:6379
  • 支持基于typescript 的模块开发(基于了tsup)
    src/index.ts, 引用了lodash 进行合并处理
 
declare  const keydb: any;
declare  const redis: any;
var _ = require("lodash")
 
function concat(key1, key2) {
    var str1 = redis.call('get', key1);
    var str2 = redis.call('get', key2);
    return _.camelCase(str1 + " " + str2)
}
keydb.register(concat);

tsup.config.js

import { defineConfig } from 'tsup'
 
export default defineConfig({
  entry: ['src/index.ts'],
  splitting: false,
  sourcemap: true,
  clean: true,
  minify: false,
  format:["cjs","esm","iife"]
})

运行效果

  • 启动
docker-compose up -d
  • 效果

说明

keydb 提供的ModJS 模块很不错,但是目前缺少维护,内部基于了v8 引擎,对于npm 支持的限制参考官方文档说明

参考资料

https://github.com/Snapchat/KeyDB
https://github.com/Snapchat/ModJS
https://tsup.egoist.dev/

posted on 2023-04-22 23:03  荣锋亮  阅读(43)  评论(0编辑  收藏  举报

导航