All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.infinispan.server.resp.commands.string.SETNX Maven / Gradle / Ivy

There is a newer version: 15.1.4.Final
Show newest version
package org.infinispan.server.resp.commands.string;

import static org.infinispan.server.resp.operation.SetOperation.NX_BYTES;

import java.util.List;
import java.util.concurrent.CompletionStage;

import org.infinispan.server.resp.Resp3Handler;
import org.infinispan.server.resp.RespCommand;
import org.infinispan.server.resp.RespRequestHandler;
import org.infinispan.server.resp.commands.Resp3Command;
import org.infinispan.server.resp.operation.SetOperation;
import org.infinispan.server.resp.serialization.Resp3Response;

import io.netty.channel.ChannelHandlerContext;

/**
 * `SETNX key value` command.
 * 

* This command is deprecated. The alternative is `SET key value NX`. *

* * @since 15.0 * @author José Bolina * @see SET * @see Redis documentation. */ public class SETNX extends RespCommand implements Resp3Command { public SETNX() { super(3, 1, 1, 1); } @Override public CompletionStage perform(Resp3Handler handler, ChannelHandlerContext ctx, List arguments) { byte[] key = arguments.get(0); byte[] value = arguments.get(1); // Despite the recommended command to replace, the return of SETNX is a boolean instead of an OK. CompletionStage cs = SetOperation.performOperation(handler.cache(), List.of(key, value, NX_BYTES), handler.respServer().getTimeService(), getName()) .thenApply(r -> r.isSuccess() ? 1 : 0); return handler.stageToReturn(cs, ctx, Resp3Response.INTEGER); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy