应该使用什么方法来管理Java项目中的Redis密钥

时间:2018-01-15 18:49:21

标签: java data-structures redis architecture software-design

在redis项目中,当项目越来越大时,键的数量也会增加。我更喜欢将所有按键放在一个中央位置,并在需要的地方使用它们。

我将所有密钥生成过程保存在一个名为RedisKeys的类中,并将其与静态方法一起使用。

以下是一个例子:

 public static String USER_PREFIX = "usr";

    public static String getUserKeyTemplate() {
        return USER_PREFIX + ":@id:json";
    }

    public static String getUserKey(String id) {
        return USER_PREFIX + ":" + id + ":json";
    }

    public static String getUserListKey() {
        return USER_PREFIX;
    }

    public static String getUserNickSetKey() {
        return USER_PREFIX + "set";
    }

    public static String getPasswordKey(String email) {
        return USER_PREFIX + "mail:" + email + ":pass";
    }

    public static String getUserIdFromEmailKey(String email) {
        return USER_PREFIX + "mail:" + email + ":uid";
    }

    public static String getUserKey(int userId) {
        return getUserKey(userId + "");
    }


    public static String getUserNameKey(String userName) {
        return USER_PREFIX + "name:" + userName + ":uid";
    }

给定方法表示将用于用户操作的所有键。例如,如果我需要让Redis获取用户密码,我会执行以下操作:

String key = RedisKeys.getPasswordKey("test@test.com");

key变量的值为usr:mail:test@test.com:pass,然后我就可以向Redis发送一个GET命令。

但是,你可以看到它看起来太难看了。类似Enum的方法听起来不错,但键不是常量值。它们作为模板生成正确的密钥。

您提供了哪种方法来更好地管理动态密钥生成密钥?

0 个答案:

没有答案