配置
优质
小牛编辑
133浏览
2023-12-01
GitHub: https://github.com/swoft-cloud/swoft-redis
安装
Redis 组件需独立安装:
composer require swoft/redis
基础配置
Redis 配置与数据库配置相同,位于 app/bean.php
文件,配置的 redis
也是一个 bean
对象。
return [
'redis' => [
'class' => Swoft\Redis\RedisDb::class,
'host' => '127.0.0.1',
'port' => 6379,
'password' => '',
'database' => 0,
'retryInterval' => 10,
'readTimeout' => 0,
'timeout' => 10,
'option' => [
'prefix' => 'Swoft',
'serializer' => Redis::SERIALIZER_PHP
]
]
]
配置项说明:
class
:Redis 驱动类。默认为 Swoft Redis 驱动,自定义时需指定,参考:host
:Redis 连接地址,默认为127.0.0.1
port
:Redis 连接端口,默认为6379
password
:Redis 连接密码,默认为空database
:指定 Redis 库,默认为0
retryInterval
:重试间隔,默认为10
秒readTimeout
:读取超时时间,默认为0
秒,永不超时timeout
:连接超时时间,默认为0
秒,永不超时option
:Redis 额外配置prefix
:存储前缀,默认为空serializer
:序列器,支持以下四种方式。不使用请设置为Redis::SERIALIZER_NONE
或0
。Redis::SERIALIZER_PHP
:PHP 默认序列器Redis::SERIALIZER_IGBINARY
:需安装 Igbinary 扩展并启用Redis::SERIALIZER_MSGPACK
:需安装 MessagePack 扩展并启用Redis::SERIALIZER_JSON
:需安装 Json 扩展(一般情况下默认已安装并启用)
集群配置
集群配置与基础配置同样配置于 app/bean.php
文件。集群配置增加了 clusters
,连接机制会优先使用 集群配置,不存在集群配置时才会使用的普通配置。
'redis' => [
'class' => Swoft\Redis\RedisDb::class,
'option' => [
'timeout' => 3,
'persistent' => true
],
'clusters' => [
[
'host' => '127.0.0.1',
'port' => 6379,
'password' => '123456',
'database' => 1,
'prefix' => 'Swoft',
'read_timeout' => 10
]
]
]
配置项说明:
class
:Redis 驱动类。默认为 Swoft Redis 驱动,自定义时需指定,参考option
:集群配置项timeout
:连接超时时间,默认为0
秒persistent
:是否启用持久化连接,默认为false
不启用
clusters
:集群节点host
:Redis 连接地址port
:Redis 连接端口password
:Redis 连接密码database
:Redis 库prefix
:存储前缀read_timeout
:读取超时时间
集群不存在序列化配置。
连接池配置
连接池适合需使用不同的 Redis 库或不同节点等场景。连接池的配置同样在 app/bean.php
文件。
集群连接池配置
'redis-clusters' => [
'class' => Swoft\Redis\RedisDb::class,
'option' => [
'timeout' => 10,
'persistent' => true
],
'clusters' => [
[
'host' => '127.0.0.1',
'port' => 6379,
'password' => '123456',
'database' => 1,
'prefix' => 'Swoft-Clusters',
'read_timeout' => 1
]
]
],
'redis.clusters-pool' => [
'class' => Swoft\Redis\Pool::class,
'redisDb' => bean('redis-clusters'),
'minActive' => 10,
'maxActive' => 20,
'maxWait' => 0,
'maxWaitTime' => 0,
'maxIdleTime' => 40
]
连接池配置项说明:
class
:连接池驱动类,仅自定义时需指定。默认为 Swoft 连接池驱动redisDb
:指定 Redis 配置minActive
:最少连接数maxActive
:最大连接数maxWait
:最大等待连接数,默认为0
无限制maxWaitTime
:连接最大等待时间,默认为0
秒无限制maxIdleTime
:连接最大空闲时间,单位秒
集群连接池运用示例:
Redis::connection('redis.clusters-pool')->get($key);
普通连接池配置
'redis-2' => [
'class' => Swoft\Redis\RedisDb::class,
'host' => '10.0.0.2',
'port' => 6379,
'database' => 1,
'retryInterval' => 10,
'readTimeout' => 0,
'timeout' => 2,
'option' => [
'prefix' => 'Swoft',
'serializer' => Redis::SERIALIZER_PHP
]
],
'redis.pool-2' => [
'class' => Swoft\Redis\Pool::class,
'redisDb' => bean('redis-2'),
'minActive' => 10,
'maxActive' => 20,
'maxWait' => 0,
'maxWaitTime' => 0,
'maxIdleTime' => 60,
]
连接池配置项说明:
class
:连接池驱动类,仅自定义时需指定。默认为 Swoft 连接池驱动redisDb
:指定 Redis 配置minActive
:最少连接数maxActive
:最大连接数maxWait
:最大等待连接数,默认为0
无限制maxWaitTime
:连接最大等待时间,默认为0
秒无限制maxIdleTime
:连接最大空闲时间,单位秒
更换默认连接池中的连接配置:
'redis.pool' => [
'class' => Swoft\Redis\Pool::class,
'redisDb' => bean('redis-custom')
]
之后对 Redis 后的操作所使用的连接为 redis-custom
:
Redis::set($key, ['name' => 'Swoft']);