Skip to content

Commit

Permalink
TairString: support keepttl params
Browse files Browse the repository at this point in the history
  • Loading branch information
yangbodong22011 committed Apr 10, 2023
1 parent 3dec818 commit d6a1568
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ public class ExincrbyFloatParams extends Params {

private static final String MAX = "MAX";
private static final String MIN = "MIN";

private static final String KEEPTTL = "keepttl";

public ExincrbyFloatParams() {
}

Expand Down Expand Up @@ -114,6 +117,15 @@ public ExincrbyFloatParams abs(long absoluteVersion) {
return this;
}

/**
* do not update ttl
* @return the params
*/
public ExincrbyFloatParams keepttl() {
addParam(KEEPTTL);
return this;
}

private void addParamWithValue(ArrayList<byte[]> byteParams, String option) {
if (contains(option)) {
byteParams.add(SafeEncoder.encode(option));
Expand Down Expand Up @@ -146,6 +158,10 @@ public byte[][] getByteParams(byte[]... args) {
addParamWithValue(byteParams, MIN);
addParamWithValue(byteParams, MAX);

if (contains(KEEPTTL)) {
byteParams.add(SafeEncoder.encode(KEEPTTL));
}

return byteParams.toArray(new byte[byteParams.size()][]);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ public class ExincrbyParams extends Params {

private static final String DEF = "def";
private static final String NONEGATIVE = "nonegative";
private static final String KEEPTTL = "keepttl";

public ExincrbyParams() {
}
Expand Down Expand Up @@ -130,6 +131,15 @@ public ExincrbyParams abs(long absoluteVersion) {
return this;
}

/**
* do not update ttl
* @return the params
*/
public ExincrbyParams keepttl() {
addParam(KEEPTTL);
return this;
}

private void addParamWithValue(ArrayList<byte[]> byteParams, String option) {
if (contains(option)) {
byteParams.add(SafeEncoder.encode(option));
Expand Down Expand Up @@ -166,6 +176,10 @@ public byte[][] getByteParams(byte[]... args) {

addParamWithValue(byteParams, DEF);

if (contains(KEEPTTL)) {
byteParams.add(SafeEncoder.encode(KEEPTTL));
}

return byteParams.toArray(new byte[byteParams.size()][]);
}
}
18 changes: 18 additions & 0 deletions src/main/java/com/aliyun/tair/tairstring/params/ExsetParams.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ public class ExsetParams extends Params {
private static final String MAX = "max";

private static final String FLAGS = "flags";
private static final String KEEPTTL = "keepttl";

/**
* MEMCACHED: flags
Expand Down Expand Up @@ -109,6 +110,15 @@ public ExsetParams abs(long absoluteVersion) {
return this;
}

/**
* do not update ttl
* @return the params
*/
public ExsetParams keepttl() {
addParam(KEEPTTL);
return this;
}

private void addParamWithValue(ArrayList<byte[]> byteParams, String option) {
if (contains(option)) {
byteParams.add(SafeEncoder.encode(option));
Expand Down Expand Up @@ -142,6 +152,10 @@ public byte[][] getByteParams(String... args) {

addParamWithValue(byteParams, FLAGS);

if (contains(KEEPTTL)) {
byteParams.add(SafeEncoder.encode(KEEPTTL));
}

return byteParams.toArray(new byte[byteParams.size()][]);
}

Expand Down Expand Up @@ -171,6 +185,10 @@ public byte[][] getByteParams(byte[]... args) {

addParamWithValue(byteParams, FLAGS);

if (contains(KEEPTTL)) {
byteParams.add(SafeEncoder.encode(KEEPTTL));
}

return byteParams.toArray(new byte[byteParams.size()][]);
}
}
Expand Down
29 changes: 29 additions & 0 deletions src/test/java/com/aliyun/tair/tests/tairstring/TairStringTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,35 @@ public void exsetTest() {
assertEquals((long)1, bresult.getVersion());
}

@Test
public void exsetKeepTTLTest() throws Exception{
ExsetParams params = new ExsetParams();
params.keepttl();
ExsetParams params_ex = new ExsetParams();
params_ex.ex(2);

// String
String ret = tairString.exset(key, value, params_ex);
assertEquals("OK", ret);
ret = tairString.exset(key, value);
assertEquals("OK", ret);
Thread.sleep(3000);
ExgetResult<String> getRet = tairString.exget(key);
assertEquals(value, getRet.getValue());
assertEquals(2, getRet.getVersion());

ret = tairString.exset(key, value, params_ex);
assertEquals("OK", ret);
ret = tairString.exset(key, value, params);
assertEquals("OK", ret);
getRet = tairString.exget(key);
assertEquals(value, getRet.getValue());
assertEquals(4, getRet.getVersion());
Thread.sleep(3000);
getRet = tairString.exget(key);
assertNull(getRet);
}

@Test
public void exsetParamsTest() {
ExsetParams params_nx = new ExsetParams();
Expand Down

0 comments on commit d6a1568

Please sign in to comment.