import io.github.spencerpark.ijava.IJava; import io.github.spencerpark.jupyter.kernel.magic.common.Shell; IJava.getKernelInstance().getMagics().registerMagics(Shell.class); %sh asd %%loadFromPOM com.aerospike aerospike-client 5.0.0 org.mongodb mongo-java-driver 3.12.7 import com.aerospike.client.AerospikeClient; import com.aerospike.client.policy.WritePolicy; import com.aerospike.client.Bin; import com.aerospike.client.Key; import com.aerospike.client.Record; import com.aerospike.client.Value; import com.mongodb.client.MongoDatabase; import com.mongodb.client.MongoCollection; import com.mongodb.MongoClient; import com.mongodb.MongoCredential; import org.bson.Document; import com.mongodb.client.model.Filters; import java.util.Set; public class Cache{ //Database Constants public static final String AEROSPIKE_HOST = "0.0.0.0"; public static final String MONGO_HOST = "172.17.0.3"; public static final int AEROSPIKE_PORT = 3000; public static final int MONGO_PORT = 27017; public static final String AEROSPIKE_NAMESPACE = "test"; public static final String AEROSPIKE_SET = "demo"; public static final String MONGO_USER = "sampleUser"; public static final String MONGO_PASSWORD = "password"; public static final String MONGO_DB = "myDb"; public static final String MONGO_COLLECTION = "sampleCollection"; private AerospikeClient client; private MongoClient mongo; private MongoCredential credential; private MongoDatabase database; public Cache() { client = new AerospikeClient(AEROSPIKE_HOST, AEROSPIKE_PORT); mongo = new MongoClient(MONGO_HOST , MONGO_PORT); credential = MongoCredential.createCredential(MONGO_USER, MONGO_DB, MONGO_PASSWORD.toCharArray()); database = mongo.getDatabase(MONGO_DB); } private boolean collectionExists(final String collectionName) { // Check and return if the collection exists in Mongo return database.listCollectionNames() .into(new ArrayList()).contains(collectionName); } public void populateMongoData(String id, String data) { // Populate Mongodb first Document document = new Document(id, data); if (! collectionExists(MONGO_COLLECTION)) { database.createCollection(MONGO_COLLECTION); } else { MongoCollection collection = database.getCollection(MONGO_COLLECTION); collection.insertOne(document); } Key key = new Key(AEROSPIKE_NAMESPACE, AEROSPIKE_SET, id); client.delete(null, key); } public String getData(String id, String data) { // This is just an example code that exhibits a cache fetch for a String id with String data Key key = new Key(AEROSPIKE_NAMESPACE, AEROSPIKE_SET, id); String BIN_NAME = "value"; Record record = client.get(null,key); if ( record == null ) { System.out.println("First Fetch Record does not exist in Aerospike cache"); MongoCollection collection = database.getCollection(MONGO_COLLECTION); Document document = collection.find(Filters.eq(id, data)).first(); //System.out.println("Document " + document.get(id)); String json = document.get(id).toString(); client.put(null, key, new Bin(BIN_NAME,json)); return client.get(null, key).toString(); } else { System.out.println("Data retrieved from Aerospike cache"); return record.toString(); } } } Cache cache = new Cache(); cache.populateMongoData("id", "data"); cache.getData("id", "data");