ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

在 PHP/Hyperf 项目中替代 Redis

2024-05-21 13:03:16  阅读:576  来源: 互联网

标签:




Redis 许可证


最近,Redis 获得了公共许可证(AGPL),并获得了可以使用的软件修改许可证,并且 Redis 已在 AGPL 术语中广泛发行。这对于构建 Redis 的原始产品和修改阿尔古玛来说非常重要,它可以与社区中的其他组件进行修改。

Redis 基础许可证的新模型是新许可证:Redis 源可用许可证(RSAL) 和Redis Commons Clause。 RSAL 允许访问 Redis 的源代码,但对其使用有限制。 Redis Commons Clause是 RSAL 的一个附加条款,它对附加限制、在确定的上下文中使用商业软件的优惠、商业许可的许可是必需的。


替代品


所有这些都需要重新编写代码,取决于格式,不影响项目的编写。 Para evitar os Problemas mencionados anteriormente, apresento o Valkey。

确认了 Redis 的一个分叉的基础,包括其徽标、实现逻辑以及消息。 “pulo do gato” 与许可类型有关,允许通过 a Copyright (c) 2024-present, Valkey contributorse进行商业化Copyright (c) 2006-2020, Salvatore Sanfilippo。


实施


马斯和集市? PHP 程序是什么?

我展示了 Hyperf 框架的使用示例,但实际上阻碍了 Laravel、Symfony 或使用 Redis 连接器的框架的实现。

当要docker-compose.yml提取图像时,可以使用以下应用程序valkey/valkey容器Hyperf:

version: "3"

name: redis-to-valkey

services:
  hyperf-valkey:
    build: ./
    container_name: hyperf-valkey
    ports:
      - 9501:9501
    depends_on:
      - valkey
    restart: always

  valkey:
    container_name: valkey
    image: valkey/valkey
    ports:
      - 6379:6379

后端hyperf-valkey是基于 Dockerfile 构建的(也可以安装redis-php扩展接口):

FROM php:8.2

RUN apt-get update && apt-get install --no-install-recommends -y \
    wget \
    vim \
    git \
    unzip

RUN apt-get update \
    && apt-get install --no-install-recommends -y \
    libzip-dev \
    libcurl4-openssl-dev \
    libssl-dev \
    libpq-dev \
    libjpeg-dev \
    libpng-dev \
    libfreetype6-dev \
    g++ \
    libaio-dev \
    libicu-dev

RUN curl -sS https://getcomposer.org/installer | php -- \
    --install-dir=/usr/local/bin \
    --filename=composer

RUN docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/ \
    && pecl install redis \
    && printf "no\nyes\nno\nyes\n" | pecl install swoole \
    && echo "swoole.use_shortname = Off" >> /usr/local/etc/php/conf.d/swoole.ini \
    && docker-php-ext-install \
    pcntl \
    gd \
    && docker-php-ext-enable \
    redis \
    swoole

EXPOSE 9501

Após isso,通过bashou remote containerse crie o projeto 访问容器:

composer create-project hyperf/hyperf-skeleton

没有问题Do you want to use Redis Client?,选择y



没有 arquivo .env,altere as chaves REDIS para:

REDIS_HOST=valkey
REDIS_AUTH=(null)
REDIS_PORT=6379
REDIS_DB=0

因此,Valkey 连接到 Hyperf 项目并结束。要使用带有 Valkey 的缓存功能,我们可以访问IndexController.php并替换以下代码中的现有内容:

<?php

declare(strict_types=1);

namespace App\Controller;

use Hyperf\Redis\Redis as Valkey;

class IndexController extends AbstractController
{
    public function __construct(protected Valkey $valkey)
    {
    }

    public function index()
    {
        $content = 'hello valkey!';
        $key = 'cache';
        $this->valkey->set($key, $content);

        return [$this->valkey->get($key)];
    }
}

启动应用程序 com php bin/hyperf.php start,访问http://127.0.0.1:9501,然后返回:


考虑因素


与使用 Redis 的其他项目一样,它是主机 Redis 服务 Valkey 的替代品(通过容器,例如)。此外,Laravel 项目还提供了逻辑学和图书馆的使用predis/predis。

对于命名和责任的理想问题,请使用 Valkey 特定的系列包,并在较长的时间内对特定的修改进行验证,以与 Redis 项目等效。 Contudo,一个呈现嵌套艺术和生活的解决方案。

标签:
来源:

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有