talleu / php-redis-om
Redis 的 PHP 对象映射库
v0.2.8
2024-09-22 17:05 UTC
Requires
- php: >=8.2
- ext-json: *
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.57
- phpstan/phpstan: ^1.11
- phpunit/phpunit: ^11.0
- symfony/var-dumper: ^7.0
Suggests
- ext-redis: To use the php extension for Redis (phpredis)
- predis/predis: To use Predis as a Redis PHP client
README
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);