talleu/php-redis-om

Redis 的 PHP 对象映射库

v0.2.8 2024-09-22 17:05 UTC

README

Build Status PHPStan Packagist Version GitHub codecov.io Code Coverage

php-redis-om 🗄️

PHP 的 Redis 对象映射器。

Redis® 的对象映射器,旨在为 PHP 开发者提供直观且熟悉的接口以与 Redis 交互。

特性 🛠️

  • 类似 Doctrine 的方法和架构
  • 易于与现有 PHP 应用程序集成
  • 与 Redis® 的高性能和可伸缩性
  • 支持 Redis JSON 模块
  • 自动生成架构
  • 搜索和查询功能

要求 ⚙️

  • PHP 8.2 或更高版本
  • Redis 4.0 或更高版本
  • Redisearch 模块(安装
  • php-redis 扩展或 Predis 库
  • Redis JSON 模块(可选)
  • Composer

支持的类型 ✅

  • 标量(字符串、整数、浮点数、布尔值)
  • DateTimeImmutable
  • DateTime
  • 数组及嵌套数组
  • 对象及嵌套对象
  • stdClass

安装 📝

通过 Composer 安装库

composer require talleu/php-redis-om

根据您的配置,使用 phpredis 或 Predis

基本用法 🎯

将 RedisOm 属性添加到您的类中,以将其映射到 Redis 架构

<?php 

use Talleu\RedisOm\Om\Mapping as RedisOm;

#[RedisOm\Entity]
class User
{
    #[RedisOm\Id]
    #[RedisOm\Property]
    public int $id;

    #[RedisOm\Property(index:true)]
    public string $name;

    #[RedisOm\Property]
    public \DateTimeImmutable $createdAt;
}

将 RedisOm 属性添加到您的类之后,您必须运行以下命令以创建类的 Redis 架构(默认路径为 ./src

vendor/bin/redisMigration <YOUR DIRECTORY PATH>

然后您可以使用 ObjectManager 将对象持久化到 Redis

<?php

use Talleu\RedisOm\Om\RedisObjectManager;

$user = new User()
$user->id = 1;
$user->name = 'John Doe';

// Persist the object in redis
$objectManager = new RedisObjectManager();
$objectManager->persist($user);
$objectManager->flush();

🥳 恭喜,您的 PHP 对象现在已注册在 Redis 中!

现在您可以使用 Object Manager 提供的仓库(或直接使用对象管理器)在任何地方检索您的用户

// Retrieve the object from redis 
$user = $objectManager->find(User::class, 1);
$user = $objectManager->getRepository(User::class)->find(1);
$user = $objectManager->getRepository(User::class)->findOneBy(['name' => 'John Doe']);

// Retrieve a collection of objects
$users = $objectManager->getRepository(User::class)->findAll();
$users = $objectManager->getRepository(User::class)->findBy(['name' => 'John Doe'], ['createdAt' => 'DESC'], 10);

高级文档 📚