Yii2 + Redis 作为数据库

2023-12-30

我想使用 Yii2 和 redis 作为数据库。

到目前为止,我从这里获得了 Yii2 的 Redis ActiveRecord 类。

link1 https://github.com/yiisoft/yii2-redis

link2 http://www.yiiframework.com/doc-2.0/ext-redis-index.html

但是,我遇到了问题。为什么这个类在 Redis 中添加任何内容作为哈希???

在上面我找不到它插入数据的模式。我添加一个用户,它会在下面添加一个用户user:xxx命名空间和另一条记录s:user:xxx等等,但没有一个主题具有我在属性中定义的任何字段!仅包含 ID。

我知道Key-value类型数据库和RDBMS是不同的,也知道如何在Redis中实现类似记录的关系,但我不知道为什么它只会保存ID。

到目前为止,我找不到任何使用 redis ActiveRecords 的示例。

这里有一个,但还不够好。

所以这是我的主要问题:如何在 YII2 中使用活动记录和不同的数据类型向 Redis 添加数据?

如果 Active Records 无法做到这一点,最好的解决方案是什么?在这种情况下

另一个问题:是否可以使用模型来代替并编写我自己的 model::save() 方法?以这种速度,最好的数据验证解决方案是什么?

实际上我想制作一个电报机器人,所以我应该获取消息并在 RabitMQ 中发送它们,并在工作程序中获取数据,执行该过程并将结果保存到 Redis,最后通过 RabitMQ 将响应发送给用户。

因此,我需要进行大量验证,当然还有身份验证,然后保存、选择、范围和保存以设置列表以及这个和那个......

我想要一种好方法来制作模型或活动记录或验证、保存和检索数据到 Redis 和 Yii2 的正确解决方案。


Redis DB 可以声明为cache组件或作为数据库连接 or both.

