Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/wordlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,9 @@ hincrByFloat
hiredis
hlen
hset
hgetdel
hgetex
hsetex
hsetnx
hstrlen
http
Expand Down
42 changes: 40 additions & 2 deletions src/main/java/redis/clients/jedis/CommandObjects.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,6 @@
import redis.clients.jedis.commands.ProtocolCommand;
import redis.clients.jedis.json.*;
import redis.clients.jedis.json.JsonProtocol.JsonCommand;
import redis.clients.jedis.json.DefaultGsonObjectMapper;
import redis.clients.jedis.json.JsonObjectMapper;
import redis.clients.jedis.params.*;
import redis.clients.jedis.resps.*;
import redis.clients.jedis.search.*;
Expand Down Expand Up @@ -1009,10 +1007,30 @@ public final CommandObject<Long> hset(String key, Map<String, String> hash) {
return new CommandObject<>(addFlatMapArgs(commandArguments(HSET).key(key), hash), BuilderFactory.LONG);
}

public final CommandObject<Long> hsetex(String key, HSetExParams params, String field, String value) {
return new CommandObject<>(commandArguments(HSETEX).key(key)
.addParams(params).add(FIELDS).add(1).add(field).add(value), BuilderFactory.LONG);
}

public final CommandObject<Long> hsetex(String key, HSetExParams params, Map<String, String> hash) {
return new CommandObject<>(addFlatMapArgs(commandArguments(HSETEX).key(key)
.addParams(params).add(FIELDS).add(hash.size()), hash), BuilderFactory.LONG);
}

public final CommandObject<String> hget(String key, String field) {
return new CommandObject<>(commandArguments(HGET).key(key).add(field), BuilderFactory.STRING);
}

public final CommandObject<List<String>> hgetex(String key, HGetExParams params, String... fields) {
return new CommandObject<>(commandArguments(Command.HGETEX).key(key)
.addParams(params).add(FIELDS).add(fields.length).addObjects((Object[]) fields), BuilderFactory.STRING_LIST);
}

public final CommandObject<List<String>> hgetdel(String key, String... fields) {
return new CommandObject<>(commandArguments(HGETDEL).key(key)
.add(FIELDS).add(fields.length).addObjects((Object[]) fields), BuilderFactory.STRING_LIST);
}

public final CommandObject<Long> hsetnx(String key, String field, String value) {
return new CommandObject<>(commandArguments(HSETNX).key(key).add(field).add(value), BuilderFactory.LONG);
}
Expand All @@ -1033,10 +1051,30 @@ public final CommandObject<Long> hset(byte[] key, Map<byte[], byte[]> hash) {
return new CommandObject<>(addFlatMapArgs(commandArguments(HSET).key(key), hash), BuilderFactory.LONG);
}

public final CommandObject<Long> hsetex(byte[] key, HSetExParams params, byte[] field, byte[] value) {
return new CommandObject<>(commandArguments(HSETEX).key(key)
.addParams(params).add(FIELDS).add(1).add(field).add(value), BuilderFactory.LONG);
}

public final CommandObject<Long> hsetex(byte[] key, HSetExParams params, Map<byte[], byte[]> hash) {
return new CommandObject<>(addFlatMapArgs(commandArguments(HSETEX).key(key)
.addParams(params).add(FIELDS).add(hash.size()), hash), BuilderFactory.LONG);
}

public final CommandObject<byte[]> hget(byte[] key, byte[] field) {
return new CommandObject<>(commandArguments(HGET).key(key).add(field), BuilderFactory.BINARY);
}

public final CommandObject<List<byte[]>> hgetex(byte[] key, HGetExParams params, byte[]... fields) {
return new CommandObject<>(commandArguments(Command.HGETEX).key(key)
.addParams(params).add(FIELDS).add(fields.length).addObjects((Object[]) fields), BuilderFactory.BINARY_LIST);
}

public final CommandObject<List<byte[]>> hgetdel(byte[] key, byte[]... fields) {
return new CommandObject<>(commandArguments(HGETDEL).key(key).add(FIELDS)
.add(fields.length).addObjects((Object[]) fields), BuilderFactory.BINARY_LIST);
}

public final CommandObject<Long> hsetnx(byte[] key, byte[] field, byte[] value) {
return new CommandObject<>(commandArguments(HSETNX).key(key).add(field).add(value), BuilderFactory.LONG);
}
Expand Down
48 changes: 48 additions & 0 deletions src/main/java/redis/clients/jedis/Jedis.java
Original file line number Diff line number Diff line change
Expand Up @@ -1167,6 +1167,18 @@ public long hset(final byte[] key, final Map<byte[], byte[]> hash) {
return connection.executeCommand(commandObjects.hset(key, hash));
}

