migrating redis from bloom filter to classic cache
Signed-off-by: chandresh pancholi <chandresh.pancholi@navi.com>
This commit is contained in:
@@ -4,6 +4,7 @@ import com.navi.medici.command.CacheCommands;
|
|||||||
import com.navi.medici.config.RedisConfiguration;
|
import com.navi.medici.config.RedisConfiguration;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.redisson.api.RBloomFilter;
|
import org.redisson.api.RBloomFilter;
|
||||||
|
import org.redisson.api.RMap;
|
||||||
import org.redisson.api.RedissonClient;
|
import org.redisson.api.RedissonClient;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@@ -39,4 +40,16 @@ public class RedisCache implements CacheCommands {
|
|||||||
public Boolean delete(String bucket) {
|
public Boolean delete(String bucket) {
|
||||||
return redissonClient.getBucket(bucket).delete();
|
return redissonClient.getBucket(bucket).delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String get(String map, String key) {
|
||||||
|
RMap<String, String> rm = redissonClient.getMap(map);
|
||||||
|
return rm.get(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void put(String map, String key, String value) {
|
||||||
|
RMap<String, String> rm = redissonClient.getMap(map);
|
||||||
|
rm.put(key, value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,4 +12,8 @@ public interface CacheCommands {
|
|||||||
Boolean contains(RBloomFilter<String> bf, String key);
|
Boolean contains(RBloomFilter<String> bf, String key);
|
||||||
|
|
||||||
Boolean delete(String bucket);
|
Boolean delete(String bucket);
|
||||||
|
|
||||||
|
String get(String map, String key);
|
||||||
|
|
||||||
|
void put(String map, String key, String value);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ public class RedisContainer {
|
|||||||
Config c = new Config();
|
Config c = new Config();
|
||||||
c.useSingleServer()
|
c.useSingleServer()
|
||||||
.setAddress(String.format("redis://%s:%s", redisConfiguration.getRedisHost(), redisConfiguration.getRedisPort()));
|
.setAddress(String.format("redis://%s:%s", redisConfiguration.getRedisHost(), redisConfiguration.getRedisPort()));
|
||||||
|
|
||||||
return Redisson.create(c);
|
return Redisson.create(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -139,16 +139,14 @@ public class DefaultLitmus implements Litmus {
|
|||||||
experimentName, strategy.getName());
|
experimentName, strategy.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
var result = configuredStrategy.isEnabled(
|
return configuredStrategy.isEnabled(
|
||||||
strategy.getParameters(),
|
strategy.getParameters(),
|
||||||
context,
|
context,
|
||||||
strategy.getConstraints());
|
strategy.getConstraints());
|
||||||
this.eventDispatcher.publish(context, litmusExperiment, result);
|
|
||||||
|
|
||||||
return result;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.eventDispatcher.publish(context, litmusExperiment, enabled);
|
||||||
return enabled;
|
return enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ public class DeviceWithIdStrategy implements Strategy {
|
|||||||
var segmentName = parameters.get(SEGMENT);
|
var segmentName = parameters.get(SEGMENT);
|
||||||
var result = experimentFetcher.segmentIdExists(segmentName, litmusContext.getDeviceId().orElse(null));
|
var result = experimentFetcher.segmentIdExists(segmentName, litmusContext.getDeviceId().orElse(null));
|
||||||
|
|
||||||
return result.getData() != null && result.getData();
|
return result.getData() != null && (Boolean) result.getData();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ public class UserWithIdStrategy implements Strategy {
|
|||||||
var segmentName = parameters.get(SEGMENT);
|
var segmentName = parameters.get(SEGMENT);
|
||||||
var result = experimentFetcher.segmentIdExists(segmentName, litmusContext.getUserId().orElse(null));
|
var result = experimentFetcher.segmentIdExists(segmentName, litmusContext.getUserId().orElse(null));
|
||||||
|
|
||||||
return result.getData() != null && result.getData();
|
return result.getData() != null && (Boolean) result.getData();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,14 +31,11 @@ public class SegmentServiceImpl implements SegmentService {
|
|||||||
s3Service.upload(file, destinationBucketName);
|
s3Service.upload(file, destinationBucketName);
|
||||||
List<SegmentCsv> segmentCsvList = csvUtil.csvToList(file);
|
List<SegmentCsv> segmentCsvList = csvUtil.csvToList(file);
|
||||||
|
|
||||||
var bfCreated = cacheCommands.reserveBF(segmentRequest.getName());
|
// var bfCreated = cacheCommands.reserveBF(segmentRequest.getName());
|
||||||
var bloomFilter = cacheCommands.getBf(segmentRequest.getName());
|
// var bloomFilter = cacheCommands.getBf(segmentRequest.getName());
|
||||||
log.info("ingesting data to bloom filter. segment_name: {}", segmentRequest.getName());
|
log.info("ingesting data to bloom filter. segment_name: {}", segmentRequest.getName());
|
||||||
|
|
||||||
segmentCsvList.forEach(segment ->{
|
segmentCsvList.forEach(segment ->cacheCommands.put(segmentRequest.getName(), segment.getSegmentId(), "true"));
|
||||||
var temp = cacheCommands.add(bloomFilter, segment.getSegmentId());
|
|
||||||
log.info("key: {}, result: {}", segment.getSegmentId(), temp);
|
|
||||||
});
|
|
||||||
|
|
||||||
var segmentEntity = SegmentEntity.builder()
|
var segmentEntity = SegmentEntity.builder()
|
||||||
.segmentId(UUID.randomUUID().toString())
|
.segmentId(UUID.randomUUID().toString())
|
||||||
@@ -53,10 +50,10 @@ public class SegmentServiceImpl implements SegmentService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Boolean segmentIdExist(String segmentName, String id) {
|
public Boolean segmentIdExist(String segmentName, String id) {
|
||||||
var bloomFilter = cacheCommands.getBf(segmentName);
|
// var bloomFilter = cacheCommands.getBf(segmentName);
|
||||||
|
|
||||||
var result = cacheCommands.contains(bloomFilter, id);
|
var result = cacheCommands.get(segmentName, id);
|
||||||
|
|
||||||
return result;
|
return result != null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
server.port = ${PORT:12000}
|
||||||
spring.datasource.hikari.maximum-pool-size=${DB_POOL_MAX_SIZE:2}
|
spring.datasource.hikari.maximum-pool-size=${DB_POOL_MAX_SIZE:2}
|
||||||
spring.datasource.hikari.minimum-idle=${DB_POOL_MIN_IDLE:1}
|
spring.datasource.hikari.minimum-idle=${DB_POOL_MIN_IDLE:1}
|
||||||
spring.datasource.hikari.idle-timeout=${DB_POOL_IDLE_TIMEOUT_IN_MS:30000}
|
spring.datasource.hikari.idle-timeout=${DB_POOL_IDLE_TIMEOUT_IN_MS:30000}
|
||||||
@@ -18,12 +19,12 @@ kafka.auditlog.topic=${AUDIT_LOG_TOPIC:audit-logs}
|
|||||||
kms.base-url=${KMS_BASE_URL:http://google.com}
|
kms.base-url=${KMS_BASE_URL:http://google.com}
|
||||||
|
|
||||||
|
|
||||||
redis.host=127.0.0.1
|
redis.host=${REDIS_HOST:127.0.0.1}
|
||||||
redis.port=6379
|
redis.port=6379
|
||||||
redis.expected.insertions=99999
|
redis.expected.insertions=99999
|
||||||
redis.false.probability=0.001
|
redis.false.probability=0.001
|
||||||
|
|
||||||
server.port = 12000
|
|
||||||
|
|
||||||
segment.s3.bucket=navi-test
|
segment.s3.bucket=navi-test
|
||||||
report.s3.region=temp
|
report.s3.region=temp
|
||||||
@@ -18,8 +18,7 @@ public class MockController {
|
|||||||
|
|
||||||
@GetMapping("/mock")
|
@GetMapping("/mock")
|
||||||
public String test(@RequestParam("experiment") String experiment) {
|
public String test(@RequestParam("experiment") String experiment) {
|
||||||
var context = LitmusContext.builder().addProperty("cc", "5").build();
|
var result = litmus.isEnabled(experiment);
|
||||||
var result = litmus.isEnabled(experiment, context);
|
|
||||||
log.info("result ----> {}", result);
|
log.info("result ----> {}", result);
|
||||||
|
|
||||||
return "result ==> " + result;
|
return "result ==> " + result;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
server.port=13000
|
server.port=${PORT:13000}
|
||||||
|
|
||||||
spring.datasource.hikari.maximum-pool-size=${DB_POOL_MAX_SIZE:2}
|
spring.datasource.hikari.maximum-pool-size=${DB_POOL_MAX_SIZE:2}
|
||||||
spring.datasource.hikari.minimum-idle=${DB_POOL_MIN_IDLE:1}
|
spring.datasource.hikari.minimum-idle=${DB_POOL_MIN_IDLE:1}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
DATASOURCE_URL=jdbc:postgresql://dev-db-service-db.np.navi-tech.in:5432/litmus
|
DATASOURCE_URL=jdbc:postgresql://dev-db-service-db.np.navi-tech.in:5432/litmus
|
||||||
DATASOURCE_USERNAME=service_user
|
DATASOURCE_USERNAME=service_user
|
||||||
DATASOURCE_PASSWORD=JRCFCMXUXBJHGZVTPBNTXHYCCFVMWN
|
DATASOURCE_PASSWORD=JRCFCMXUXBJHGZVTPBNTXHYCCFVMWN
|
||||||
|
REDIS_HOST=dev-env-redis.twod4l.0001.aps1.cache.amazonaws.com
|
||||||
Reference in New Issue
Block a user