redis的key键设计(善用枚举类)

redis的key键设计(善用枚举类)
枚举类特点
枚举类特点: 	
	1:枚举类构造器只能是私有
	2:枚举类当定义完成之后,实例个数固定
	4:enumclassinterface的地位一样
	5:使用enum定义的枚举类默认继承了java.lang.Enum,而不是继承Object类,枚举类可以实现一个或多个接口。
	6:枚举类的所有实例都必须放在第一行展示,不需使用new 关键字,不需显式调用构造器。自动添加public static final修饰。
	7:使用enum定义、非抽象的枚举类默认使用final修饰,不可以被继承。
	8:剩下操作跟普通操作一模一样	
	
	枚举类更加直观,类型安全。使用静态常量会有以下几个缺陷:
  1.类型不安全:若一个方法中要求传入季节这个参数,用常量的话,形参就是int类型,开发者传入任意类型的int类型值就行,但是如果是枚举类型的话,就只能传入枚举类中包含的对象。

  2.没有命名空间:开发者要在命名的时候以SEASON_开头,这样另外一个开发者再看这段代码的时候,才知道这四个常量分别代表季节。
枚举类(与普通类基本一样,定义对象时,少写了一些代码)
@Getter
public enum MyDate {
    DATE1("date1", 1L),
    DATE2("date2", 2L),
    DATE3("date3", 3L);
    //注意,枚举类中如果要贴@Setter需要贴在字段上
    @Setter
    private String prefix;
    @Setter
    private Long time;
    private MyDate(String prefix, Long time) {
        this.prefix = prefix;
        this.time = time;
    }
    public String join(String value) {
        return value;
    }
}
普通类
@Getter
public class MyDate2 {
    public static final MyDate2 DATE1 = new MyDate2("date1", 1L);
    public static final MyDate2 DATE2 = new MyDate2("date2", 2L);
    public static final MyDate2 DATE3 = new MyDate2("date3", 3L);

    @Setter
    private String prefix;
    @Setter
    private Long time;
    private MyDate2(String prefix, Long time) {
        this.prefix = prefix;
        this.time = time;
    }
    public String join(String value) {
        return value;
    }
}
redis中的key键设计
@Getter
public enum RedisKeys {
    VERIFY_CODE("verify_code", Consts.VERIFY_CODE_VAI_TIME * 60L),
    USER_LOGIN_TOKEN("user_login_token", Consts.USER_INFO_TOKEN_VAI_TIME * 60L);
    //相当于下面写法
    //public static final RedisKeys VERIFY_CODE
    // =new RedisKeys("verify_code", Consts.VERIFY_CODE_VAI_TIME * 60L);
    private String prefix;
    private Long time;

    private RedisKeys(String prefix, Long time) {
        this.prefix = prefix;
        this.time = time;
    }

    //用于拼接key
    public String join(String... values) {
        StringBuilder sb = new StringBuilder();
        sb.append(prefix);
        for (String value : values) {
            sb.append(":").append(value);
        }
        return sb.toString();
    }
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值