私は既存のredisデータをaerospikeにモデル化しようとしています。 1つの要件は、特定のユーザーのすべてのキーを取得できることです。たとえば、<id>:<timestamp>
などのキーがあるとします。さて、ある時点では、id
のすべてのキーを取得する必要があります。<id>:<timestamp>
キーの値を取得するには、エアロスペクティブな名前空間のすべてのキーのインデックス検索が必要です。これが可能かどうかを知りたいのですが、そうであればどうしますか。ありがとう。Aerospikeで特定の接頭辞で始まるすべてのキーを検索することはできますか?
3
A
答えて
5
キープレフィックスのクエリを直接行うことはできません。サーバーはキーダイジェストのみを格納するので、キー値(あなたの場合は<id>:<timestamp>
)は索引付けされません。
これをモデル化する方法は、別のレコードビンとしてキーの一部を<id>
に追加することです。次に、そのビンを索引付けし、そのビンで照会を実行することができます。ここで
は簡単な例である - それは、エアロスパイクのNode.jsクライアントを使用していますが、コンセプトは関係なく、あなたが好むものをクライアントと同じではありません。
const Aerospike = require('aerospike')
const ns = 'test'
const set = 'demo'
// connect to cluster and create index on 'id' bin
var client = Aerospike.client()
client.connect((err) => {
assertOk(err, 'connecting to cluster')
createIndex('id', 'id_idx', Aerospike.indexDataType.STRING,() => {
// create a new sample record
var userId = 'user1'
var ts = new Date().getTime()
var key = new Aerospike.Key(ns, set, `${userId}:${ts}`)
var record = { id: userId, value: Math.random() }
client.put(key, record, (err) => {
assertOk(err, 'write record')
// query for records with matching 'id'
var query = client.query(ns, set)
query.where(Aerospike.filter.equal('id', userId))
var stream = query.foreach()
stream.on('error', (error) => assertOk(error, 'executing query'))
stream.on('end',() => client.close())
stream.on('data', (record, meta, key) => {
console.log(record)
})
})
})
})
function assertOk (err, message) {
if (err) {
console.error('ERROR: %s - %s', message, err)
process.quit()
}
}
function createIndex (bin, name, datatype, callback) {
var index = {
ns: ns,
set: set,
bin: bin,
index: name,
datatype: datatype
}
client.createIndex(index, (err, job) => {
assertOk(err, 'creating index')
job.waitUntilDone(100, (err) => {
assertOk(err, 'creating index')
callback()
})
})
}
は、この情報がお役に立てば幸い!
関連する問題
- 1. 接頭辞でMemcachedキーを取得/検索することはできますか?
- 2. 接頭辞で始まるすべての要素のCSSセレクタ
- 3. 特定の接頭辞で始まるすべてのクラス名をJavaScript/jQueryで取得する
- 4. なぜcssオブジェクトは接頭辞o-で始まり、コンポーネントはc-で始まるべきですか?
- 5. 特定の接頭辞で始まらないすべての行を削除する
- 6. 接頭辞で始まるmysqlテーブルを表示しますか?
- 7. jQueryの - エキスのクラス名があることは、接頭辞「で始まる」
- 8. jestはmat-(新しいmd-接頭辞)で始まるすべてのディレクティブを角で返します
- 9. ディレクトリ内の特定のディレクトリを検索することはできますか?
- 10. 特定の接頭辞で始まるディレクトリ内のすべてのディレクトリを見つけるにはどうすればよいですか?
- 11. Couchbaseで接頭辞を持つすべてのキーを抽出する方法
- 12. キーがHiveの接頭辞で始まる特定の行を選択するにはどうすればよいですか?
- 13. Logstashで接頭辞付きのフィールドをすべて削除できません
- 14. 接頭辞が "。"の型名のType.GetType検索ルールとは何ですか?
- 15. リスト/ファイル中の特定の接頭辞/接尾辞で始まり/終わるすべての単語を見つけよう
- 16. 特定のシナリオのエンティティフレームワークエンティティに接頭辞を付けますか?
- 17. 検索用語の接頭辞であるインデックス内の用語を検索してください(または!)
- 18. MySQLは、同じ接頭辞で始まるが、アンダースコアで始まる部分だけを削除するすべての文字列を更新します。
- 19. mod_rewriteはカスタムファイル名の接頭辞を無視できますか?
- 20. ファイル内の特定の文字列で始まる特定の行を検索して置き換えます。
- 21. 特定のキーを使用して辞書にデータを保存することはできますか
- 22. Powershellを使用して接頭辞で始まるSolrコアを削除する
- 23. 接頭辞検索のSolrスキーマ、howto?
- 24. 接頭辞で始まるすべての表に列を追加する手順
- 25. 注文したSTLコンテナ内の接頭辞で始まるすべての文字列(非ASCII文字以外)を検索します
- 26. 接頭辞で始まるファイルのファイルの内容をマージする
- 27. 辞書からキー名で始まるファイルを検索しようとしています
- 28. 接頭辞をx ++のxmlですべての接頭辞に追加する方法
- 29. 接頭辞付きすべてのビューをリンクする
- 30. Pythonで正規表現を使って特定の行を検索することはできますか?