Skip to content

Commit d6a1568

Browse files
TairString: support keepttl params
1 parent 3dec818 commit d6a1568

4 files changed

Lines changed: 77 additions & 0 deletions

File tree

src/main/java/com/aliyun/tair/tairstring/params/ExincrbyFloatParams.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ public class ExincrbyFloatParams extends Params {
1919

2020
private static final String MAX = "MAX";
2121
private static final String MIN = "MIN";
22+
23+
private static final String KEEPTTL = "keepttl";
24+
2225
public ExincrbyFloatParams() {
2326
}
2427

@@ -114,6 +117,15 @@ public ExincrbyFloatParams abs(long absoluteVersion) {
114117
return this;
115118
}
116119

120+
/**
121+
* do not update ttl
122+
* @return the params
123+
*/
124+
public ExincrbyFloatParams keepttl() {
125+
addParam(KEEPTTL);
126+
return this;
127+
}
128+
117129
private void addParamWithValue(ArrayList<byte[]> byteParams, String option) {
118130
if (contains(option)) {
119131
byteParams.add(SafeEncoder.encode(option));
@@ -146,6 +158,10 @@ public byte[][] getByteParams(byte[]... args) {
146158
addParamWithValue(byteParams, MIN);
147159
addParamWithValue(byteParams, MAX);
148160

161+
if (contains(KEEPTTL)) {
162+
byteParams.add(SafeEncoder.encode(KEEPTTL));
163+
}
164+
149165
return byteParams.toArray(new byte[byteParams.size()][]);
150166
}
151167
}

src/main/java/com/aliyun/tair/tairstring/params/ExincrbyParams.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public class ExincrbyParams extends Params {
2323

2424
private static final String DEF = "def";
2525
private static final String NONEGATIVE = "nonegative";
26+
private static final String KEEPTTL = "keepttl";
2627

2728
public ExincrbyParams() {
2829
}
@@ -130,6 +131,15 @@ public ExincrbyParams abs(long absoluteVersion) {
130131
return this;
131132
}
132133

134+
/**
135+
* do not update ttl
136+
* @return the params
137+
*/
138+
public ExincrbyParams keepttl() {
139+
addParam(KEEPTTL);
140+
return this;
141+
}
142+
133143
private void addParamWithValue(ArrayList<byte[]> byteParams, String option) {
134144
if (contains(option)) {
135145
byteParams.add(SafeEncoder.encode(option));
@@ -166,6 +176,10 @@ public byte[][] getByteParams(byte[]... args) {
166176

167177
addParamWithValue(byteParams, DEF);
168178

179+
if (contains(KEEPTTL)) {
180+
byteParams.add(SafeEncoder.encode(KEEPTTL));
181+
}
182+
169183
return byteParams.toArray(new byte[byteParams.size()][]);
170184
}
171185
}

src/main/java/com/aliyun/tair/tairstring/params/ExsetParams.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public class ExsetParams extends Params {
2222
private static final String MAX = "max";
2323

2424
private static final String FLAGS = "flags";
25+
private static final String KEEPTTL = "keepttl";
2526

2627
/**
2728
* MEMCACHED: flags
@@ -109,6 +110,15 @@ public ExsetParams abs(long absoluteVersion) {
109110
return this;
110111
}
111112

113+
/**
114+
* do not update ttl
115+
* @return the params
116+
*/
117+
public ExsetParams keepttl() {
118+
addParam(KEEPTTL);
119+
return this;
120+
}
121+
112122
private void addParamWithValue(ArrayList<byte[]> byteParams, String option) {
113123
if (contains(option)) {
114124
byteParams.add(SafeEncoder.encode(option));
@@ -142,6 +152,10 @@ public byte[][] getByteParams(String... args) {
142152

143153
addParamWithValue(byteParams, FLAGS);
144154

155+
if (contains(KEEPTTL)) {
156+
byteParams.add(SafeEncoder.encode(KEEPTTL));
157+
}
158+
145159
return byteParams.toArray(new byte[byteParams.size()][]);
146160
}
147161

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

172186
addParamWithValue(byteParams, FLAGS);
173187

188+
if (contains(KEEPTTL)) {
189+
byteParams.add(SafeEncoder.encode(KEEPTTL));
190+
}
191+
174192
return byteParams.toArray(new byte[byteParams.size()][]);
175193
}
176194
}

src/test/java/com/aliyun/tair/tests/tairstring/TairStringTest.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,35 @@ public void exsetTest() {
5151
assertEquals((long)1, bresult.getVersion());
5252
}
5353

54+
@Test
55+
public void exsetKeepTTLTest() throws Exception{
56+
ExsetParams params = new ExsetParams();
57+
params.keepttl();
58+
ExsetParams params_ex = new ExsetParams();
59+
params_ex.ex(2);
60+
61+
// String
62+
String ret = tairString.exset(key, value, params_ex);
63+
assertEquals("OK", ret);
64+
ret = tairString.exset(key, value);
65+
assertEquals("OK", ret);
66+
Thread.sleep(3000);
67+
ExgetResult<String> getRet = tairString.exget(key);
68+
assertEquals(value, getRet.getValue());
69+
assertEquals(2, getRet.getVersion());
70+
71+
ret = tairString.exset(key, value, params_ex);
72+
assertEquals("OK", ret);
73+
ret = tairString.exset(key, value, params);
74+
assertEquals("OK", ret);
75+
getRet = tairString.exget(key);
76+
assertEquals(value, getRet.getValue());
77+
assertEquals(4, getRet.getVersion());
78+
Thread.sleep(3000);
79+
getRet = tairString.exget(key);
80+
assertNull(getRet);
81+
}
82+
5483
@Test
5584
public void exsetParamsTest() {
5685
ExsetParams params_nx = new ExsetParams();

0 commit comments

Comments
 (0)