Skip to content
Merged
Show file tree
Hide file tree
Changes from 35 commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
962252d
Merge commit from fork
samdark Jun 5, 2025
d5b89cb
release version 2.0.20
samdark Jun 5, 2025
0a90a54
prepare for next release
samdark Jun 5, 2025
bce389e
update tests
antonshevelev Jun 27, 2025
cb795ed
predis conn
antonshevelev Jun 27, 2025
5dfa1cf
predis standalone and sentinel
antonshevelev Jul 1, 2025
721fad7
ConnectionInterface
antonshevelev Jul 1, 2025
ddd8467
ConnectionInterface
antonshevelev Jul 1, 2025
9d8d059
fix test
antonshevelev Jul 2, 2025
6a1e916
PredisConnection
antonshevelev Jul 2, 2025
a16bbf6
predis on supported replicas
antonshevelev Jul 2, 2025
c48ee8a
code style
antonshevelev Jul 2, 2025
e5f0a66
del
antonshevelev Jul 2, 2025
8d709a3
comments
antonshevelev Jul 2, 2025
a7dcd7d
docs
antonshevelev Jul 2, 2025
5f4fef3
build
antonshevelev Jul 2, 2025
8f2a33b
build
antonshevelev Jul 2, 2025
fbadba2
build
antonshevelev Jul 2, 2025
8a389fc
build
antonshevelev Jul 2, 2025
3296606
build
antonshevelev Jul 2, 2025
631ef1b
build
antonshevelev Jul 2, 2025
f635042
build
antonshevelev Jul 2, 2025
abe55a7
build
antonshevelev Jul 2, 2025
285e192
build
antonshevelev Jul 2, 2025
351fa25
build
antonshevelev Jul 2, 2025
3f489e3
build
antonshevelev Jul 2, 2025
73a2312
fix test
antonshevelev Jul 2, 2025
f8d0a92
fix test
antonshevelev Jul 2, 2025
9cc9efb
remove test
antonshevelev Jul 2, 2025
76fcc88
fix test
antonshevelev Jul 2, 2025
9a318ee
returned and fix testConnectionTimeout
antonshevelev Jul 2, 2025
c002b14
comment
antonshevelev Jul 3, 2025
a192ce2
fix
antonshevelev Jul 3, 2025
04d54d2
Merge branch '22' into yii2-predis
antonshevelev Jul 3, 2025
5d0e4a1
fix tests
antonshevelev Jul 3, 2025
582264e
Update docs/guide-ja/README.md
antonshevelev Jul 8, 2025
649c010
Update docs/guide-ru/topics-predis-cache.md
antonshevelev Jul 8, 2025
952d60a
Update docs/guide-ru/topics-predis-session.md
antonshevelev Jul 8, 2025
aa6743b
Update docs/guide-ru/predis.md
antonshevelev Jul 8, 2025
faf8173
Update docs/guide/README.md
antonshevelev Jul 8, 2025
8407d90
translation of guide
antonshevelev Jul 8, 2025
9fb3962
upd guide
antonshevelev Jul 8, 2025
3b22ac8
remove php.ini
antonshevelev Jul 8, 2025
0745170
upd tests
antonshevelev Jul 8, 2025
4f4a01a
upd CommandDecorator
antonshevelev Jul 8, 2025
eb4e18a
upd
antonshevelev Jul 8, 2025
c0ed9d9
upd readme
antonshevelev Jul 8, 2025
c9a1ed3
upd changelog
antonshevelev Jul 8, 2025
80646e1
fix test
antonshevelev Jul 8, 2025
6070b6d
Update docs/guide/predis.md
samdark Jul 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 9 additions & 42 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,49 +31,16 @@ jobs:
- ubuntu-latest

php:
- 8.1
- 8.2
- 8.3
- 8.4

redis:
- 6
- 7
- 8

services:
redis:
image: redis:${{ matrix.redis }}
ports:
- 6379:6379
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=5
- "8.1"
- "8.2"
- "8.3"
- "8.4"

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Install PHP with extensions
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: curl, intl, redis
ini-values: date.timezone='UTC'
tools: composer:v2, pecl

- name: Install dependencies with Composer
run: composer update --prefer-dist --no-interaction --no-progress --optimize-autoloader

- name: Run tests with phpunit.
if: matrix.php != '8.1'
run: vendor/bin/phpunit --colors=always

- name: Run tests with phpunit and generate coverage.
if: matrix.php == '8.1'
run: vendor/bin/phpunit --coverage-clover=coverage.xml --colors=always
uses: actions/checkout@v2

