Aerospike API操作Map

qifengdao發表於2019-03-01
 

Aerospike是一個高效能、可擴充套件、可靠性強的NoSQL解決方案,支援RAM和SSD作為儲存介質,並專門針對SSD特殊優化,廣泛應用於實時競價等實時計算領域。官方保證99%的操作在1ms內完成,並提供叢集資料自動Rebalance、叢集感知客戶端等功能,且支援超大規模資料集(100T級別)的儲存。

作為KV儲存,Aerospike提供多種資料型別,其操作方式和Redis比較類似。除基礎功能之外,Aerospike還支援AMC控制檯、API等多種監控方式,有叢集QPS、健康度、負載等多項監控指標,對運維比較友好。支援叢集內資料的自動Rebalance,和Redis叢集方案相比,維護成本下降不少,高負載下AS比redis略快,參考https://www.infoq.cn/article/2015%2F02%2Faerospikedb-redis-aws-nosql

Aerospike一般操作可以通過官方渠道獲取到例子資訊

https://github.com/aerospike/aerospike-client-java/tree/master/examples

下面是官方沒有的map操作例子:

 

import com.aerospike.client.AerospikeClient;
import com.aerospike.client.Key;
import com.aerospike.client.Record;
import com.aerospike.client.Value;
import com.aerospike.client.cdt.MapOperation;
import com.aerospike.client.cdt.MapPolicy;
import com.aerospike.client.cdt.MapReturnType;
import com.aerospike.client.policy.WritePolicy;

import java.util.List;

public class AerospikeApiTest {

    public static  void main(String args[]){
        final AerospikeClient client = new AerospikeClient("127.0.0.1", 3000);

        WritePolicy policy = new WritePolicy();
        policy.socketTimeout = 50;  // 50 millisecond timeout.
        Key key =  new Key("test", "demoset", "mapkey");

        //map中寫入1個值
        Record record = client.operate(policy, key, MapOperation.put(MapPolicy.Default, "mapbin", Value.get("key4"), Value.get("val1")));

        //map中一次寫入2個值
        record = client.operate(policy, key, MapOperation.put(MapPolicy.Default, "mapbin", Value.get("key3"), Value.get("val1")),
                MapOperation.put(MapPolicy.Default, "mapbin", Value.get("key4"), Value.get("val1")));

        //刪除map中的key,並查詢map的長度
        List list = client.operate(policy, key, MapOperation.removeByKey("mapbin", Value.get("key4"), MapReturnType.COUNT),
                MapOperation.size("mapbin")).getList("mapbin");
        System.out.println(list.get(1));
        //如果為空map刪除資料
        if (((Long)list.get(1)) == 0) {
            client.delete(policy, key);
        }
    }
}

上面程式碼在高併發下,刪除可能會有問題,如刪除某個key時,正好有對key的寫操作,就會造成誤刪,歡迎留言更嚴謹的刪除方案。

覺得不錯掃頭像,關注我的公眾號,獲取更多大資料技能

相關文章