【问题标题】:Is there already a Redis data access framework for Dart?Dart 是否已经有 Redis 数据访问框架?
【发布时间】:2014-02-06 20:20:24
【问题描述】:

我的服务器端代码在Dart 上运行,目前通过redis_client 使用Redis 作为数据存储。

大多数情况下,我会保留原始数据类型,例如整数和字符串。但是,我也有一些业务对象,例如 User,理想情况下我也希望将它们存储在 Redis 中。

当然,Redis 是一个键值对存储,而不是像 MongoDB 这样的成熟文档数据库。于是我开始编写自己的序列化和持久化逻辑——例如,User 的简单 getter:

  import 'dart:convert';

  ...

  Future<User> GetUser(String userGuid)
  {
    var userKey = "userGuid:" + userGuid.toString();
    return redisClient.get(userKey).then((String value) {
      return new User.fromJSON(value);      
    });      
  }

在我继续为我的所有业务实体手工制作整个持久性逻辑之前 - 是否已经存在某种我应该知道的 Redis/Dart 数据访问包,类似于例如redis_orm(红宝石)?

如果没有,我可能会自己写。

(不想称它为 ORM,因为 Redis != 关系型 - 但实际上这就是我正在寻找的)

【问题讨论】:

  • 我还不知道任何 Dart 并且我不熟悉它和 Redis 的 OM 框架...但是如果您要自己动手并自己编写代码,请制作请务必查看 Redis 的 Hashes 以快速存储类似 JSON 的对象。
  • 即使是 Object to Hash 或 JSON to Hash 库也可以工作。 ORM 会很漂亮。 ;p

标签: redis dart dart-io


【解决方案1】:

我们在工作中使用 Java Hibernate + Dart,

为此我为客户端制作了一个开源库:https://github.com/frankpepermans/dorm

服务器端实现不是开源的,但是 Hibernate 不是必需的,任何 ORM 类型都可以,客户端通过 JSON 进行通信,因此您需要一个可以处理 JSON 数据并且可以处理/接收循环的适配器引用(通过 Dorm,您可以使用 JSON 结构内的指针来指定循环引用)。

服务器还需要生成代表实体的 Dart 类文件。

但是你可以有例如: - 复合键 - 实体继承 - 数据类型的自定义处理(即日期时间) - 自定义数据类型(即一切都是 Observable,默认情况下列表是 ObservableList,但如果需要,您可以告诉反序列化器使用自定义列表类型) - 支持注释

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 2011-08-12
    • 2011-01-05
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    相关资源
    最近更新 更多