我有带有Redis缓存和MySql数据库的Spring Boot应用程序。我为列入黑名单的令牌创建了POJO类:
@Getter
@Setter
public class TokenBlackList implements Serializable {
@Id
private String jti;
private Long userId;
public TokenBlackList(String jti, Long userId) {
this.jti = jti;
this.userId = userId;
}
}
现在,jti字段是由UUID生成的(它获得重复的可能性很小),再加上userId(我想),它们形成了唯一的标识符。现在是否足以将令牌存储在缓存中(我使用Redis一个),还是应该将其持久化到MySQL数据库?如果是,我应该使用字符串jti和long userId的组合值作为MySQL中的唯一标识符,还是应该为此目的创建其他人工ID?我是否还应保证将列入黑名单的令牌放入缓存并将其持久保存到数据库中的原子操作?