So-net無料ブログ作成

インフラエンジニアのためのkumofs情報 順序配列 [kumofs]

kumofsで順番を持った集合を作る方法として、前回はリストを紹介しましたが
キー値に規則を作ることで、もうすこし簡単に順番を持つ配列を作ることができます。
まず、CASを使ってカウンターを準備します。
mem.atomic_set('counter') {|val|
  val = val.to_i + 1
  caunter_val = val
}

カウンターには予め、値として0を入れておきます。
そして、集合の各要素であるvalueを保存する場合に、並べたい順番にカウンターから
値をひとつづつ受け取りキーを作成し、キーと要素のペアを作っていきます。
キーを作るときは、集合の識別のためのラベルを付けておくと良いでしょう。
mem.set('label' << caunter_val.to_s, value, 0, true)

例)
「キー値」「要素」
「label0」「value1」
「label1」「value2」
「label2」「value3」

「label,100」「value101」
ちょうど、キー値が配列の要素番号の指定にあたり、配列要素の数がカウンターの値に
なるイメージです。
要素を順番に読み出したいときには、ラベルに番号を付けていくだけで出来ます。
counter = mem.get('counter',true).to_i
for i in 0 .. counter do
  value[i] = mem.get('label' << i.to_s,true)
end

リストとは違い、ラベルさえ知っていれば集合中のどの要素にも1回のアクセスで値が
取得できます。
またkumofs本来のアクセス速度をそのまま生かした高速なアクセスが実現できます。

辞書検索のような特定のキー値でのアクセスを維持したまま順番を付けたい場合は
前回紹介したようなリスト形式、キー値にはこだわらず、順番を持った要素に高速に
アクセスしたい場合は順序配列形式というように使い分けをすると良いでしょう。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。