Storage Service

Storage Service is a caching layer that persists data about your users. This helps ensure that variation assignment for any user is always consistent even if you update the traffic split or other campaign settings.

You can implement a storage service that reads and saves user-campaign data mapping in backend services such as Redis, Memcache, MongoDB, or any other storage service.

How to Implement Storage Service

Storage Service is optional while instantiating the VWO SDK. However, to ensure sticky variation assignments, we recommend implementing it.

Usage

import com.vwo.packages.storage.Connector;
import java.util.HashMap;
import java.util.Map;
public class StorageTest extends Connector {

private final Map<String, Map<String, Object>> storage = new HashMap<>();

  @Override
  public void set(Map<String, Object> data) throws Exception {
      String key = data.get("featureKey") + "_" + data.get("user");

      // Create a map to store the data
      Map<String, Object> value = new HashMap<>();
      value.put("rolloutKey", data.get("rolloutKey"));
      value.put("rolloutVariationId", data.get("rolloutVariationId"));
      value.put("experimentKey", data.get("experimentKey"));
      value.put("experimentVariationId", data.get("experimentVariationId"));

      // Store the value in the storage
      storage.put(key, value);
  }

  @Override
  public Object get(String featureKey, String userId) throws Exception {
      String key = featureKey + "_" + userId;

      // Check if the key exists in the storage
      if (storage.containsKey(key)) {
          return storage.get(key);
      }
      return null;
  }
}

Storage Service should expose two methods: get and set. VWO uses these methods whenever there is a need to read or write from the storage service.

Method NameParamsDescriptionReturns
getkeyRetrieve stored dataReturns a matching user-campaign data mapping corresponding to the key passed
setkey, dataStore user-campaign-variation data mapping.null

What’s Next