使用 Node.js 的 gRPC 在 Redis 中创建数据 (Create)

需要设定文件、服务器程序和客户端程序这三个。

设置文件

redis_create.proto文件
与此相同
使用Python的gRPC创建Redis数据(创建)

服务器程序

#! /usr/bin/node
// ---------------------------------------------------------------
//  redis_create_server.js
//
//                  Feb/09/2020
// ---------------------------------------------------------------
var PROTO_PATH = 'redis_create.proto'

var grpc = require('grpc')

var protoLoader = require('@grpc/proto-loader')
var packageDefinition = protoLoader.loadSync(
    PROTO_PATH,
    {keepCase: true,
     longs: String,
     enums: String,
     defaults: true,
     oneofs: true
    });
var redis_create_proto = grpc.loadPackageDefinition(packageDefinition).redis_create

// ---------------------------------------------------------------
function redis_create_proc(key_in,str_json)
{
    const redis = require ("redis")
    const client = redis.createClient (6379,'localhost')

    client.on("error", function (err)
        {
        console.log("Redis connection error to "
            + client.host + ":" + client.port + " - " + err)
        })

    client.set(key_in, str_json, redis.print)

    client.quit()
}

// ---------------------------------------------------------------
function RedisCreate(call, callback) {
    console.error("*** RedisCreate ***")
    const key_in = call.request.key
    const str_json = call.request.str_json
    const str_out = 'RedisCreate ' + key_in
    console.error(str_json)
    redis_create_proc(key_in,str_json)
    callback(null, {key: call.request.key});
}

// ---------------------------------------------------------------
function main() {
    var server = new grpc.Server()
    server.addService(redis_create_proto.Greeter.service, {RedisCreate: RedisCreate })
    server.bind('0.0.0.0:50051', grpc.ServerCredentials.createInsecure())
    server.start()
}

// ---------------------------------------------------------------
main()
// ---------------------------------------------------------------

客户端程序

#! /usr/bin/node
// ---------------------------------------------------------------
//  redis_create_client.js
//
//                      Feb/09/2020
// ---------------------------------------------------------------
var PROTO_PATH = 'redis_create.proto'

var grpc = require('grpc');
var protoLoader = require('@grpc/proto-loader');
var packageDefinition = protoLoader.loadSync(
    PROTO_PATH,
    {keepCase: true,
     longs: String,
     enums: String,
     defaults: true,
     oneofs: true
    })
var redis_create_proto = grpc.loadPackageDefinition(packageDefinition).redis_create


// ---------------------------------------------------------------
function main() {
    var client = new redis_create_proto.Greeter('localhost:50051',
                                       grpc.credentials.createInsecure())

    var key_in = process.argv[2]
    var unit_aa = {}
    unit_aa.name = process.argv[3]
    unit_aa.population = process.argv[4]
    unit_aa.date_mod = process.argv[5]
    const str_json = JSON.stringify (unit_aa)
    console.error(unit_aa.name)
    client.RedisCreate({key: key_in,str_json: str_json},
        function(err, response) {
    console.log('key:', response.key)
    })

}

// ---------------------------------------------------------------
main()
// ---------------------------------------------------------------

启动服务器程序

export NODE_PATH=/usr/lib/node_modules
./redis_create_server.js

执行客户端程序

$ export NODE_PATH=/usr/lib/node_modules 
$ ./redis_create_client.js t0931 那須烏山 98735 2005-6-12
那須烏山
key: t0931
广告
将在 10 秒后关闭
bannerAds