Skip to content

Remove Duplicate Code and Hardcoded Strings in RedisTemplate #3274

@youngsuk-kim

Description

@youngsuk-kim

Summary

Extract duplicated precision command fallback logic from RedisTemplate into a reusable utility class with type-safe enum constants.

Current Problem

The same try-catch pattern is duplicated across 3 methods in RedisTemplate:

// This appears in expire(), expireAt(), and getExpire()
try {
    return connection.pExpire(rawKey, rawTimeout);
} catch (Exception ignore) {
    return connection.expire(rawKey, TimeoutUtils.toSeconds(timeout, unit));
}

------- after -------

Create a utility class PrecisionApiHelper with an enum for type-safe command names:

// New approach - single reusable method
return doWithKeys(connection -> PrecisionApiHelper.withPrecisionFallback(
    PrecisionCommand.PEXPIRE,
    () -> connection.pExpire(rawKey, rawTimeout),
    () -> connection.expire(rawKey, TimeoutUtils.toSeconds(timeout, unit))
));

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions