設定ファイル、サーバープログラム、クライアントプログラムの3つが必要です。
設定ファイル
redis_read.proto
こちらと同じ
Python の gRPC で Redis のデータを読む (Read)
サーバープログラム
redis_read_server.js
#! /usr/bin/node
// ---------------------------------------------------------------// redis_read_server.js//// Feb/08/2020// ---------------------------------------------------------------varPROTO_PATH='redis_read.proto'vargrpc=require('grpc')varprotoLoader=require('@grpc/proto-loader')varpackageDefinition=protoLoader.loadSync(PROTO_PATH,{keepCase:true,longs:String,enums:String,defaults:true,oneofs:true});varredis_read_proto=grpc.loadPackageDefinition(packageDefinition).redis_read// ---------------------------------------------------------------functionredis_read_proc(key_in,callback){constredis=require("redis")constclient=redis.createClient(6379,'localhost')client.get(key_in,function(err,reply){if(err){console.log("Get error: "+err)}elseif(reply!=null){conststr_json=replyconstdata=JSON.parse(str_json)varout_str=key_in+"\t"out_str+=data.name+"\t"out_str+=data.population+"\t"out_str+=data.date_modconsole.log(out_str)callback(null,{str_json:str_json})}client.quit()})}// ---------------------------------------------------------------functionRedisRead(call,callback){console.error("*** RedisDelete ***")constkey_in=call.request.keyconststr_out='RedisDelete '+key_inconsole.error(str_out)redis_read_proc(key_in,callback)// callback(null, {key: key_in})}// ---------------------------------------------------------------functionmain(){varserver=newgrpc.Server()server.addService(redis_read_proto.Greeter.service,{RedisRead:RedisRead})server.bind('0.0.0.0:50051',grpc.ServerCredentials.createInsecure())server.start()}// ---------------------------------------------------------------main()// ---------------------------------------------------------------
クライアントプログラム
redis_read_client.js
#! /usr/bin/node
// ---------------------------------------------------------------// redis_read_client.js//// Feb/08/2020// ---------------------------------------------------------------varPROTO_PATH='redis_read.proto'vargrpc=require('grpc');varprotoLoader=require('@grpc/proto-loader');varpackageDefinition=protoLoader.loadSync(PROTO_PATH,{keepCase:true,longs:String,enums:String,defaults:true,oneofs:true});varredis_read_proto=grpc.loadPackageDefinition(packageDefinition).redis_read// ---------------------------------------------------------------functionmain(){varclient=newredis_read_proto.Greeter('localhost:50051',grpc.credentials.createInsecure())varkey_in=process.argv[2]client.RedisRead({key:key_in},function(err,response){// console.log('str_json:', response.str_json)constdata=JSON.parse(response.str_json)varout_str=data.name+"\t"out_str+=data.population+"\t"out_str+=data.date_modconsole.log(out_str)})}// ---------------------------------------------------------------main()// ---------------------------------------------------------------
サーバープログラムの起動
export NODE_PATH=/usr/lib/node_modules
./redis_read_server.js
クライアントプログラムの実行
$ export NODE_PATH=/usr/lib/node_modules
$ ./redis_read_client.js t1852
敦賀 41295 2003-5-10