redis - 是否已有用于 Dart 的 Redis 数据访问框架?

标签 redis dart dart-io

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

大多数情况下,我会保留原始数据类型,例如整数和字符串。但是,我也有一些业务对象,例如 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 ( ruby )?

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

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

最佳答案

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

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

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

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

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

关于redis - 是否已有用于 Dart 的 Redis 数据访问框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21613205/

相关文章:

redis - 使用 memtier_benchmark;错过了每一个关键

Redis TTL 与 "allkeys-lru"驱逐政策

dart - 如何在 Cloud Firestore 中为将要更改的文档路径创建复合键

io - 如何在Dart中使用新的Streams API进行stdin.close()?

dart - 如何使用 Dart http_server :VirtualDirectory

Redis 主服务器与从服务器读取和故障转移

redis - 我应该在 web 节点上运行 haproxy for db 和 redis sentinel 吗?

flutter - 如何在 flutter 折线图X轴上添加字符串范围?

dart - Flutter:根据 Future 的快照采取行动

dart - 如何使用 Dart 列出目录的内容?