Java源码示例:org.redisson.client.codec.StringCodec
示例1
/**
* Check shutdown state. If tasksCounter equals <code>0</code>
* and executor in <code>shutdown</code> state, then set <code>terminated</code> state
* and notify terminationTopicName
* <p>
* If <code>scheduledRequestId</code> is not null then
* delete scheduled task
*
* @param requestId
*/
private void finish(String requestId, boolean removeTask) {
String script = "";
if (removeTask) {
script += "local scheduled = redis.call('zscore', KEYS[5], ARGV[3]);"
+ "if scheduled == false then "
+ "redis.call('hdel', KEYS[4], ARGV[3]); "
+ "end;";
}
script += "redis.call('zrem', KEYS[5], 'ff' .. ARGV[3]);" +
"if redis.call('decr', KEYS[1]) == 0 then "
+ "redis.call('del', KEYS[1]);"
+ "if redis.call('get', KEYS[2]) == ARGV[1] then "
+ "redis.call('del', KEYS[6]);"
+ "redis.call('set', KEYS[2], ARGV[2]);"
+ "redis.call('publish', KEYS[3], ARGV[2]);"
+ "end;"
+ "end;";
commandExecutor.evalWrite(name, StringCodec.INSTANCE, RedisCommands.EVAL_VOID,
script,
Arrays.<Object>asList(tasksCounterName, statusName, terminationTopicName, tasksName, schedulerQueueName, tasksRetryIntervalName),
RedissonExecutorService.SHUTDOWN_STATE, RedissonExecutorService.TERMINATED_STATE, requestId);
}
示例2
@Override
public Long dbSize() {
if (isQueueing()) {
return read(null, StringCodec.INSTANCE, RedisCommands.DBSIZE);
}
RFuture<Long> f = executorService.readAllAsync(RedisCommands.DBSIZE, new SlotCallback<Long, Long>() {
AtomicLong results = new AtomicLong();
@Override
public void onSlotResult(Long result) {
results.addAndGet(result);
}
@Override
public Long onFinish() {
return results.get();
}
});
return sync(f);
}
示例3
@Test
public void testSortTo() {
RList<String> list = redisson.getList("list", IntegerCodec.INSTANCE);
list.add("1");
list.add("2");
list.add("3");
assertThat(list.sortTo("test3", SortOrder.DESC)).isEqualTo(3);
RList<String> list2 = redisson.getList("test3", StringCodec.INSTANCE);
assertThat(list2).containsExactly("3", "2", "1");
assertThat(list.sortTo("test4", SortOrder.ASC)).isEqualTo(3);
RList<String> list3 = redisson.getList("test4", StringCodec.INSTANCE);
assertThat(list3).containsExactly("1", "2", "3");
}
示例4
@Test
public void testAddAndGet() throws InterruptedException {
RScoredSortedSetReactive<Integer> set = redisson.getScoredSortedSet("simple", StringCodec.INSTANCE);
sync(set.add(1, 100));
Double res = sync(set.addScore(100, 11));
Assert.assertEquals(12, (double)res, 0);
Double score = sync(set.getScore(100));
Assert.assertEquals(12, (double)score, 0);
RScoredSortedSetReactive<Integer> set2 = redisson.getScoredSortedSet("simple", StringCodec.INSTANCE);
sync(set2.add(100.2, 1));
Double res2 = sync(set2.addScore(1, new Double(12.1)));
Assert.assertTrue(new Double(112.3).compareTo(res2) == 0);
res2 = sync(set2.getScore(1));
Assert.assertTrue(new Double(112.3).compareTo(res2) == 0);
}
示例5
@Override
public <T> T eval(byte[] script, ReturnType returnType, int numKeys, byte[]... keysAndArgs) {
if (isQueueing()) {
throw new UnsupportedOperationException();
}
if (isPipelined()) {
throw new UnsupportedOperationException();
}
RedisCommand<?> c = toCommand(returnType, "EVAL");
List<Object> params = new ArrayList<Object>();
params.add(script);
params.add(numKeys);
params.addAll(Arrays.asList(keysAndArgs));
return write(null, StringCodec.INSTANCE, c, params.toArray());
}
示例6
@Override
public Flux<NumericResponse<PfAddCommand, Long>> pfAdd(Publisher<PfAddCommand> commands) {
return execute(commands, command -> {
Assert.notNull(command.getKey(), "Key must not be null!");
Assert.notEmpty(command.getValues(), "Values must not be empty!");
byte[] keyBuf = toByteArray(command.getKey());
List<Object> params = new ArrayList<Object>(command.getValues().size() + 1);
params.add(keyBuf);
params.addAll(command.getValues().stream().map(v -> toByteArray(v)).collect(Collectors.toList()));
Mono<Long> m = write(keyBuf, StringCodec.INSTANCE, PFADD, params.toArray());
return m.map(v -> new NumericResponse<>(command, v));
});
}
示例7
@Override
public Long zInterStore(byte[] destKey, Aggregate aggregate, int[] weights, byte[]... sets) {
List<Object> args = new ArrayList<Object>(sets.length*2 + 5);
args.add(destKey);
args.add(sets.length);
args.addAll(Arrays.asList(sets));
if (weights != null) {
args.add("WEIGHTS");
for (int weight : weights) {
args.add(weight);
}
}
if (aggregate != null) {
args.add("AGGREGATE");
args.add(aggregate.name());
}
return write(destKey, StringCodec.INSTANCE, ZINTERSTORE, args.toArray());
}
示例8
@Override
public Long dbSize() {
if (isQueueing()) {
return read(null, StringCodec.INSTANCE, RedisCommands.DBSIZE);
}
RFuture<Long> f = executorService.readAllAsync(RedisCommands.DBSIZE, new SlotCallback<Long, Long>() {
AtomicLong results = new AtomicLong();
@Override
public void onSlotResult(Long result) {
results.addAndGet(result);
}
@Override
public Long onFinish() {
return results.get();
}
});
return sync(f);
}
示例9
@Override
public Flux<NumericResponse<SUnionStoreCommand, Long>> sUnionStore(Publisher<SUnionStoreCommand> commands) {
return execute(commands, command -> {
Assert.notNull(command.getKeys(), "Keys must not be null!");
Assert.notNull(command.getKey(), "Destination key must not be null!");
List<Object> args = new ArrayList<Object>(command.getKeys().size() + 1);
args.add(toByteArray(command.getKey()));
args.addAll(command.getKeys().stream().map(v -> toByteArray(v)).collect(Collectors.toList()));
Mono<Long> m = write((byte[])args.get(0), StringCodec.INSTANCE, RedisCommands.SUNIONSTORE, args.toArray());
return m.map(v -> new NumericResponse<>(command, v));
});
}
示例10
@Override
public Long zAdd(byte[] key, Set<Tuple> tuples) {
List<Object> params = new ArrayList<Object>(tuples.size()*2+1);
params.add(key);
for (Tuple entry : tuples) {
params.add(BigDecimal.valueOf(entry.getScore()).toPlainString());
params.add(entry.getValue());
}
return write(key, StringCodec.INSTANCE, RedisCommands.ZADD, params.toArray());
}
示例11
@Override
public Flux<NumericResponse<KeyCommand, Long>> hLen(Publisher<KeyCommand> commands) {
return execute(commands, command -> {
Assert.notNull(command.getKey(), "Key must not be null!");
byte[] keyBuf = toByteArray(command.getKey());
Mono<Long> m = read(keyBuf, StringCodec.INSTANCE, RedisCommands.HLEN_LONG, keyBuf);
return m.map(v -> new NumericResponse<>(command, v));
});
}
示例12
@Override
public Flux<NumericResponse<ZRemRangeByScoreCommand, Long>> zRemRangeByScore(
Publisher<ZRemRangeByScoreCommand> commands) {
return execute(commands, command -> {
Assert.notNull(command.getKey(), "Key must not be null!");
Assert.notNull(command.getRange(), "Range must not be null!");
byte[] keyBuf = toByteArray(command.getKey());
Mono<Long> m = write(keyBuf, StringCodec.INSTANCE, ZREMRANGEBYSCORE,
keyBuf, toLowerBound(command.getRange()),
toUpperBound(command.getRange()));
return m.map(v -> new NumericResponse<>(command, v));
});
}
示例13
@Override
public Long xTrim(byte[] key, long count) {
Assert.notNull(key, "Key must not be null!");
Assert.notNull(count, "Count must not be null!");
return connection.write(key, StringCodec.INSTANCE, RedisCommands.XTRIM, key, "MAXLEN", count);
}
示例14
@Override
public Flux<NumericResponse<SRemCommand, Long>> sRem(Publisher<SRemCommand> commands) {
return execute(commands, command -> {
Assert.notNull(command.getKey(), "Key must not be null!");
Assert.notNull(command.getValues(), "Values must not be null!");
List<Object> args = new ArrayList<Object>(command.getValues().size() + 1);
args.add(toByteArray(command.getKey()));
args.addAll(command.getValues().stream().map(v -> toByteArray(v)).collect(Collectors.toList()));
Mono<Long> m = write((byte[])args.get(0), StringCodec.INSTANCE, SREM, args.toArray());
return m.map(v -> new NumericResponse<>(command, v));
});
}
示例15
@Override
public boolean trySetComparator(Comparator<? super V> comparator) {
String className = comparator.getClass().getName();
String comparatorSign = className + ":" + calcClassSign(className);
Boolean res = get(commandExecutor.writeAsync(getName(), StringCodec.INSTANCE, RedisCommands.SETNX, getComparatorKeyName(), comparatorSign));
if (res) {
this.comparator = comparator;
}
return res;
}
示例16
@Override
public Flux<NumericResponse<ZRemCommand, Long>> zRem(Publisher<ZRemCommand> commands) {
return execute(commands, command -> {
Assert.notNull(command.getKey(), "Key must not be null!");
Assert.notNull(command.getValues(), "Values must not be null!");
List<Object> args = new ArrayList<Object>(command.getValues().size() + 1);
args.add(toByteArray(command.getKey()));
args.addAll(command.getValues().stream().map(v -> toByteArray(v)).collect(Collectors.toList()));
Mono<Long> m = write((byte[])args.get(0), StringCodec.INSTANCE, RedisCommands.ZREM_LONG, args.toArray());
return m.map(v -> new NumericResponse<>(command, v));
});
}
示例17
@Override
public ClusterInfo clusterGetClusterInfo() {
RFuture<Map<String, String>> f = executorService.readAsync((String)null, StringCodec.INSTANCE, RedisCommands.CLUSTER_INFO);
syncFuture(f);
Properties props = new Properties();
for (Entry<String, String> entry : f.getNow().entrySet()) {
props.setProperty(entry.getKey(), entry.getValue());
}
return new ClusterInfo(props);
}
示例18
@Override
public Flux<NumericResponse<KeyCommand, Long>> del(Publisher<KeyCommand> keys) {
Flux<KeyCommand> s = Flux.from(keys);
return s.concatMap(command -> {
Assert.notNull(command.getKey(), "Key must not be null!");
byte[] keyBuf = toByteArray(command.getKey());
Mono<Long> m = write(keyBuf, StringCodec.INSTANCE, RedisCommands.DEL, keyBuf);
return m.map(v -> new NumericResponse<>(command, v));
});
}
示例19
@Override
public RFuture<Boolean> compareAndSetAsync(double expect, double update) {
return commandExecutor.evalWriteAsync(getName(), StringCodec.INSTANCE, RedisCommands.EVAL_BOOLEAN,
"local value = redis.call('get', KEYS[1]);"
+ "if (value == false and tonumber(ARGV[1]) == 0) or (tonumber(value) == tonumber(ARGV[1])) then "
+ "redis.call('set', KEYS[1], ARGV[2]); "
+ "return 1 "
+ "else "
+ "return 0 end",
Collections.<Object>singletonList(getName()), BigDecimal.valueOf(expect).toPlainString(), BigDecimal.valueOf(update).toPlainString());
}
示例20
@Override
public Long sDiffStore(byte[] destKey, byte[]... keys) {
List<Object> args = new ArrayList<Object>(keys.length + 1);
args.add(destKey);
args.addAll(Arrays.asList(keys));
return write(keys[0], StringCodec.INSTANCE, RedisCommands.SDIFFSTORE, args.toArray());
}
示例21
@Override
public Flux<BooleanResponse<MoveCommand>> move(Publisher<MoveCommand> commands) {
return execute(commands, command -> {
Assert.notNull(command.getKey(), "Key must not be null!");
Assert.notNull(command.getDatabase(), "Database must not be null!");
byte[] keyBuf = toByteArray(command.getKey());
Mono<Boolean> m = write(keyBuf, StringCodec.INSTANCE, RedisCommands.MOVE, keyBuf, command.getDatabase());
return m.map(v -> new BooleanResponse<>(command, v));
});
}
示例22
@Override
public Flux<NumericResponse<KeyCommand, Long>> strLen(Publisher<KeyCommand> keys) {
return execute(keys, command -> {
Assert.notNull(command.getKey(), "Key must not be null!");
byte[] keyBuf = toByteArray(command.getKey());
Mono<Long> m = read(keyBuf, StringCodec.INSTANCE, RedisCommands.STRLEN, keyBuf);
return m.map(v -> new NumericResponse<>(command, v));
});
}
示例23
@Override
public Flux<BooleanResponse<ExpireCommand>> pExpire(Publisher<ExpireCommand> commands) {
return execute(commands, command -> {
Assert.notNull(command.getKey(), "Key must not be null!");
byte[] keyBuf = toByteArray(command.getKey());
Mono<Boolean> m = read(keyBuf, StringCodec.INSTANCE, RedisCommands.PEXPIRE, keyBuf);
return m.map(v -> new BooleanResponse<>(command, v));
});
}
示例24
@Override
public Flux<NumericResponse<KeyCommand, Long>> pTtl(Publisher<KeyCommand> commands) {
return execute(commands, command -> {
Assert.notNull(command.getKey(), "Key must not be null!");
byte[] keyBuf = toByteArray(command.getKey());
Mono<Long> m = write(keyBuf, StringCodec.INSTANCE, RedisCommands.PTTL, keyBuf);
return m.map(v -> new NumericResponse<>(command, v));
});
}
示例25
@Override
public Long pfAdd(byte[] key, byte[]... values) {
List<Object> params = new ArrayList<Object>(values.length + 1);
params.add(key);
for (byte[] member : values) {
params.add(member);
}
return write(key, StringCodec.INSTANCE, PFADD, params.toArray());
}
示例26
@Override
public Long geoAdd(byte[] key, Map<byte[], Point> memberCoordinateMap) {
List<Object> params = new ArrayList<Object>(memberCoordinateMap.size()*3 + 1);
params.add(key);
for (Entry<byte[], Point> entry : memberCoordinateMap.entrySet()) {
params.add(entry.getValue().getX());
params.add(entry.getValue().getY());
params.add(entry.getKey());
}
return write(key, StringCodec.INSTANCE, RedisCommands.GEOADD, params.toArray());
}
示例27
@Override
public Mono<ValueEncoding> encodingOf(ByteBuffer key) {
Assert.notNull(key, "Key must not be null!");
byte[] keyBuf = toByteArray(key);
return read(keyBuf, StringCodec.INSTANCE, OBJECT_ENCODING, keyBuf);
}
示例28
@Override
public Long sAdd(byte[] key, byte[]... values) {
List<Object> args = new ArrayList<Object>(values.length + 1);
args.add(key);
args.addAll(Arrays.asList(values));
return write(key, StringCodec.INSTANCE, SADD, args.toArray());
}
示例29
@Override
public ClusterInfo clusterGetClusterInfo() {
RFuture<Map<String, String>> f = executorService.readAsync((String)null, StringCodec.INSTANCE, RedisCommands.CLUSTER_INFO);
syncFuture(f);
Properties props = new Properties();
for (Entry<String, String> entry : f.getNow().entrySet()) {
props.setProperty(entry.getKey(), entry.getValue());
}
return new ClusterInfo(props);
}
示例30
@Override
public Long clusterCountKeysInSlot(int slot) {
RedisClusterNode node = clusterGetNodeForSlot(slot);
MasterSlaveEntry entry = executorService.getConnectionManager().getEntry(new InetSocketAddress(node.getHost(), node.getPort()));
RFuture<Long> f = executorService.readAsync(entry, StringCodec.INSTANCE, RedisCommands.CLUSTER_COUNTKEYSINSLOT, slot);
return syncFuture(f);
}