- name: Upload coverage to Codecov.
if: matrix.php == '8.1'
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./coverage.xml
- name: PHP tests for PHP ${{ matrix.php }}
run: |
ls -al
make test-sentinel v=${{ matrix.php }}
9 changes: 8 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,16 @@
Yii Framework 2 redis extension Change Log
==========================================

2.0.20 under development
2.0.21 under development
------------------------

- no changes in this release.


2.0.20 June 05, 2025
--------------------

- Bug CVE-2025-48493: Prevent logging `AUTH` parameters when `YII_DEBUG` is off (samdark)
- Bug #270: Prevent null parameter on `mb_strlen` to avoid PHP 8.4 implicity nullable types deprecation (tehmaestro)


Expand Down
12 changes: 12 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,15 @@ clean:
docker rm $(shell cat tests/dockerids/redis)
rm tests/dockerids/redis

test-sentinel:
make build
PHP_VERSION=$(filter-out $@,$(MAKECMDGOALS)) docker compose -f tests/docker/docker-compose.yml build --pull yii2-redis-php
PHP_VERSION=$(filter-out $@,$(MAKECMDGOALS)) docker compose -f tests/docker/docker-compose.yml up -d
PHP_VERSION=$(filter-out $@,$(MAKECMDGOALS)) docker compose -f tests/docker/docker-compose.yml exec yii2-redis-php sh -c "composer update && vendor/bin/phpunit --coverage-clover=coverage.clover"

build: ## Build an image from a docker-compose file. Params: {{ v=8.1 }}. Default latest PHP 8.1
PHP_VERSION=$(filter-out $@,$(v)) docker compose -f tests/docker/docker-compose.yml up -d --build

down: ## Stop and remove containers, networks
docker compose -f tests/docker/docker-compose.yml down