@Override
public long hsetex(byte[] key, HSetExParams params, byte[] field, byte[] value) {
checkIsInMultiOrPipeline();
return connection.executeCommand(commandObjects.hsetex(key, params, field, value));
}

@Override
public long hsetex(byte[] key, HSetExParams params, Map<byte[], byte[]> hash){
checkIsInMultiOrPipeline();
return connection.executeCommand(commandObjects.hsetex(key, params, hash));
}

/**
* If key holds a hash, retrieve the value associated to the specified field.
* <p>
Expand All @@ -1183,6 +1195,18 @@ public byte[] hget(final byte[] key, final byte[] field) {
return connection.executeCommand(commandObjects.hget(key, field));
}

@Override
public List<byte[]> hgetex(byte[] key, HGetExParams params, byte[]... fields){
checkIsInMultiOrPipeline();
return connection.executeCommand(commandObjects.hgetex(key, params, fields));
}

@Override
public List<byte[]> hgetdel(byte[] key, byte[]... fields){
checkIsInMultiOrPipeline();
return connection.executeCommand(commandObjects.hgetdel(key, fields));
}

/**
* Set the specified hash field to the specified value if the field not exists. <b>Time
* complexity:</b> O(1)
Expand Down Expand Up @@ -5687,6 +5711,18 @@ public long hset(final String key, final Map<String, String> hash) {
return connection.executeCommand(commandObjects.hset(key, hash));
}

@Override
public long hsetex(String key, HSetExParams params, String field, String value) {
checkIsInMultiOrPipeline();
return connection.executeCommand(commandObjects.hsetex(key, params, field, value));
}

@Override
public long hsetex(String key, HSetExParams params, Map<String, String> hash) {
checkIsInMultiOrPipeline();
return connection.executeCommand(commandObjects.hsetex(key, params, hash));
}

/**
* If key holds a hash, retrieve the value associated to the specified field.
* <p>
Expand All @@ -5703,6 +5739,18 @@ public String hget(final String key, final String field) {
return connection.executeCommand(commandObjects.hget(key, field));
}

@Override
public List<String> hgetex(String key, HGetExParams params, String... fields) { checkIsInMultiOrPipeline();
return connection.executeCommand(commandObjects.hgetex(key, params, fields));

}

@Override
public List<String> hgetdel(String key, String... fields) { checkIsInMultiOrPipeline();
return connection.executeCommand(commandObjects.hgetdel(key, fields));

}

/**
* Set the specified hash field to the specified value if the field not exists. <b>Time
* complexity:</b> O(1)
Expand Down
32 changes: 32 additions & 0 deletions src/main/java/redis/clients/jedis/PipeliningBase.java
Original file line number Diff line number Diff line change
Expand Up @@ -625,11 +625,27 @@ public Response<Long> hset(String key, Map<String, String> hash) {
return appendCommand(commandObjects.hset(key, hash));
}

public Response<Long> hsetex(String key, HSetExParams params, String field, String value) {
return appendCommand(commandObjects.hsetex(key, params, field, value));
}

public Response<Long> hsetex(String key, HSetExParams params, Map<String, String> hash) {
return appendCommand(commandObjects.hsetex(key, params, hash));
}

@Override
public Response<String> hget(String key, String field) {
return appendCommand(commandObjects.hget(key, field));
}

public Response<List<String>> hgetex(String key, HGetExParams params, String... fields) {
return appendCommand(commandObjects.hgetex(key, params, fields));
}

public Response<List<String>> hgetdel(String key, String... fields) {
return appendCommand(commandObjects.hgetdel(key, fields));
}

@Override
public Response<Long> hsetnx(String key, String field, String value) {
return appendCommand(commandObjects.hsetnx(key, field, value));
Expand Down Expand Up @@ -1971,10 +1987,26 @@ public Response<Long> hset(byte[] key, Map<byte[], byte[]> hash) {
return appendCommand(commandObjects.hset(key, hash));
}

public Response<Long> hsetex(byte[] key, HSetExParams params, byte[] field, byte[] value) {
return appendCommand(commandObjects.hsetex(key, params, field, value));
}

public Response<Long> hsetex(byte[] key, HSetExParams params, Map<byte[], byte[]> hash) {
return appendCommand(commandObjects.hsetex(key, params, hash));
}

@Override
public Response<byte[]> hget(byte[] key, byte[] field) {
return appendCommand(commandObjects.hget(key, field));
}

public Response<List<byte[]>> hgetex(byte[] key, HGetExParams params, byte[]... fields) {
return appendCommand(commandObjects.hgetex(key, params, fields));
}

public Response<List<byte[]>> hgetdel(byte[] key, byte[]... fields) {
return appendCommand(commandObjects.hgetdel(key, fields));
}

@Override
public Response<Long> hsetnx(byte[] key, byte[] field, byte[] value) {
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/redis/clients/jedis/Protocol.java
Original file line number Diff line number Diff line change
Expand Up @@ -292,7 +292,7 @@ public static enum Command implements ProtocolCommand {
SETBIT, GETBIT, BITPOS, SETRANGE, GETRANGE, BITCOUNT, BITOP, BITFIELD, BITFIELD_RO, // <-- bit (string)
HSET, HGET, HSETNX, HMSET, HMGET, HINCRBY, HEXISTS, HDEL, HLEN, HKEYS, HVALS, HGETALL, HSTRLEN,
HEXPIRE, HPEXPIRE, HEXPIREAT, HPEXPIREAT, HTTL, HPTTL, HEXPIRETIME, HPEXPIRETIME, HPERSIST,
HRANDFIELD, HINCRBYFLOAT, // <-- hash
HRANDFIELD, HINCRBYFLOAT, HSETEX, HGETEX, HGETDEL, // <-- hash
RPUSH, LPUSH, LLEN, LRANGE, LTRIM, LINDEX, LSET, LREM, LPOP, RPOP, BLPOP, BRPOP, LINSERT, LPOS,
RPOPLPUSH, BRPOPLPUSH, BLMOVE, LMOVE, LMPOP, BLMPOP, LPUSHX, RPUSHX, // <-- list
SADD, SMEMBERS, SREM, SPOP, SMOVE, SCARD, SRANDMEMBER, SINTER, SINTERSTORE, SUNION, SUNIONSTORE,
Expand Down Expand Up @@ -339,7 +339,7 @@ public static enum Keyword implements Rawable {
DELETE, LIBRARYNAME, WITHCODE, DESCRIPTION, GETKEYS, GETKEYSANDFLAGS, DOCS, FILTERBY, DUMP,
MODULE, ACLCAT, PATTERN, DOCTOR, LATEST, HISTORY, USAGE, SAMPLES, PURGE, STATS, LOADEX, CONFIG,
ARGS, RANK, NOW, VERSION, ADDR, SKIPME, USER, LADDR, FIELDS,
CHANNELS, NUMPAT, NUMSUB, SHARDCHANNELS, SHARDNUMSUB, NOVALUES, MAXAGE;
CHANNELS, NUMPAT, NUMSUB, SHARDCHANNELS, SHARDNUMSUB, NOVALUES, MAXAGE, FXX, FNX;

private final byte[] raw;

Expand Down
40 changes: 40 additions & 0 deletions src/main/java/redis/clients/jedis/UnifiedJedis.java
Original file line number Diff line number Diff line change
Expand Up @@ -1471,10 +1471,30 @@ public long hset(String key, Map<String, String> hash) {
return executeCommand(commandObjects.hset(key, hash));
}

@Override
public long hsetex(String key, HSetExParams params, String field, String value) {
return executeCommand(commandObjects.hsetex(key, params, field, value));
}

@Override
public long hsetex(String key, HSetExParams params, Map<String, String> hash) {
return executeCommand(commandObjects.hsetex(key, params, hash));
}

@Override
public String hget(String key, String field) {
return executeCommand(commandObjects.hget(key, field));
}

@Override
public List<String> hgetex(String key, HGetExParams params, String... fields) {
return executeCommand(commandObjects.hgetex(key, params, fields));
}

@Override
public List<String> hgetdel(String key, String... fields) {
return executeCommand(commandObjects.hgetdel(key, fields));
}

@Override
public long hsetnx(String key, String field, String value) {
Expand All @@ -1501,11 +1521,31 @@ public long hset(byte[] key, Map<byte[], byte[]> hash) {
return executeCommand(commandObjects.hset(key, hash));
}

@Override
public long hsetex(byte[] key, HSetExParams params, byte[] field, byte[] value) {
return executeCommand(commandObjects.hsetex(key, params, field, value));
}

@Override
public long hsetex(byte[] key, HSetExParams params, Map<byte[], byte[]> hash) {
return executeCommand(commandObjects.hsetex(key, params, hash));
}

@Override
public byte[] hget(byte[] key, byte[] field) {
return executeCommand(commandObjects.hget(key, field));
}

@Override
public List<byte[]> hgetex(byte[] key, HGetExParams params, byte[]... fields) {
return executeCommand(commandObjects.hgetex(key, params, fields));
}

@Override
public List<byte[]> hgetdel(byte[] key, byte[]... fields) {
return executeCommand(commandObjects.hgetdel(key, fields));
}

@Override
public long hsetnx(byte[] key, byte[] field, byte[] value) {
return executeCommand(commandObjects.hsetnx(key, field, value));
Expand Down
10 changes: 10 additions & 0 deletions src/main/java/redis/clients/jedis/commands/HashBinaryCommands.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import java.util.Set;

import redis.clients.jedis.args.ExpiryOption;
import redis.clients.jedis.params.HGetExParams;
import redis.clients.jedis.params.HSetExParams;
import redis.clients.jedis.params.ScanParams;
import redis.clients.jedis.resps.ScanResult;

Expand All @@ -14,8 +16,16 @@ public interface HashBinaryCommands {

long hset(byte[] key, Map<byte[], byte[]> hash);

long hsetex(byte[] key, HSetExParams params, byte[] field, byte[] value);

long hsetex(byte[] key, HSetExParams params, Map<byte[], byte[]> hash);

byte[] hget(byte[] key, byte[] field);

List<byte[]> hgetex(byte[] key, HGetExParams params, byte[]... fields);

List<byte[]> hgetdel(byte[] key, byte[]... fields);

long hsetnx(byte[] key, byte[] field, byte[] value);

String hmset(byte[] key, Map<byte[], byte[]> hash);
Expand Down
10 changes: 10 additions & 0 deletions src/main/java/redis/clients/jedis/commands/HashCommands.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import java.util.Set;

import redis.clients.jedis.args.ExpiryOption;
import redis.clients.jedis.params.HGetExParams;
import redis.clients.jedis.params.HSetExParams;
import redis.clients.jedis.params.ScanParams;
import redis.clients.jedis.resps.ScanResult;

Expand All @@ -14,8 +16,16 @@ public interface HashCommands {

long hset(String key, Map<String, String> hash);

long hsetex(String key, HSetExParams params, String field, String value);

long hsetex(String key, HSetExParams params, Map<String, String> hash);

String hget(String key, String field);

List<String> hgetex(String key, HGetExParams params, String... fields);

List<String> hgetdel(String key, String... fields);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing JavaDoc


long hsetnx(String key, String field, String value);

String hmset(String key, Map<String, String> hash);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@

import redis.clients.jedis.Response;
import redis.clients.jedis.args.ExpiryOption;
import redis.clients.jedis.params.HGetExParams;
import redis.clients.jedis.params.HSetExParams;
import redis.clients.jedis.params.ScanParams;
import redis.clients.jedis.resps.ScanResult;

Expand All @@ -15,8 +17,16 @@ public interface HashPipelineBinaryCommands {

Response<Long> hset(byte[] key, Map<byte[], byte[]> hash);

Response<Long> hsetex(byte[] key, HSetExParams params, byte[] field, byte[] value);

Response<Long> hsetex(byte[] key, HSetExParams params, Map<byte[], byte[]> hash);

Response<byte[]> hget(byte[] key, byte[] field);

Response<List<byte[]>> hgetex(byte[] key, HGetExParams params, byte[]... fields);

Response<List<byte[]>> hgetdel(byte[] key, byte[]... fields);

Response<Long> hsetnx(byte[] key, byte[] field, byte[] value);

Response<String> hmset(byte[] key, Map<byte[], byte[]> hash);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@

import redis.clients.jedis.Response;
import redis.clients.jedis.args.ExpiryOption;
import redis.clients.jedis.params.HGetExParams;
import redis.clients.jedis.params.HSetExParams;
import redis.clients.jedis.params.ScanParams;
import redis.clients.jedis.resps.ScanResult;

Expand All @@ -15,8 +17,16 @@ public interface HashPipelineCommands {

Response<Long> hset(String key, Map<String, String> hash);

Response<Long> hsetex(String key, HSetExParams params, String field, String value);

Response<Long> hsetex(String key, HSetExParams params, Map<String, String> hash);

Response<String> hget(String key, String field);

Response<List<String>> hgetex(String key, HGetExParams params, String... fields);

Response<List<String>> hgetdel(String key, String... fields);

Response<Long> hsetnx(String key, String field, String value);

Response<String> hmset(String key, Map<String, String> hash);
Expand Down
Loading
Loading