カテゴリー【Redis、Node.js、JavaScript】
【Redisメモ・6】GEORADIUS_RO関数をNode.jsから呼ぶ
POSTED BY
2022-10-12
2022-10-12



前回、イオンスタイル入間から最寄りの駅を近い順に検索してみたが、それをNode.jsから行ってみます。
Redisクライアント for Node.jsのインストール
npm install redis
イオンスタイル入間を中心に半径10km以内の駅を近い順に20個抽出、というredis文は以下のように書きます。
GEORADIUS_RO ekipos 139.394872 35.822019 10000 m WITHDIST COUNT 20 ASC
これをNode.jsから書いて呼んでみます。
JavaScript | georadius_test.js | GitHub Source |
var performance = require('perf_hooks').performance; var redis = require('redis'); var client = redis.createClient(); var lat = 35.822019; var lng = 139.394872; var rad = 10000; var cnt = 20; var argArray = ['ekipos', lng, lat, rad, 'm', 'WITHDIST', 'ASC']; argArray.push('COUNT', cnt); //COUNT 20 などとするにはこうpushするのがポイント var micro_fr = (Date.now() + performance.now()) * 1000; client.send_command('GEORADIUS_RO', argArray, function (err, reply) { var micro_to = (Date.now() + performance.now()) * 1000; var data = "GEORADIUS_RO ekipos " + lng + " " + lat + " " + rad + " " + "m" + " " + "WITHDIST" + " " + "COUNT" + " " + cnt + " " + "ASC" + "\n" + "関数実行時間 " + (micro_to - micro_fr) + "マイクロ秒\n"; if(reply){ var i,n = reply.length; data += "" + n + "個の駅が該当しました。\n"; for(i = 0; i < n; i++ ){ data += reply[i][1] + "M " + reply[i][0] + "\n"; } } else if(err){ data += err.toString(); } process.stdout.write(data); //出力 client.quit(); //どこかでquitしないとプロセスは終わらない });
実行結果
node georadius_test.js GEORADIUS_RO ekipos 139.394872 35.822019 10000 m WITHDIST COUNT 20 ASC 関数実行時間 12323.75マイクロ秒 20個の駅が該当しました。 1615.3342M 武蔵藤沢-11 2359.4490M 入間市-11 2372.9044M 狭山ヶ丘-11 2588.4687M 稲荷山公園-11 3147.7753M 入曽-11 3586.3663M 仏子-11 4214.0209M 狭山市-11 4566.8008M 小手指-11 4922.6774M 元加治-11 5890.7776M 新所沢-11 6106.7496M 西武球場前-11 6110.3558M 金子-11 6312.6021M 下山口-11 6603.2410M 西所沢-11 6748.9426M 新狭山-11 6908.1355M 航空公園-11 7100.8763M 東飯能-11 7127.8581M 箱根ケ崎-13 7170.6538M 遊園地西-11 7585.8977M 飯能-11
nodeからgeoradius_ro関数を、COUNT 20などの値つきパラメータをつけて呼ぶこの方法がどこにも見つからず苦労しまして、、結局、node-redisの派生ライブラリである「georedis」のソースにやりかたを見つけたので参照しました。
npm install --save georedis node_modules/georedis/lib/interfaceNative.js
↑のソースに、ネイティブ(node-redis)関数でgeoradiusを呼ぶやりかたが記述されている。
お肌をケアする美白化粧品 【メディユース ホワイトフレッシュ ピーリングジェル】