当它被声明为cache成分 (使用yii/redis/缓存 http://www.yiiframework.com/doc-2.0/yii-redis-cache.html)可以在该组件中访问它来存储核心价值 pairs 如图所示 http://www.yiiframework.com/doc-2.0/guide-caching-data.html.

$cache = Yii::$app->cache;

// try retrieving $data from cache
$data = $cache->get($key);
// store $data in cache so that it can be retrieved next time
$cache->set($key, $data);

// one more example:
$access_token = Yii::$app->security->generateRandomString();
$cache->add(
    // key
    $access_token, 
    // data (can also be an array)
    [
        'id' => Yii::$app->user->identity->id
        'name' => Yii::$app->user->identity->name
    ], 
    // expires
    60*60*3
);

其他组件也可能开始使用它来缓存建议,例如session如果配置为这样做或喜欢yii\web\UrlManager http://www.yiiframework.com/doc-2.0/yii-web-urlmanager.html默认情况下,它将尝试在配置文件下定义的任何有效缓存机制中缓存生成的 URL 规则cache组件如所解释here http://www.yiiframework.com/doc-2.0/yii-web-urlmanager.html#%24cache-detail。因此,在这种情况下找到一些与您不同的存储数据是正常的。

当 Redis 被声明为数据库连接就像您提供的链接中一样,这意味着使用yii\redis\连接 http://www.yiiframework.com/doc-2.0/yii-redis-connection.html类,你可以让你的模型扩展它的\yii\redis\ActiveRecord http://www.yiiframework.com/doc-2.0/yii-redis-activerecord.html类与 Yii 中的任何其他 ActiveRecord 模型一样。到目前为止我知道的唯一区别是您需要手动定义属性,因为没有可解析 NoSQL 数据库的数据库模式。然后只需像任何其他 ActiveRecord 模型一样定义您的规则、场景、关系、事件……:

class Customer extends \yii\redis\ActiveRecord
{
    public function attributes()
    {
        return ['id', 'name', 'address', 'registration_date'];
    }

    public function rules()
    {
        return [
            ['name', 'required'],
            ['name', 'string', 'min' => 3, 'max' => 12, 'on' => 'register'],
            ...
        ];
    }

    public function attributeLabels() {...}
    ...
}

所有可用的方法包括save(), validate(), getErrors(), ... 可以找到here http://www.yiiframework.com/doc-2.0/yii-redis-activerecord.html并且应该像任何其他 ActiveRecord 类一样使用如官方指南所示 http://www.yiiframework.com/doc-2.0/guide-db-active-record.html.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Yii2 + Redis 作为数据库 的相关文章

  • 如何将数据库查询的行转换为 XML 文件?

    我正在开发一个 Delphi 应用程序 该应用程序需要从一段工作中获取行并将其转换为单个 XML 文件 以便上传到第三方 Web 服务 有没有可用的组件或库可以做到这一点 如果不是 那么构建 DB2XML 转换器的最佳代码方法是什么 我注意
  • 如何使 Redis 缓存中数据层次结构(树)的部分内容无效

    我有一些产品数据 需要在 Redis 缓存中存储多个版本 数据由 JSON 序列化对象组成 获取普通 基本 数据的过程很昂贵 将其定制为不同版本的过程也很昂贵 因此我想缓存所有版本以尽可能进行优化 数据结构看起来像这样 BaseProduc
  • 如何记录数据库代码以查看数据库对象之间的依赖关系? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想为我的宠物项目编写文档 我的 PostgreSQL 数据库中有 30 个表 近 50 个视图和大约 30 个函数 存储过程 我想看
  • 使用 ActiveAndroid 库存储 HashMap

    我有一堂课 Table name Control public class Control extends Model Column private String name Column private Map
  • 为 java 项目创建安装

    我创建了一个 java 项目 它使用数据库来检索 编辑和保存数据 我使用 Netbeans 完成了该项目 现在我想在该项目之外创建一个安装 为此 我想包含与项目一起安装的数据库 我用来连接数据库的代码是 Class forName com
  • Scala 使用的 Redis 客户端库建议

    我正在计划使用 Scala 中的 Redis 实例进行一些工作 并正在寻找有关使用哪些客户端库的建议 理想情况下 如果存在一个好的库 我希望有一个为 Scala 而不是 Java 设计的库 但如果现在这是更好的方法 那么仅使用 Java 客
  • 如何将彼此“接近”的纬度/经度点分组?

    我有一个用户提交的纬度 经度点的数据库 并且正在尝试将 接近 点分组在一起 接近 是相对的 但目前看来约为 500 英尺 起初 我似乎只能按前 3 个小数位具有相同纬度 经度的行进行分组 大约是一个 300x300 的盒子 了解当您远离赤道
  • 我可以根据多列删除数据库重复项吗?

    I 不久前问过这个问题 https stackoverflow com questions 4952250 how to delete duplicates from a database table based on a certain
  • 如何使用 SQL 通过表示多级订单的 varchar 字段正确排序?

    我不太喜欢数据库 我发现在查询上出现以下问题SQL服务器数据库旧的遗留应用程序的 我声明不幸的是我无法更改数据库结构 字段类型 这非常难看 我有以下情况 SELECT Sottocategoria IdSottocategoria IdCa
  • 计算 mysql 数据库行数的最佳方法

    在遇到 mysql 查询加载时间慢的问题后 我现在正在寻找计算行数的最佳方法 我曾经愚蠢地使用过mysql num rows 函数来做到这一点 现在意识到这是最糟糕的方法 我实际上正在制作一个分页来用 PHP 制作页面 我找到了几种计算行数
  • SSDT SQL Server 数据库项目中用于架构比较的命令行/API?

    在 Visual Studio 2012 中 我们有Schema Compare http msdn microsoft com en us library hh272690 28v vs 103 29 aspx in SSDT http
  • postgresql 不同的不工作

    我使用以下代码从数据库获取值 但是当我编写这段代码时 测试看看问题出在哪里 我注意到查询没有从数据库中获取不同的值 这是查询 select distinct ca id as id acc name as accName pIsu name
  • 子文件夹和关系中的 Rails 模型

    我在自动加载的文件夹中组织了一些轨道模型 config autoload paths Dir Rails root join app models 我可以直接使用所有模型 例如Image first file name 但是当我尝试通过关系
  • 在laravel中组合两个不同的无关系数据库表查询进行分页

    我的数据库中有两个不相关的表 我需要将它们合并 以便我可以将其放在我的搜索视图中 但我不知道是否可能 这是我的代码 这news and season表不相关 但它们具有相似的列 我试图将其放入一个对象中以便于分页 是否可以 search r
  • 如何在Redis中只保存一个数据库?

    我是 Redis 新手 有一个与备份相关的问题 目前 我有一个实例在 Windows 服务器上运行 在这个实例中 我当前有一项 工作 将数据存储在一个数据库中 我不想备份这些数据 我必须创造一份新工作 我的第一个想法是将数据存储在另一个数据
  • ALTER TABLE 语句与 FOREIGN KEY 约束冲突

    为什么要添加外键tblDomare表导致此错误 ALTER TABLE 语句与 FOREIGN KEY 约束 FK tblDomare PersN 5F7E2DAC 冲突 冲突发生在数据库 almu0004 表 dbo tblBana 列
  • yii2 中的自动完成

    在 Yii2 中 我希望当用户开始输入时 我的输入字段之一能够自动完成 下面是我的代码 它使用Jui Autocomplete 这是行不通的 当我打印我的数组时 我就像 Array 1 gt abc 2 gt xyz 4 gt pqr
  • Redis+Docker+Django - 错误 111 连接被拒绝

    我正在尝试使用 Redis 作为使用 Docker Compose 的 Django 项目的 Celery 代理 我无法弄清楚我到底做错了什么 但尽管控制台日志消息告诉我 Redis 正在运行并接受连接 事实上 当我这样做时 docker
  • SQLite 仅当值不为空时更新列

    Query UPDATE item table SET field1 field1 spanish field2 field2 spanish 问题 我怎样才能更新field1 with field1 spanish ONLY if fie
  • 如何修复 pgbackups 错误:备份 url 无效?

    我正在尝试按照迁移到 Cedar 的说明进行操作 除了我进行了重大重写 因此这不是前一个应用程序的分支 而是一个单独的分支 并停留在数据库迁移步骤 我安装了 pgbackup 和 heroku postgresql 插件 但得到了这个结果

随机推荐