From 1a1456d44a9a28e1aa7552307041fce6b09bb101 Mon Sep 17 00:00:00 2001 From: win5923 Date: Fri, 11 Apr 2025 11:05:40 +0800 Subject: [PATCH 1/2] Generate new HGETDEL, HGETEX, HSETEX command builders Signed-off-by: win5923 --- hack/cmds/commands.json | 178 ++++++++++++++++++ hack/cmds/gen.go | 2 +- internal/cmds/gen_hash.go | 333 +++++++++++++++++++++++++++++++++ internal/cmds/gen_hash_test.go | 25 +++ 4 files changed, 537 insertions(+), 1 deletion(-) diff --git a/hack/cmds/commands.json b/hack/cmds/commands.json index 65370e0c..dddf6db4 100644 --- a/hack/cmds/commands.json +++ b/hack/cmds/commands.json @@ -3087,6 +3087,184 @@ "since": "2.0.0", "group": "hash" }, + "HGETDEL": { + "summary": "Returns the value of a field and deletes it from the hash", + "complexity": "O(N) where N is the number of specified fields", + "arguments": [ + { + "name": "key", + "type": "key", + "key_spec_index": 0 + }, + { + "name": "fields", + "token": "FIELDS", + "type": "block", + "arguments": [ + { + "name": "numfields", + "type": "integer" + }, + { + "name": "field", + "type": "string", + "multiple": true + } + ] + } + ], + "since": "8.0.0", + "group": "hash" + }, + "HGETEX": { + "summary": "Get the value of one or more fields of a given hash key, and optionally set their expiration.", + "complexity": "O(N) where N is the number of specified fields", + "arguments": [ + { + "name": "key", + "type": "key", + "key_spec_index": 0 + }, + { + "name": "expiration", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "seconds", + "type": "integer", + "token": "EX" + }, + { + "name": "milliseconds", + "type": "integer", + "token": "PX" + }, + { + "name": "unix-time-seconds", + "type": "unix-time", + "token": "EXAT" + }, + { + "name": "unix-time-milliseconds", + "type": "unix-time", + "token": "PXAT" + }, + { + "name": "persist", + "type": "pure-token", + "token": "PERSIST" + } + ] + }, + { + "name": "fields", + "token": "FIELDS", + "type": "block", + "arguments": [ + { + "name": "numfields", + "type": "integer" + }, + { + "name": "field", + "type": "string", + "multiple": true + } + ] + } + ], + "since": "8.0.0", + "group": "hash" + }, + "HSETEX": { + "summary": "Set the value of one or more fields of a given hash key, and optionally set their expiration.", + "complexity": "O(N) where N is the number of fields being set.", + "arguments": [ + { + "name": "key", + "type": "key", + "key_spec_index": 0 + }, + { + "name": "condition", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "fnx", + "type": "pure-token", + "token": "FNX" + }, + { + "name": "fxx", + "type": "pure-token", + "token": "FXX" + } + ] + }, + { + "name": "expiration", + "type": "oneof", + "optional": true, + "arguments": [ + { + "name": "seconds", + "type": "integer", + "token": "EX" + }, + { + "name": "milliseconds", + "type": "integer", + "token": "PX" + }, + { + "name": "unix-time-seconds", + "type": "unix-time", + "token": "EXAT" + }, + { + "name": "unix-time-milliseconds", + "type": "unix-time", + "token": "PXAT" + }, + { + "name": "keepttl", + "type": "pure-token", + "token": "KEEPTTL" + } + ] + }, + { + "name": "fields", + "token": "FIELDS", + "type": "block", + "arguments": [ + { + "name": "numfields", + "type": "integer" + }, + { + "name": "data", + "type": "block", + "multiple": true, + "arguments": [ + { + "name": "field", + "type": "string" + }, + { + "name": "value", + "type": "string" + } + ] + } + ] + } + ], + "since": "8.0.0", + "group": "hash" + }, "HINCRBY": { "summary": "Increment the integer value of a hash field by the given number", "complexity": "O(1)", diff --git a/hack/cmds/gen.go b/hack/cmds/gen.go index fb23af18..c3d9091d 100644 --- a/hack/cmds/gen.go +++ b/hack/cmds/gen.go @@ -681,7 +681,7 @@ func toGoType(paramType string) string { return "string" case "double": return "float64" - case "integer", "posix time": + case "integer", "posix time", "unix-time": return "int64" case "unsigned integer": return "uint64" diff --git a/internal/cmds/gen_hash.go b/internal/cmds/gen_hash.go index b440300f..56d31309 100644 --- a/internal/cmds/gen_hash.go +++ b/internal/cmds/gen_hash.go @@ -408,6 +408,154 @@ func (c HgetallKey) Cache() Cacheable { return Cacheable{cs: c.cs, cf: uint16(c.cf), ks: c.ks} } +type Hgetdel Incomplete + +func (b Builder) Hgetdel() (c Hgetdel) { + c = Hgetdel{cs: get(), ks: b.ks} + c.cs.s = append(c.cs.s, "HGETDEL") + return c +} + +func (c Hgetdel) Key(key string) HgetdelKey { + if c.ks&NoSlot == NoSlot { + c.ks = NoSlot | slot(key) + } else { + c.ks = check(c.ks, slot(key)) + } + c.cs.s = append(c.cs.s, key) + return (HgetdelKey)(c) +} + +type HgetdelFieldsField Incomplete + +func (c HgetdelFieldsField) Field(field ...string) HgetdelFieldsField { + c.cs.s = append(c.cs.s, field...) + return c +} + +func (c HgetdelFieldsField) Build() Completed { + c.cs.Build() + return Completed{cs: c.cs, cf: uint16(c.cf), ks: c.ks} +} + +type HgetdelFieldsNumfields Incomplete + +func (c HgetdelFieldsNumfields) Field(field ...string) HgetdelFieldsField { + c.cs.s = append(c.cs.s, field...) + return (HgetdelFieldsField)(c) +} + +type HgetdelKey Incomplete + +func (c HgetdelKey) Numfields(numfields int64) HgetdelFieldsNumfields { + c.cs.s = append(c.cs.s, strconv.FormatInt(numfields, 10)) + return (HgetdelFieldsNumfields)(c) +} + +type Hgetex Incomplete + +func (b Builder) Hgetex() (c Hgetex) { + c = Hgetex{cs: get(), ks: b.ks} + c.cs.s = append(c.cs.s, "HGETEX") + return c +} + +func (c Hgetex) Key(key string) HgetexKey { + if c.ks&NoSlot == NoSlot { + c.ks = NoSlot | slot(key) + } else { + c.ks = check(c.ks, slot(key)) + } + c.cs.s = append(c.cs.s, key) + return (HgetexKey)(c) +} + +type HgetexExpirationMilliseconds Incomplete + +func (c HgetexExpirationMilliseconds) Numfields(numfields int64) HgetexFieldsNumfields { + c.cs.s = append(c.cs.s, strconv.FormatInt(numfields, 10)) + return (HgetexFieldsNumfields)(c) +} + +type HgetexExpirationPersist Incomplete + +func (c HgetexExpirationPersist) Numfields(numfields int64) HgetexFieldsNumfields { + c.cs.s = append(c.cs.s, strconv.FormatInt(numfields, 10)) + return (HgetexFieldsNumfields)(c) +} + +type HgetexExpirationSeconds Incomplete + +func (c HgetexExpirationSeconds) Numfields(numfields int64) HgetexFieldsNumfields { + c.cs.s = append(c.cs.s, strconv.FormatInt(numfields, 10)) + return (HgetexFieldsNumfields)(c) +} + +type HgetexExpirationUnixTimeMilliseconds Incomplete + +func (c HgetexExpirationUnixTimeMilliseconds) Numfields(numfields int64) HgetexFieldsNumfields { + c.cs.s = append(c.cs.s, strconv.FormatInt(numfields, 10)) + return (HgetexFieldsNumfields)(c) +} + +type HgetexExpirationUnixTimeSeconds Incomplete + +func (c HgetexExpirationUnixTimeSeconds) Numfields(numfields int64) HgetexFieldsNumfields { + c.cs.s = append(c.cs.s, strconv.FormatInt(numfields, 10)) + return (HgetexFieldsNumfields)(c) +} + +type HgetexFieldsField Incomplete + +func (c HgetexFieldsField) Field(field ...string) HgetexFieldsField { + c.cs.s = append(c.cs.s, field...) + return c +} + +func (c HgetexFieldsField) Build() Completed { + c.cs.Build() + return Completed{cs: c.cs, cf: uint16(c.cf), ks: c.ks} +} + +type HgetexFieldsNumfields Incomplete + +func (c HgetexFieldsNumfields) Field(field ...string) HgetexFieldsField { + c.cs.s = append(c.cs.s, field...) + return (HgetexFieldsField)(c) +} + +type HgetexKey Incomplete + +func (c HgetexKey) Seconds(seconds int64) HgetexExpirationSeconds { + c.cs.s = append(c.cs.s, "EX", strconv.FormatInt(seconds, 10)) + return (HgetexExpirationSeconds)(c) +} + +func (c HgetexKey) Milliseconds(milliseconds int64) HgetexExpirationMilliseconds { + c.cs.s = append(c.cs.s, "PX", strconv.FormatInt(milliseconds, 10)) + return (HgetexExpirationMilliseconds)(c) +} + +func (c HgetexKey) UnixTimeSeconds(unixTimeSeconds int64) HgetexExpirationUnixTimeSeconds { + c.cs.s = append(c.cs.s, "EXAT", strconv.FormatInt(unixTimeSeconds, 10)) + return (HgetexExpirationUnixTimeSeconds)(c) +} + +func (c HgetexKey) UnixTimeMilliseconds(unixTimeMilliseconds int64) HgetexExpirationUnixTimeMilliseconds { + c.cs.s = append(c.cs.s, "PXAT", strconv.FormatInt(unixTimeMilliseconds, 10)) + return (HgetexExpirationUnixTimeMilliseconds)(c) +} + +func (c HgetexKey) Persist() HgetexExpirationPersist { + c.cs.s = append(c.cs.s, "PERSIST") + return (HgetexExpirationPersist)(c) +} + +func (c HgetexKey) Numfields(numfields int64) HgetexFieldsNumfields { + c.cs.s = append(c.cs.s, strconv.FormatInt(numfields, 10)) + return (HgetexFieldsNumfields)(c) +} + type Hincrby Incomplete func (b Builder) Hincrby() (c Hincrby) { @@ -1157,6 +1305,191 @@ func (c HsetKey) FieldValue() HsetFieldValue { return (HsetFieldValue)(c) } +type Hsetex Incomplete + +func (b Builder) Hsetex() (c Hsetex) { + c = Hsetex{cs: get(), ks: b.ks} + c.cs.s = append(c.cs.s, "HSETEX") + return c +} + +func (c Hsetex) Key(key string) HsetexKey { + if c.ks&NoSlot == NoSlot { + c.ks = NoSlot | slot(key) + } else { + c.ks = check(c.ks, slot(key)) + } + c.cs.s = append(c.cs.s, key) + return (HsetexKey)(c) +} + +type HsetexConditionFnx Incomplete + +func (c HsetexConditionFnx) Seconds(seconds int64) HsetexExpirationSeconds { + c.cs.s = append(c.cs.s, "EX", strconv.FormatInt(seconds, 10)) + return (HsetexExpirationSeconds)(c) +} + +func (c HsetexConditionFnx) Milliseconds(milliseconds int64) HsetexExpirationMilliseconds { + c.cs.s = append(c.cs.s, "PX", strconv.FormatInt(milliseconds, 10)) + return (HsetexExpirationMilliseconds)(c) +} + +func (c HsetexConditionFnx) UnixTimeSeconds(unixTimeSeconds int64) HsetexExpirationUnixTimeSeconds { + c.cs.s = append(c.cs.s, "EXAT", strconv.FormatInt(unixTimeSeconds, 10)) + return (HsetexExpirationUnixTimeSeconds)(c) +} + +func (c HsetexConditionFnx) UnixTimeMilliseconds(unixTimeMilliseconds int64) HsetexExpirationUnixTimeMilliseconds { + c.cs.s = append(c.cs.s, "PXAT", strconv.FormatInt(unixTimeMilliseconds, 10)) + return (HsetexExpirationUnixTimeMilliseconds)(c) +} + +func (c HsetexConditionFnx) Keepttl() HsetexExpirationKeepttl { + c.cs.s = append(c.cs.s, "KEEPTTL") + return (HsetexExpirationKeepttl)(c) +} + +func (c HsetexConditionFnx) Numfields(numfields int64) HsetexFieldsNumfields { + c.cs.s = append(c.cs.s, strconv.FormatInt(numfields, 10)) + return (HsetexFieldsNumfields)(c) +} + +type HsetexConditionFxx Incomplete + +func (c HsetexConditionFxx) Seconds(seconds int64) HsetexExpirationSeconds { + c.cs.s = append(c.cs.s, "EX", strconv.FormatInt(seconds, 10)) + return (HsetexExpirationSeconds)(c) +} + +func (c HsetexConditionFxx) Milliseconds(milliseconds int64) HsetexExpirationMilliseconds { + c.cs.s = append(c.cs.s, "PX", strconv.FormatInt(milliseconds, 10)) + return (HsetexExpirationMilliseconds)(c) +} + +func (c HsetexConditionFxx) UnixTimeSeconds(unixTimeSeconds int64) HsetexExpirationUnixTimeSeconds { + c.cs.s = append(c.cs.s, "EXAT", strconv.FormatInt(unixTimeSeconds, 10)) + return (HsetexExpirationUnixTimeSeconds)(c) +} + +func (c HsetexConditionFxx) UnixTimeMilliseconds(unixTimeMilliseconds int64) HsetexExpirationUnixTimeMilliseconds { + c.cs.s = append(c.cs.s, "PXAT", strconv.FormatInt(unixTimeMilliseconds, 10)) + return (HsetexExpirationUnixTimeMilliseconds)(c) +} + +func (c HsetexConditionFxx) Keepttl() HsetexExpirationKeepttl { + c.cs.s = append(c.cs.s, "KEEPTTL") + return (HsetexExpirationKeepttl)(c) +} + +func (c HsetexConditionFxx) Numfields(numfields int64) HsetexFieldsNumfields { + c.cs.s = append(c.cs.s, strconv.FormatInt(numfields, 10)) + return (HsetexFieldsNumfields)(c) +} + +type HsetexExpirationKeepttl Incomplete + +func (c HsetexExpirationKeepttl) Numfields(numfields int64) HsetexFieldsNumfields { + c.cs.s = append(c.cs.s, strconv.FormatInt(numfields, 10)) + return (HsetexFieldsNumfields)(c) +} + +type HsetexExpirationMilliseconds Incomplete + +func (c HsetexExpirationMilliseconds) Numfields(numfields int64) HsetexFieldsNumfields { + c.cs.s = append(c.cs.s, strconv.FormatInt(numfields, 10)) + return (HsetexFieldsNumfields)(c) +} + +type HsetexExpirationSeconds Incomplete + +func (c HsetexExpirationSeconds) Numfields(numfields int64) HsetexFieldsNumfields { + c.cs.s = append(c.cs.s, strconv.FormatInt(numfields, 10)) + return (HsetexFieldsNumfields)(c) +} + +type HsetexExpirationUnixTimeMilliseconds Incomplete + +func (c HsetexExpirationUnixTimeMilliseconds) Numfields(numfields int64) HsetexFieldsNumfields { + c.cs.s = append(c.cs.s, strconv.FormatInt(numfields, 10)) + return (HsetexFieldsNumfields)(c) +} + +type HsetexExpirationUnixTimeSeconds Incomplete + +func (c HsetexExpirationUnixTimeSeconds) Numfields(numfields int64) HsetexFieldsNumfields { + c.cs.s = append(c.cs.s, strconv.FormatInt(numfields, 10)) + return (HsetexFieldsNumfields)(c) +} + +type HsetexFieldsDataField Incomplete + +func (c HsetexFieldsDataField) Value(value string) HsetexFieldsDataValue { + c.cs.s = append(c.cs.s, value) + return (HsetexFieldsDataValue)(c) +} + +type HsetexFieldsDataValue Incomplete + +func (c HsetexFieldsDataValue) Field(field string) HsetexFieldsDataField { + c.cs.s = append(c.cs.s, field) + return (HsetexFieldsDataField)(c) +} + +func (c HsetexFieldsDataValue) Build() Completed { + c.cs.Build() + return Completed{cs: c.cs, cf: uint16(c.cf), ks: c.ks} +} + +type HsetexFieldsNumfields Incomplete + +func (c HsetexFieldsNumfields) Field(field string) HsetexFieldsDataField { + c.cs.s = append(c.cs.s, field) + return (HsetexFieldsDataField)(c) +} + +type HsetexKey Incomplete + +func (c HsetexKey) Fnx() HsetexConditionFnx { + c.cs.s = append(c.cs.s, "FNX") + return (HsetexConditionFnx)(c) +} + +func (c HsetexKey) Fxx() HsetexConditionFxx { + c.cs.s = append(c.cs.s, "FXX") + return (HsetexConditionFxx)(c) +} + +func (c HsetexKey) Seconds(seconds int64) HsetexExpirationSeconds { + c.cs.s = append(c.cs.s, "EX", strconv.FormatInt(seconds, 10)) + return (HsetexExpirationSeconds)(c) +} + +func (c HsetexKey) Milliseconds(milliseconds int64) HsetexExpirationMilliseconds { + c.cs.s = append(c.cs.s, "PX", strconv.FormatInt(milliseconds, 10)) + return (HsetexExpirationMilliseconds)(c) +} + +func (c HsetexKey) UnixTimeSeconds(unixTimeSeconds int64) HsetexExpirationUnixTimeSeconds { + c.cs.s = append(c.cs.s, "EXAT", strconv.FormatInt(unixTimeSeconds, 10)) + return (HsetexExpirationUnixTimeSeconds)(c) +} + +func (c HsetexKey) UnixTimeMilliseconds(unixTimeMilliseconds int64) HsetexExpirationUnixTimeMilliseconds { + c.cs.s = append(c.cs.s, "PXAT", strconv.FormatInt(unixTimeMilliseconds, 10)) + return (HsetexExpirationUnixTimeMilliseconds)(c) +} + +func (c HsetexKey) Keepttl() HsetexExpirationKeepttl { + c.cs.s = append(c.cs.s, "KEEPTTL") + return (HsetexExpirationKeepttl)(c) +} + +func (c HsetexKey) Numfields(numfields int64) HsetexFieldsNumfields { + c.cs.s = append(c.cs.s, strconv.FormatInt(numfields, 10)) + return (HsetexFieldsNumfields)(c) +} + type Hsetnx Incomplete func (b Builder) Hsetnx() (c Hsetnx) { diff --git a/internal/cmds/gen_hash_test.go b/internal/cmds/gen_hash_test.go index fd6bb31b..a9f10040 100644 --- a/internal/cmds/gen_hash_test.go +++ b/internal/cmds/gen_hash_test.go @@ -23,6 +23,13 @@ func hash0(s Builder) { s.Hget().Key("1").Field("1").Cache() s.Hgetall().Key("1").Build() s.Hgetall().Key("1").Cache() + s.Hgetdel().Key("1").Numfields(1).Field("1").Field("1").Build() + s.Hgetex().Key("1").Seconds(1).Numfields(1).Field("1").Field("1").Build() + s.Hgetex().Key("1").Milliseconds(1).Numfields(1).Field("1").Field("1").Build() + s.Hgetex().Key("1").UnixTimeSeconds(1).Numfields(1).Field("1").Field("1").Build() + s.Hgetex().Key("1").UnixTimeMilliseconds(1).Numfields(1).Field("1").Field("1").Build() + s.Hgetex().Key("1").Persist().Numfields(1).Field("1").Field("1").Build() + s.Hgetex().Key("1").Numfields(1).Field("1").Field("1").Build() s.Hincrby().Key("1").Field("1").Increment(1).Build() s.Hincrbyfloat().Key("1").Field("1").Increment(1).Build() s.Hkeys().Key("1").Build() @@ -56,6 +63,24 @@ func hash0(s Builder) { s.Hscan().Key("1").Cursor(1).Novalues().Build() s.Hscan().Key("1").Cursor(1).Build() s.Hset().Key("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Hsetex().Key("1").Fnx().Seconds(1).Numfields(1).Field("1").Value("1").Field("1").Value("1").Build() + s.Hsetex().Key("1").Fnx().Milliseconds(1).Numfields(1).Field("1").Value("1").Build() + s.Hsetex().Key("1").Fnx().UnixTimeSeconds(1).Numfields(1).Field("1").Value("1").Build() + s.Hsetex().Key("1").Fnx().UnixTimeMilliseconds(1).Numfields(1).Field("1").Value("1").Build() + s.Hsetex().Key("1").Fnx().Keepttl().Numfields(1).Field("1").Value("1").Build() + s.Hsetex().Key("1").Fnx().Numfields(1).Field("1").Value("1").Build() + s.Hsetex().Key("1").Fxx().Seconds(1).Numfields(1).Field("1").Value("1").Build() + s.Hsetex().Key("1").Fxx().Milliseconds(1).Numfields(1).Field("1").Value("1").Build() + s.Hsetex().Key("1").Fxx().UnixTimeSeconds(1).Numfields(1).Field("1").Value("1").Build() + s.Hsetex().Key("1").Fxx().UnixTimeMilliseconds(1).Numfields(1).Field("1").Value("1").Build() + s.Hsetex().Key("1").Fxx().Keepttl().Numfields(1).Field("1").Value("1").Build() + s.Hsetex().Key("1").Fxx().Numfields(1).Field("1").Value("1").Build() + s.Hsetex().Key("1").Seconds(1).Numfields(1).Field("1").Value("1").Build() + s.Hsetex().Key("1").Milliseconds(1).Numfields(1).Field("1").Value("1").Build() + s.Hsetex().Key("1").UnixTimeSeconds(1).Numfields(1).Field("1").Value("1").Build() + s.Hsetex().Key("1").UnixTimeMilliseconds(1).Numfields(1).Field("1").Value("1").Build() + s.Hsetex().Key("1").Keepttl().Numfields(1).Field("1").Value("1").Build() + s.Hsetex().Key("1").Numfields(1).Field("1").Value("1").Build() s.Hsetnx().Key("1").Field("1").Value("1").Build() s.Hstrlen().Key("1").Field("1").Build() s.Hstrlen().Key("1").Field("1").Cache() From 0ef99d0bd7ac5b19c87556a8f1ca5a9a0844a00d Mon Sep 17 00:00:00 2001 From: Rueian Date: Thu, 10 Apr 2025 20:39:29 -0700 Subject: [PATCH 2/2] Generate new HGETDEL, HGETEX, HSETEX command builders Signed-off-by: Rueian --- hack/cmds/commands.json | 114 ++++++-------- internal/cmds/gen_hash.go | 279 +++++++++++++++++---------------- internal/cmds/gen_hash_test.go | 50 +++--- 3 files changed, 222 insertions(+), 221 deletions(-) diff --git a/hack/cmds/commands.json b/hack/cmds/commands.json index dddf6db4..4d82103b 100644 --- a/hack/cmds/commands.json +++ b/hack/cmds/commands.json @@ -3093,24 +3093,21 @@ "arguments": [ { "name": "key", - "type": "key", - "key_spec_index": 0 + "type": "key" }, { "name": "fields", - "token": "FIELDS", - "type": "block", - "arguments": [ - { - "name": "numfields", - "type": "integer" - }, - { - "name": "field", - "type": "string", - "multiple": true - } - ] + "type": "enum", + "enum": ["FIELDS"] + }, + { + "name": "numfields", + "type": "integer" + }, + { + "name": "field", + "type": "string", + "multiple": true } ], "since": "8.0.0", @@ -3122,8 +3119,7 @@ "arguments": [ { "name": "key", - "type": "key", - "key_spec_index": 0 + "type": "key" }, { "name": "expiration", @@ -3131,27 +3127,27 @@ "optional": true, "arguments": [ { - "name": "seconds", + "name": "EX", "type": "integer", "token": "EX" }, { - "name": "milliseconds", + "name": "PX", "type": "integer", "token": "PX" }, { - "name": "unix-time-seconds", + "name": "EXAT", "type": "unix-time", "token": "EXAT" }, { - "name": "unix-time-milliseconds", + "name": "PXAT", "type": "unix-time", "token": "PXAT" }, { - "name": "persist", + "name": "PERSIST", "type": "pure-token", "token": "PERSIST" } @@ -3159,19 +3155,17 @@ }, { "name": "fields", - "token": "FIELDS", - "type": "block", - "arguments": [ - { - "name": "numfields", - "type": "integer" - }, - { - "name": "field", - "type": "string", - "multiple": true - } - ] + "type": "enum", + "enum": ["FIELDS"] + }, + { + "name": "numfields", + "type": "integer" + }, + { + "name": "field", + "type": "string", + "multiple": true } ], "since": "8.0.0", @@ -3209,27 +3203,27 @@ "optional": true, "arguments": [ { - "name": "seconds", + "name": "EX", "type": "integer", "token": "EX" }, { - "name": "milliseconds", + "name": "PX", "type": "integer", "token": "PX" }, { - "name": "unix-time-seconds", + "name": "EXAT", "type": "unix-time", "token": "EXAT" }, { - "name": "unix-time-milliseconds", + "name": "PXAT", "type": "unix-time", "token": "PXAT" }, { - "name": "keepttl", + "name": "KEEPTTL", "type": "pure-token", "token": "KEEPTTL" } @@ -3237,29 +3231,23 @@ }, { "name": "fields", - "token": "FIELDS", - "type": "block", - "arguments": [ - { - "name": "numfields", - "type": "integer" - }, - { - "name": "data", - "type": "block", - "multiple": true, - "arguments": [ - { - "name": "field", - "type": "string" - }, - { - "name": "value", - "type": "string" - } - ] - } - ] + "type": "enum", + "enum": ["FIELDS"] + }, + { + "name": "numfields", + "type": "integer" + }, + { + "name": [ + "field", + "value" + ], + "type": [ + "string", + "string" + ], + "multiple": true } ], "since": "8.0.0", diff --git a/internal/cmds/gen_hash.go b/internal/cmds/gen_hash.go index 56d31309..20c199db 100644 --- a/internal/cmds/gen_hash.go +++ b/internal/cmds/gen_hash.go @@ -426,30 +426,37 @@ func (c Hgetdel) Key(key string) HgetdelKey { return (HgetdelKey)(c) } -type HgetdelFieldsField Incomplete +type HgetdelField Incomplete -func (c HgetdelFieldsField) Field(field ...string) HgetdelFieldsField { +func (c HgetdelField) Field(field ...string) HgetdelField { c.cs.s = append(c.cs.s, field...) return c } -func (c HgetdelFieldsField) Build() Completed { +func (c HgetdelField) Build() Completed { c.cs.Build() return Completed{cs: c.cs, cf: uint16(c.cf), ks: c.ks} } -type HgetdelFieldsNumfields Incomplete +type HgetdelFields Incomplete -func (c HgetdelFieldsNumfields) Field(field ...string) HgetdelFieldsField { - c.cs.s = append(c.cs.s, field...) - return (HgetdelFieldsField)(c) +func (c HgetdelFields) Numfields(numfields int64) HgetdelNumfields { + c.cs.s = append(c.cs.s, strconv.FormatInt(numfields, 10)) + return (HgetdelNumfields)(c) } type HgetdelKey Incomplete -func (c HgetdelKey) Numfields(numfields int64) HgetdelFieldsNumfields { - c.cs.s = append(c.cs.s, strconv.FormatInt(numfields, 10)) - return (HgetdelFieldsNumfields)(c) +func (c HgetdelKey) Fields() HgetdelFields { + c.cs.s = append(c.cs.s, "FIELDS") + return (HgetdelFields)(c) +} + +type HgetdelNumfields Incomplete + +func (c HgetdelNumfields) Field(field ...string) HgetdelField { + c.cs.s = append(c.cs.s, field...) + return (HgetdelField)(c) } type Hgetex Incomplete @@ -470,80 +477,80 @@ func (c Hgetex) Key(key string) HgetexKey { return (HgetexKey)(c) } -type HgetexExpirationMilliseconds Incomplete +type HgetexExpirationEx Incomplete -func (c HgetexExpirationMilliseconds) Numfields(numfields int64) HgetexFieldsNumfields { - c.cs.s = append(c.cs.s, strconv.FormatInt(numfields, 10)) - return (HgetexFieldsNumfields)(c) +func (c HgetexExpirationEx) Fields() HgetexFields { + c.cs.s = append(c.cs.s, "FIELDS") + return (HgetexFields)(c) } -type HgetexExpirationPersist Incomplete +type HgetexExpirationExat Incomplete -func (c HgetexExpirationPersist) Numfields(numfields int64) HgetexFieldsNumfields { - c.cs.s = append(c.cs.s, strconv.FormatInt(numfields, 10)) - return (HgetexFieldsNumfields)(c) +func (c HgetexExpirationExat) Fields() HgetexFields { + c.cs.s = append(c.cs.s, "FIELDS") + return (HgetexFields)(c) } -type HgetexExpirationSeconds Incomplete +type HgetexExpirationPersist Incomplete -func (c HgetexExpirationSeconds) Numfields(numfields int64) HgetexFieldsNumfields { - c.cs.s = append(c.cs.s, strconv.FormatInt(numfields, 10)) - return (HgetexFieldsNumfields)(c) +func (c HgetexExpirationPersist) Fields() HgetexFields { + c.cs.s = append(c.cs.s, "FIELDS") + return (HgetexFields)(c) } -type HgetexExpirationUnixTimeMilliseconds Incomplete +type HgetexExpirationPx Incomplete -func (c HgetexExpirationUnixTimeMilliseconds) Numfields(numfields int64) HgetexFieldsNumfields { - c.cs.s = append(c.cs.s, strconv.FormatInt(numfields, 10)) - return (HgetexFieldsNumfields)(c) +func (c HgetexExpirationPx) Fields() HgetexFields { + c.cs.s = append(c.cs.s, "FIELDS") + return (HgetexFields)(c) } -type HgetexExpirationUnixTimeSeconds Incomplete +type HgetexExpirationPxat Incomplete -func (c HgetexExpirationUnixTimeSeconds) Numfields(numfields int64) HgetexFieldsNumfields { - c.cs.s = append(c.cs.s, strconv.FormatInt(numfields, 10)) - return (HgetexFieldsNumfields)(c) +func (c HgetexExpirationPxat) Fields() HgetexFields { + c.cs.s = append(c.cs.s, "FIELDS") + return (HgetexFields)(c) } -type HgetexFieldsField Incomplete +type HgetexField Incomplete -func (c HgetexFieldsField) Field(field ...string) HgetexFieldsField { +func (c HgetexField) Field(field ...string) HgetexField { c.cs.s = append(c.cs.s, field...) return c } -func (c HgetexFieldsField) Build() Completed { +func (c HgetexField) Build() Completed { c.cs.Build() return Completed{cs: c.cs, cf: uint16(c.cf), ks: c.ks} } -type HgetexFieldsNumfields Incomplete +type HgetexFields Incomplete -func (c HgetexFieldsNumfields) Field(field ...string) HgetexFieldsField { - c.cs.s = append(c.cs.s, field...) - return (HgetexFieldsField)(c) +func (c HgetexFields) Numfields(numfields int64) HgetexNumfields { + c.cs.s = append(c.cs.s, strconv.FormatInt(numfields, 10)) + return (HgetexNumfields)(c) } type HgetexKey Incomplete -func (c HgetexKey) Seconds(seconds int64) HgetexExpirationSeconds { - c.cs.s = append(c.cs.s, "EX", strconv.FormatInt(seconds, 10)) - return (HgetexExpirationSeconds)(c) +func (c HgetexKey) Ex(ex int64) HgetexExpirationEx { + c.cs.s = append(c.cs.s, "EX", strconv.FormatInt(ex, 10)) + return (HgetexExpirationEx)(c) } -func (c HgetexKey) Milliseconds(milliseconds int64) HgetexExpirationMilliseconds { - c.cs.s = append(c.cs.s, "PX", strconv.FormatInt(milliseconds, 10)) - return (HgetexExpirationMilliseconds)(c) +func (c HgetexKey) Px(px int64) HgetexExpirationPx { + c.cs.s = append(c.cs.s, "PX", strconv.FormatInt(px, 10)) + return (HgetexExpirationPx)(c) } -func (c HgetexKey) UnixTimeSeconds(unixTimeSeconds int64) HgetexExpirationUnixTimeSeconds { - c.cs.s = append(c.cs.s, "EXAT", strconv.FormatInt(unixTimeSeconds, 10)) - return (HgetexExpirationUnixTimeSeconds)(c) +func (c HgetexKey) Exat(exat int64) HgetexExpirationExat { + c.cs.s = append(c.cs.s, "EXAT", strconv.FormatInt(exat, 10)) + return (HgetexExpirationExat)(c) } -func (c HgetexKey) UnixTimeMilliseconds(unixTimeMilliseconds int64) HgetexExpirationUnixTimeMilliseconds { - c.cs.s = append(c.cs.s, "PXAT", strconv.FormatInt(unixTimeMilliseconds, 10)) - return (HgetexExpirationUnixTimeMilliseconds)(c) +func (c HgetexKey) Pxat(pxat int64) HgetexExpirationPxat { + c.cs.s = append(c.cs.s, "PXAT", strconv.FormatInt(pxat, 10)) + return (HgetexExpirationPxat)(c) } func (c HgetexKey) Persist() HgetexExpirationPersist { @@ -551,9 +558,16 @@ func (c HgetexKey) Persist() HgetexExpirationPersist { return (HgetexExpirationPersist)(c) } -func (c HgetexKey) Numfields(numfields int64) HgetexFieldsNumfields { - c.cs.s = append(c.cs.s, strconv.FormatInt(numfields, 10)) - return (HgetexFieldsNumfields)(c) +func (c HgetexKey) Fields() HgetexFields { + c.cs.s = append(c.cs.s, "FIELDS") + return (HgetexFields)(c) +} + +type HgetexNumfields Incomplete + +func (c HgetexNumfields) Field(field ...string) HgetexField { + c.cs.s = append(c.cs.s, field...) + return (HgetexField)(c) } type Hincrby Incomplete @@ -1325,24 +1339,24 @@ func (c Hsetex) Key(key string) HsetexKey { type HsetexConditionFnx Incomplete -func (c HsetexConditionFnx) Seconds(seconds int64) HsetexExpirationSeconds { - c.cs.s = append(c.cs.s, "EX", strconv.FormatInt(seconds, 10)) - return (HsetexExpirationSeconds)(c) +func (c HsetexConditionFnx) Ex(ex int64) HsetexExpirationEx { + c.cs.s = append(c.cs.s, "EX", strconv.FormatInt(ex, 10)) + return (HsetexExpirationEx)(c) } -func (c HsetexConditionFnx) Milliseconds(milliseconds int64) HsetexExpirationMilliseconds { - c.cs.s = append(c.cs.s, "PX", strconv.FormatInt(milliseconds, 10)) - return (HsetexExpirationMilliseconds)(c) +func (c HsetexConditionFnx) Px(px int64) HsetexExpirationPx { + c.cs.s = append(c.cs.s, "PX", strconv.FormatInt(px, 10)) + return (HsetexExpirationPx)(c) } -func (c HsetexConditionFnx) UnixTimeSeconds(unixTimeSeconds int64) HsetexExpirationUnixTimeSeconds { - c.cs.s = append(c.cs.s, "EXAT", strconv.FormatInt(unixTimeSeconds, 10)) - return (HsetexExpirationUnixTimeSeconds)(c) +func (c HsetexConditionFnx) Exat(exat int64) HsetexExpirationExat { + c.cs.s = append(c.cs.s, "EXAT", strconv.FormatInt(exat, 10)) + return (HsetexExpirationExat)(c) } -func (c HsetexConditionFnx) UnixTimeMilliseconds(unixTimeMilliseconds int64) HsetexExpirationUnixTimeMilliseconds { - c.cs.s = append(c.cs.s, "PXAT", strconv.FormatInt(unixTimeMilliseconds, 10)) - return (HsetexExpirationUnixTimeMilliseconds)(c) +func (c HsetexConditionFnx) Pxat(pxat int64) HsetexExpirationPxat { + c.cs.s = append(c.cs.s, "PXAT", strconv.FormatInt(pxat, 10)) + return (HsetexExpirationPxat)(c) } func (c HsetexConditionFnx) Keepttl() HsetexExpirationKeepttl { @@ -1350,31 +1364,31 @@ func (c HsetexConditionFnx) Keepttl() HsetexExpirationKeepttl { return (HsetexExpirationKeepttl)(c) } -func (c HsetexConditionFnx) Numfields(numfields int64) HsetexFieldsNumfields { - c.cs.s = append(c.cs.s, strconv.FormatInt(numfields, 10)) - return (HsetexFieldsNumfields)(c) +func (c HsetexConditionFnx) Fields() HsetexFields { + c.cs.s = append(c.cs.s, "FIELDS") + return (HsetexFields)(c) } type HsetexConditionFxx Incomplete -func (c HsetexConditionFxx) Seconds(seconds int64) HsetexExpirationSeconds { - c.cs.s = append(c.cs.s, "EX", strconv.FormatInt(seconds, 10)) - return (HsetexExpirationSeconds)(c) +func (c HsetexConditionFxx) Ex(ex int64) HsetexExpirationEx { + c.cs.s = append(c.cs.s, "EX", strconv.FormatInt(ex, 10)) + return (HsetexExpirationEx)(c) } -func (c HsetexConditionFxx) Milliseconds(milliseconds int64) HsetexExpirationMilliseconds { - c.cs.s = append(c.cs.s, "PX", strconv.FormatInt(milliseconds, 10)) - return (HsetexExpirationMilliseconds)(c) +func (c HsetexConditionFxx) Px(px int64) HsetexExpirationPx { + c.cs.s = append(c.cs.s, "PX", strconv.FormatInt(px, 10)) + return (HsetexExpirationPx)(c) } -func (c HsetexConditionFxx) UnixTimeSeconds(unixTimeSeconds int64) HsetexExpirationUnixTimeSeconds { - c.cs.s = append(c.cs.s, "EXAT", strconv.FormatInt(unixTimeSeconds, 10)) - return (HsetexExpirationUnixTimeSeconds)(c) +func (c HsetexConditionFxx) Exat(exat int64) HsetexExpirationExat { + c.cs.s = append(c.cs.s, "EXAT", strconv.FormatInt(exat, 10)) + return (HsetexExpirationExat)(c) } -func (c HsetexConditionFxx) UnixTimeMilliseconds(unixTimeMilliseconds int64) HsetexExpirationUnixTimeMilliseconds { - c.cs.s = append(c.cs.s, "PXAT", strconv.FormatInt(unixTimeMilliseconds, 10)) - return (HsetexExpirationUnixTimeMilliseconds)(c) +func (c HsetexConditionFxx) Pxat(pxat int64) HsetexExpirationPxat { + c.cs.s = append(c.cs.s, "PXAT", strconv.FormatInt(pxat, 10)) + return (HsetexExpirationPxat)(c) } func (c HsetexConditionFxx) Keepttl() HsetexExpirationKeepttl { @@ -1382,70 +1396,63 @@ func (c HsetexConditionFxx) Keepttl() HsetexExpirationKeepttl { return (HsetexExpirationKeepttl)(c) } -func (c HsetexConditionFxx) Numfields(numfields int64) HsetexFieldsNumfields { - c.cs.s = append(c.cs.s, strconv.FormatInt(numfields, 10)) - return (HsetexFieldsNumfields)(c) -} - -type HsetexExpirationKeepttl Incomplete - -func (c HsetexExpirationKeepttl) Numfields(numfields int64) HsetexFieldsNumfields { - c.cs.s = append(c.cs.s, strconv.FormatInt(numfields, 10)) - return (HsetexFieldsNumfields)(c) +func (c HsetexConditionFxx) Fields() HsetexFields { + c.cs.s = append(c.cs.s, "FIELDS") + return (HsetexFields)(c) } -type HsetexExpirationMilliseconds Incomplete +type HsetexExpirationEx Incomplete -func (c HsetexExpirationMilliseconds) Numfields(numfields int64) HsetexFieldsNumfields { - c.cs.s = append(c.cs.s, strconv.FormatInt(numfields, 10)) - return (HsetexFieldsNumfields)(c) +func (c HsetexExpirationEx) Fields() HsetexFields { + c.cs.s = append(c.cs.s, "FIELDS") + return (HsetexFields)(c) } -type HsetexExpirationSeconds Incomplete +type HsetexExpirationExat Incomplete -func (c HsetexExpirationSeconds) Numfields(numfields int64) HsetexFieldsNumfields { - c.cs.s = append(c.cs.s, strconv.FormatInt(numfields, 10)) - return (HsetexFieldsNumfields)(c) +func (c HsetexExpirationExat) Fields() HsetexFields { + c.cs.s = append(c.cs.s, "FIELDS") + return (HsetexFields)(c) } -type HsetexExpirationUnixTimeMilliseconds Incomplete +type HsetexExpirationKeepttl Incomplete -func (c HsetexExpirationUnixTimeMilliseconds) Numfields(numfields int64) HsetexFieldsNumfields { - c.cs.s = append(c.cs.s, strconv.FormatInt(numfields, 10)) - return (HsetexFieldsNumfields)(c) +func (c HsetexExpirationKeepttl) Fields() HsetexFields { + c.cs.s = append(c.cs.s, "FIELDS") + return (HsetexFields)(c) } -type HsetexExpirationUnixTimeSeconds Incomplete +type HsetexExpirationPx Incomplete -func (c HsetexExpirationUnixTimeSeconds) Numfields(numfields int64) HsetexFieldsNumfields { - c.cs.s = append(c.cs.s, strconv.FormatInt(numfields, 10)) - return (HsetexFieldsNumfields)(c) +func (c HsetexExpirationPx) Fields() HsetexFields { + c.cs.s = append(c.cs.s, "FIELDS") + return (HsetexFields)(c) } -type HsetexFieldsDataField Incomplete +type HsetexExpirationPxat Incomplete -func (c HsetexFieldsDataField) Value(value string) HsetexFieldsDataValue { - c.cs.s = append(c.cs.s, value) - return (HsetexFieldsDataValue)(c) +func (c HsetexExpirationPxat) Fields() HsetexFields { + c.cs.s = append(c.cs.s, "FIELDS") + return (HsetexFields)(c) } -type HsetexFieldsDataValue Incomplete +type HsetexFieldValue Incomplete -func (c HsetexFieldsDataValue) Field(field string) HsetexFieldsDataField { - c.cs.s = append(c.cs.s, field) - return (HsetexFieldsDataField)(c) +func (c HsetexFieldValue) FieldValue(field string, value string) HsetexFieldValue { + c.cs.s = append(c.cs.s, field, value) + return c } -func (c HsetexFieldsDataValue) Build() Completed { +func (c HsetexFieldValue) Build() Completed { c.cs.Build() return Completed{cs: c.cs, cf: uint16(c.cf), ks: c.ks} } -type HsetexFieldsNumfields Incomplete +type HsetexFields Incomplete -func (c HsetexFieldsNumfields) Field(field string) HsetexFieldsDataField { - c.cs.s = append(c.cs.s, field) - return (HsetexFieldsDataField)(c) +func (c HsetexFields) Numfields(numfields int64) HsetexNumfields { + c.cs.s = append(c.cs.s, strconv.FormatInt(numfields, 10)) + return (HsetexNumfields)(c) } type HsetexKey Incomplete @@ -1460,24 +1467,24 @@ func (c HsetexKey) Fxx() HsetexConditionFxx { return (HsetexConditionFxx)(c) } -func (c HsetexKey) Seconds(seconds int64) HsetexExpirationSeconds { - c.cs.s = append(c.cs.s, "EX", strconv.FormatInt(seconds, 10)) - return (HsetexExpirationSeconds)(c) +func (c HsetexKey) Ex(ex int64) HsetexExpirationEx { + c.cs.s = append(c.cs.s, "EX", strconv.FormatInt(ex, 10)) + return (HsetexExpirationEx)(c) } -func (c HsetexKey) Milliseconds(milliseconds int64) HsetexExpirationMilliseconds { - c.cs.s = append(c.cs.s, "PX", strconv.FormatInt(milliseconds, 10)) - return (HsetexExpirationMilliseconds)(c) +func (c HsetexKey) Px(px int64) HsetexExpirationPx { + c.cs.s = append(c.cs.s, "PX", strconv.FormatInt(px, 10)) + return (HsetexExpirationPx)(c) } -func (c HsetexKey) UnixTimeSeconds(unixTimeSeconds int64) HsetexExpirationUnixTimeSeconds { - c.cs.s = append(c.cs.s, "EXAT", strconv.FormatInt(unixTimeSeconds, 10)) - return (HsetexExpirationUnixTimeSeconds)(c) +func (c HsetexKey) Exat(exat int64) HsetexExpirationExat { + c.cs.s = append(c.cs.s, "EXAT", strconv.FormatInt(exat, 10)) + return (HsetexExpirationExat)(c) } -func (c HsetexKey) UnixTimeMilliseconds(unixTimeMilliseconds int64) HsetexExpirationUnixTimeMilliseconds { - c.cs.s = append(c.cs.s, "PXAT", strconv.FormatInt(unixTimeMilliseconds, 10)) - return (HsetexExpirationUnixTimeMilliseconds)(c) +func (c HsetexKey) Pxat(pxat int64) HsetexExpirationPxat { + c.cs.s = append(c.cs.s, "PXAT", strconv.FormatInt(pxat, 10)) + return (HsetexExpirationPxat)(c) } func (c HsetexKey) Keepttl() HsetexExpirationKeepttl { @@ -1485,9 +1492,15 @@ func (c HsetexKey) Keepttl() HsetexExpirationKeepttl { return (HsetexExpirationKeepttl)(c) } -func (c HsetexKey) Numfields(numfields int64) HsetexFieldsNumfields { - c.cs.s = append(c.cs.s, strconv.FormatInt(numfields, 10)) - return (HsetexFieldsNumfields)(c) +func (c HsetexKey) Fields() HsetexFields { + c.cs.s = append(c.cs.s, "FIELDS") + return (HsetexFields)(c) +} + +type HsetexNumfields Incomplete + +func (c HsetexNumfields) FieldValue() HsetexFieldValue { + return (HsetexFieldValue)(c) } type Hsetnx Incomplete diff --git a/internal/cmds/gen_hash_test.go b/internal/cmds/gen_hash_test.go index a9f10040..7f3fedc9 100644 --- a/internal/cmds/gen_hash_test.go +++ b/internal/cmds/gen_hash_test.go @@ -23,13 +23,13 @@ func hash0(s Builder) { s.Hget().Key("1").Field("1").Cache() s.Hgetall().Key("1").Build() s.Hgetall().Key("1").Cache() - s.Hgetdel().Key("1").Numfields(1).Field("1").Field("1").Build() - s.Hgetex().Key("1").Seconds(1).Numfields(1).Field("1").Field("1").Build() - s.Hgetex().Key("1").Milliseconds(1).Numfields(1).Field("1").Field("1").Build() - s.Hgetex().Key("1").UnixTimeSeconds(1).Numfields(1).Field("1").Field("1").Build() - s.Hgetex().Key("1").UnixTimeMilliseconds(1).Numfields(1).Field("1").Field("1").Build() - s.Hgetex().Key("1").Persist().Numfields(1).Field("1").Field("1").Build() - s.Hgetex().Key("1").Numfields(1).Field("1").Field("1").Build() + s.Hgetdel().Key("1").Fields().Numfields(1).Field("1").Field("1").Build() + s.Hgetex().Key("1").Ex(1).Fields().Numfields(1).Field("1").Field("1").Build() + s.Hgetex().Key("1").Px(1).Fields().Numfields(1).Field("1").Field("1").Build() + s.Hgetex().Key("1").Exat(1).Fields().Numfields(1).Field("1").Field("1").Build() + s.Hgetex().Key("1").Pxat(1).Fields().Numfields(1).Field("1").Field("1").Build() + s.Hgetex().Key("1").Persist().Fields().Numfields(1).Field("1").Field("1").Build() + s.Hgetex().Key("1").Fields().Numfields(1).Field("1").Field("1").Build() s.Hincrby().Key("1").Field("1").Increment(1).Build() s.Hincrbyfloat().Key("1").Field("1").Increment(1).Build() s.Hkeys().Key("1").Build() @@ -63,24 +63,24 @@ func hash0(s Builder) { s.Hscan().Key("1").Cursor(1).Novalues().Build() s.Hscan().Key("1").Cursor(1).Build() s.Hset().Key("1").FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() - s.Hsetex().Key("1").Fnx().Seconds(1).Numfields(1).Field("1").Value("1").Field("1").Value("1").Build() - s.Hsetex().Key("1").Fnx().Milliseconds(1).Numfields(1).Field("1").Value("1").Build() - s.Hsetex().Key("1").Fnx().UnixTimeSeconds(1).Numfields(1).Field("1").Value("1").Build() - s.Hsetex().Key("1").Fnx().UnixTimeMilliseconds(1).Numfields(1).Field("1").Value("1").Build() - s.Hsetex().Key("1").Fnx().Keepttl().Numfields(1).Field("1").Value("1").Build() - s.Hsetex().Key("1").Fnx().Numfields(1).Field("1").Value("1").Build() - s.Hsetex().Key("1").Fxx().Seconds(1).Numfields(1).Field("1").Value("1").Build() - s.Hsetex().Key("1").Fxx().Milliseconds(1).Numfields(1).Field("1").Value("1").Build() - s.Hsetex().Key("1").Fxx().UnixTimeSeconds(1).Numfields(1).Field("1").Value("1").Build() - s.Hsetex().Key("1").Fxx().UnixTimeMilliseconds(1).Numfields(1).Field("1").Value("1").Build() - s.Hsetex().Key("1").Fxx().Keepttl().Numfields(1).Field("1").Value("1").Build() - s.Hsetex().Key("1").Fxx().Numfields(1).Field("1").Value("1").Build() - s.Hsetex().Key("1").Seconds(1).Numfields(1).Field("1").Value("1").Build() - s.Hsetex().Key("1").Milliseconds(1).Numfields(1).Field("1").Value("1").Build() - s.Hsetex().Key("1").UnixTimeSeconds(1).Numfields(1).Field("1").Value("1").Build() - s.Hsetex().Key("1").UnixTimeMilliseconds(1).Numfields(1).Field("1").Value("1").Build() - s.Hsetex().Key("1").Keepttl().Numfields(1).Field("1").Value("1").Build() - s.Hsetex().Key("1").Numfields(1).Field("1").Value("1").Build() + s.Hsetex().Key("1").Fnx().Ex(1).Fields().Numfields(1).FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Hsetex().Key("1").Fnx().Px(1).Fields().Numfields(1).FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Hsetex().Key("1").Fnx().Exat(1).Fields().Numfields(1).FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Hsetex().Key("1").Fnx().Pxat(1).Fields().Numfields(1).FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Hsetex().Key("1").Fnx().Keepttl().Fields().Numfields(1).FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Hsetex().Key("1").Fnx().Fields().Numfields(1).FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Hsetex().Key("1").Fxx().Ex(1).Fields().Numfields(1).FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Hsetex().Key("1").Fxx().Px(1).Fields().Numfields(1).FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Hsetex().Key("1").Fxx().Exat(1).Fields().Numfields(1).FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Hsetex().Key("1").Fxx().Pxat(1).Fields().Numfields(1).FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Hsetex().Key("1").Fxx().Keepttl().Fields().Numfields(1).FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Hsetex().Key("1").Fxx().Fields().Numfields(1).FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Hsetex().Key("1").Ex(1).Fields().Numfields(1).FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Hsetex().Key("1").Px(1).Fields().Numfields(1).FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Hsetex().Key("1").Exat(1).Fields().Numfields(1).FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Hsetex().Key("1").Pxat(1).Fields().Numfields(1).FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Hsetex().Key("1").Keepttl().Fields().Numfields(1).FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() + s.Hsetex().Key("1").Fields().Numfields(1).FieldValue().FieldValue("1", "1").FieldValue("1", "1").Build() s.Hsetnx().Key("1").Field("1").Value("1").Build() s.Hstrlen().Key("1").Field("1").Build() s.Hstrlen().Key("1").Field("1").Cache()