古い角質を除去して、美白肌へ♪
さらに美白作用成分の「水溶性プラセンタ」配合、抗炎症成分の「グリチルリ...【READ MORE】
Android
iPhone/iPad
Flutter
MacOS
Windows
Debian
Ubuntu
CentOS
FreeBSD
RaspberryPI
C/C++
PHP
Java
JavaScript
Node.js
Swift
Python
Amazon/AWS
CORESERVER
Google
仮想通貨
LINE
IBM Watson
Microsoft Azure
Xcode
VMware
MySQL
PostgreSQL
Redis
Groonga
Git/GitHub
Apache
nginx
Postfix
SendGrid
Hackintosh
Hardware
Fate/Grand Order
ウマ娘
将棋
※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
※本記事内容の無断転載を禁じます。
【キーワード検索】
石垣島・沖縄の食材を使ったジュースやお肉をお届け【やえやまファーム】
松村美貴ちゃん愛用!目指せモデル肌!美白クリーム【顔白】
実質月額1,800円~ご利用可能!【Softbank光】
テント生地から生まれたオリジナルトートバッグ【膜-Bak-】
アーティストのライブグッズの高額買取【JUSTY】】手数料無料
創業慶應四年。伝統を守りながら感性を磨き、こだわりの素材で作るお菓子【菓心谷常】
産前産後のママの髪と頭皮を優しくケアするシャンプー&トリートメント【Dolci Bolle】
初心者向けピアノ講座【30日でマスターするピアノ教本3弾セット】
フレシャス【ONEPIECE(ワンピース)】ウォーターサーバー
Wifiルータが格安で1日からレンタル可能! 出張・イベント利用・引っ越しなどの一時的な利用に便利【Wifiレンタルどっとこむ】

松村美貴ちゃん愛用!目指せモデル肌!美白クリーム【顔白】

実質月額1,800円~ご利用可能!【Softbank光】

テント生地から生まれたオリジナルトートバッグ【膜-Bak-】

アーティストのライブグッズの高額買取【JUSTY】】手数料無料

創業慶應四年。伝統を守りながら感性を磨き、こだわりの素材で作るお菓子【菓心谷常】

産前産後のママの髪と頭皮を優しくケアするシャンプー&トリートメント【Dolci Bolle】

初心者向けピアノ講座【30日でマスターするピアノ教本3弾セット】

フレシャス【ONEPIECE(ワンピース)】ウォーターサーバー

Wifiルータが格安で1日からレンタル可能! 出張・イベント利用・引っ越しなどの一時的な利用に便利【Wifiレンタルどっとこむ】

【最近の記事】【全部の記事】
最新版のApache2でCGIが実行できずソースやバイナリが表示される場合bitcoinjs-lib、bip32、bip39を使ってビットコインアドレスを生成する
Cannot read property makeRandom of undefinedと言われた場合
web3.jsとwindow.ethereumでコントラクト関数を引数つきでコールしプロパティを取得する
JavaScriptで外部URLのファイルをダウンロードしてデータを取得する
【MetaMask】window.ethereumのeth_callで任意のコントラクト関数を呼ぶ
window.ethereum.requestに渡すdataフィールドをABIエンコードで作成する
【Solidity】Remix IDEを使用してサーバー不要のコントラクト開発&デバッグ【Ethereum】
【Windows】Googleフォトからダウンロードした動画が音声のみで映像が再生されない場合
PostgreSQLをソースコードからインストールしてsystemdのサービスとして動かす
【人気の記事】【全部の記事】
進研ゼミチャレンジタッチをAndroid端末化する5chブラウザJane Styleの板一覧にゲーム板等が表示されない場合
【Windows10】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法
Windows版Google Driveが使用中と言われアンインストールできない場合
Googleスプレッドシートを編集したら自動で更新日時を入れる
【Javascript】JSON配列内にある特定要素の取得法【Node.js】
Googleファミリーリンクで子供の端末の現在地がエラーで取得できない場合
Ubuntuで固定IPアドレスを使う設定をする
【Anaconda3】指定した仮想環境でJupyter Notebookを動かす
Google ColaboratoryのTensorFlowバージョンを変更する(1.X←→2.X)
【カテゴリーリンク】
Android
iPhone/iPad
Flutter
MacOS
Windows
Debian
Ubuntu
CentOS
FreeBSD
RaspberryPI
C/C++
PHP
Java
JavaScript
Node.js
Swift
Python
Amazon/AWS
CORESERVER
Google
仮想通貨
LINE
IBM Watson
Microsoft Azure
Xcode
VMware
MySQL
PostgreSQL
Redis
Groonga
Git/GitHub
Apache
nginx
Postfix
SendGrid
Hackintosh
Hardware
Fate/Grand Order
ウマ娘
将棋