5 changes: 3 additions & 2 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,12 @@
],
"require": {
"php": ">=8.1",
"yiisoft/yii2": "22.0.x-dev",
"ext-openssl": "*",
"yiisoft/yii2": "22.0.x-dev"
"predis/predis": "^3.0"
},
"require-dev": {
"phpunit/phpunit": "^9.6"
"phpunit/phpunit": "9.*"
},
"autoload": {
"psr-4": { "yii\\redis\\": "src" }
Expand Down
1 change: 1 addition & 0 deletions docs/guide-ja/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ Yii 2 Redis キャッシュ、セッションおよびアクティブレコー
--------

* [インストール](installation.md)
* [Поддержка predis](predis.md)

使用方法
--------
Expand Down
71 changes: 71 additions & 0 deletions docs/guide-ja/predis.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
Predis для Redis Cache, Session и ActiveRecord
===============================================
## Конфигурирование приложения

Чтобы использовать это расширение, вам необходимо настроить класс [[yii\redis\predis\PredisConnection]] в конфигурации вашего приложения:

> [!WARNING]
> Класс yii\redis\predis\PredisConnection поддерживает подключение redis-cluster, но не даёт поддержки интерфейсов компонентов *cache*, *session*, *ActiveRecord*, *mutex*
### standalone
```php
return [
//....
'components' => [
'redis' => [
'class' => 'yii\redis\predis\PredisConnection',
'parameters' => 'tcp://redis:6379',
'options' => [
'parameters' => [
'password' => 'secret', // Or NULL
'database' => 0,
'persistent' => true,
'async_connect' => true,
'read_write_timeout' => 0.1,
],
],
],
]
];
```
### sentinel
```php
return [
//....
'components' => [
'redis' => [
'class' => 'yii\redis\predis\PredisConnection',
'parameters' => [
'tcp://redis-node-1:26379',
'tcp://redis-node-2:26379',
'tcp://redis-node-3:26379',
],
'options' => [
'parameters' => [
'password' => 'secret', // Or NULL
'database' => 0,
'persistent' => true,
'async_connect' => true,
'read_write_timeout' => 0.1,
],
],
],
]
];
```

> Больше информации можно о конфигурации подключения и опциях можно получить в документации <a href="https://github.com/predis/predis">predis</a>.
Это обеспечивает базовый доступ к redis-хранилищу через компонент приложения `redis`:

```php
Yii::$app->redis->set('mykey', 'some value');
echo Yii::$app->redis->get('mykey');
```

Дополнительно
-----------------

* [Использование компонента Cache с predis](topics-predis-cache.md)
* [Использование компонента Session с predis](topics-predis-session.md)

51 changes: 51 additions & 0 deletions docs/guide-ja/topics-predis-cache.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
Использование компонента Cache в месте с predis
=========================

Чтобы использовать компонент `Cache`, в дополнение к настройке соединения, как описано в разделе [predis](predis.md), вам также нужно настроить компонент `cache` как [[yii\redis\Cache]]:

```php
return [
//....
'components' => [
// ...
'redis' => [
'class' => 'yii\redis\predis\PredisConnection',
'parameters' => 'tcp://redis:6379',
// ...
],
'cache' => [
'class' => 'yii\redis\Cache',
],
]
];
```

Если вы используете только кеш redis (т.е. не используете его ActiveRecord или Session), вы также можете настроить параметры соединения в пределах кеш-компонента (в этом случае необходимо настроить конфигурационный компонент подключения):

```php
return [
//....
'components' => [
// ...
'cache' => [
'class' => 'yii\redis\Cache',
'redis' => [
'class' => 'yii\redis\predis\PredisConnection',
'parameters' => 'tcp://redis:6379',
// ...
],
],
]
];
```

Кэш предоставляет все методы [[yii\caching\CacheInterface]]. Если вы хотите получить доступ к определенным redis методам, которые не присутствуют
в интерфейсе, вы можете использовать их через [[yii\redis\Cache::$redis]], который является экземпляром [[yii\redis\Connection]]:

```php
Yii::$app->cache->redis->hset('mykey', 'somefield', 'somevalue');
Yii::$app->cache->redis->hget('mykey', 'somefield');
...
```

Смотри [[yii\redis\Connection]] для получения полного списка доступных методов.
40 changes: 40 additions & 0 deletions docs/guide-ja/topics-predis-session.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
Использование компонента Session в месте с predis
===========================

Чтобы использовать компонент `Session`, в дополнение к настройке соединения, как описано в разделе [predis](predis.md), вам также нужно настроить компонент `session` как [[yii\redis\Session]]:

```php
return [
//....
'components' => [
// ...
'redis' => [
'class' => 'yii\redis\predis\PredisConnection',
'parameters' => 'tcp://redis:6379',
// ...
],
'session' => [
'class' => 'yii\redis\Session',
],
]
];
```

Если вы используете только redis сессии (т.е. не используете его ActiveRecord или Cache), вы также можете настроить параметры соединения в компоненте сеанса (в этом случае не нужно настраивать компонент приложения подключения):

```php
return [
//....
'components' => [
// ...
'session' => [
'class' => 'yii\redis\Session',
'redis' => [
'class' => 'yii\redis\predis\PredisConnection',
'parameters' => 'tcp://redis:6379',
// ...
],
],
]
];
```
1 change: 1 addition & 0 deletions docs/guide-pt-BR/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ Iniciando
---------------

* [Instalação](installation.md)
* [Поддержка predis](predis.md)

Uso
-----
Expand Down
71 changes: 71 additions & 0 deletions docs/guide-pt-BR/predis.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
Predis для Redis Cache, Session и ActiveRecord
===============================================
## Конфигурирование приложения

Чтобы использовать это расширение, вам необходимо настроить класс [[yii\redis\predis\PredisConnection]] в конфигурации вашего приложения:

> [!WARNING]
> Класс yii\redis\predis\PredisConnection поддерживает подключение redis-cluster, но не даёт поддержки интерфейсов компонентов *cache*, *session*, *ActiveRecord*, *mutex*
### standalone
```php
return [
//....
'components' => [
'redis' => [
'class' => 'yii\redis\predis\PredisConnection',
'parameters' => 'tcp://redis:6379',
'options' => [
'parameters' => [
'password' => 'secret', // Or NULL
'database' => 0,
'persistent' => true,
'async_connect' => true,
'read_write_timeout' => 0.1,
],
],
],
]
];
```
### sentinel
```php
return [
//....
'components' => [
'redis' => [
'class' => 'yii\redis\predis\PredisConnection',
'parameters' => [
'tcp://redis-node-1:26379',
'tcp://redis-node-2:26379',
'tcp://redis-node-3:26379',
],
'options' => [
'parameters' => [
'password' => 'secret', // Or NULL
'database' => 0,
'persistent' => true,
'async_connect' => true,
'read_write_timeout' => 0.1,
],
],
],
]
];
```

> Больше информации можно о конфигурации подключения и опциях можно получить в документации <a href="https://github.com/predis/predis">predis</a>.
Это обеспечивает базовый доступ к redis-хранилищу через компонент приложения `redis`:

```php
Yii::$app->redis->set('mykey', 'some value');
echo Yii::$app->redis->get('mykey');
```

Дополнительно
-----------------

* [Использование компонента Cache с predis](topics-predis-cache.md)
* [Использование компонента Session с predis](topics-predis-session.md)

Loading