Redis缓存适配器
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 4.4,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
Redis缓存适配器
另请参阅
本文解释了当在任何PHP应用程序中使用缓存作为独立组件时,如何配置Redis适配器。读了ob娱乐下载Symfony Cache配置文章,如果您在Symfony应用程序中使用它。ob娱乐下载
该适配器使用一个(或多个)将值存储在内存中复述,服务器实例。
不像APCu适配器,与Memcached适配器,不局限于当前服务器的共享内存;您可以独立于PHP环境存储内容。还可以使用服务器集群来提供冗余和/或故障转移。
谨慎
要求:至少一个复述,服务器必须安装并运行才能使用此适配器。此外,此适配器需要实现兼容的扩展或库\复述,
,\ RedisArray
,RedisCluster
,或\ Predis
.
该适配器需要一个复述,,RedisArray,RedisCluster,或Predis作为第一个参数传递的实例。命名空间和默认缓存生存期可以作为第二个和第三个参数传递:
12 3 4 5 6 7 8 9 10 11 12 13 14 15
使用ob娱乐下载\组件\缓存\适配器\RedisAdapter;$缓存=新RedisAdapter (//存储到Redis系统的有效连接的对象\复述,$redisConnection,//存储在这个缓存中的项的键前缀字符串$名称空间=”,//未定义缓存项的默认生存期(秒)//自己的生命周期,值为0会导致项目无限期地存储(例如://直到RedisAdapter::clear()被调用或者服务器被清除$defaultLifetime=0);
配置连接
的createConnection ()helper方法允许创建和配置Redis客户端类实例数据源名称(DSN):
1 2 3 4 5 6
使用ob娱乐下载\组件\缓存\适配器\RedisAdapter;//通过一个DSN字符串向客户端注册一个服务器$客户端= RedisAdapter::createConnection (复述:/ / localhost的);
DSN可以指定IP/主机(和可选端口)或套接字路径,以及密码和数据库索引。为启用TLS连接,该方案复述,
必须由复述,
(第二个年代
意思是“安全的”)。
请注意
一个数据源名称(DSN)对于此适配器,必须使用以下格式之一。
1
复述,[s]: / / [pass@] [ip主机| |套接字[:端口]][/ db-index]
1
复述,[s]:[[用户]:pass@]吗?[ip|host|socket[:port]][¶ms]
占位符的值(用户)
,(港):
,[/ db-index]
而且(参数)
是可选的。
下面是有效dsn的常见示例,显示可用值的组合:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
使用ob娱乐下载\组件\缓存\适配器\RedisAdapter;//主机“my.server.com”和端口“6379”RedisAdapter::createConnection (“复述:/ / my.server.com: 6379”);//主机“my.server.com”,端口“6379”,数据库索引“20”RedisAdapter::createConnection (“复述:/ / my.server.com: 6379/20”);// host" localhost", auth "abcdef", timeout 5秒RedisAdapter::createConnection (“复述:/ / abcdef@localhost ?timeout = 5 ');// socket "/var/run/redis. "Sock”和auth“bad-pass”RedisAdapter::createConnection (复述:/ / bad-pass@ / var /运行/ redis.sock”);//主机“redis1”(docker容器)与替代DSN语法,并选择数据库索引“3”RedisAdapter::createConnection (复述:?主机(redis1:6379) &dbindex = 3”);//提供替代DSN语法的凭据RedisAdapter::createConnection (复述:默认值:verysecurepassword@吗?主机(redis1:6379) &dbindex = 3”);//一个DSN可以定义多个服务器RedisAdapter::createConnection (复述:?主机(localhost)主机(localhost: 6379)主机(/ var /运行/ redis.sock:) auth = my-password&redis_cluster = 1”);
复述,哨兵,它为Redis提供了高可用性,也支持使用PHP Redis扩展v5.2+或Predis库。使用redis_sentinel
参数设置服务组的名称:
12 3 4 5 6 7 8 9 10 11 12 13
RedisAdapter::createConnection (复述:?主机(redis1:26379)主机(redis2:26379)主机(redis3:26379) &redis_sentinel = mymaster ');//提供证书RedisAdapter::createConnection (复述:默认值:verysecurepassword@吗?主机(redis1:26379)主机(redis2:26379)主机(redis3:26379) &redis_sentinel = mymaster ');//提供凭据并选择数据库索引"3"RedisAdapter::createConnection (复述:默认值:verysecurepassword@吗?主机(redis1:26379)主机(redis2:26379)主机(redis3:26379) &redis_sentinel = mymaster&dbindex = 3 ');
4.2
在一个DSN中定义多个服务器的选项是在Symfony 4.2中引入的。ob娱乐下载
4.4
在Symfony 4.4中引入了Redis Sentinel支持。ob娱乐下载
请注意
看到RedisTrait更多的选项,你可以通过DSN参数。
配置选项
的createConnection ()Helper方法也接受一个选项数组作为它的第二个参数。的关联数组Key =>值
表示选项名称及其各自值的对:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
使用ob娱乐下载\组件\缓存\适配器\RedisAdapter;$客户端= RedisAdapter::createConnection (//提供一个字符串DSN“复述:/ / localhost: 6379”,//配置选项的关联数组[“类”= >零,“持续的”= >0,“persistent_id”= >零,“超时”= >30.,“read_timeout”= >0,“retry_interval”= >0,“tcp_keepalive”= >0,“懒”= >零,“redis_cluster”= >假,“redis_sentinel”= >零,“dbindex”= >0,“故障”= >“没有”,“ssl”= >零,]);
可用选项
-
类
(类型:字符串
违约:零
) -
指定要返回的连接库
\复述,
或\ Predis \客户
.如果未指定,则返回\复述,
如果复述,
分机是可用的,和\ Predis \客户
否则。显式地将其设置为\ Predis \客户
为哨兵,如果你在检索主信息时遇到问题。 -
持续的
(类型:int
违约:0
) -
启用或禁用持久连接的使用。值为
0
禁用持久连接,值为1
使他们。 -
persistent_id
(类型:字符串|零
违约:零
) - 指定用于持久连接的持久id字符串。
-
超时
(类型:int
违约:30.
) - 指定在连接尝试超时之前连接到Redis服务器的时间(秒)。
-
read_timeout
(类型:int
违约:0
) - 指定在底层网络资源上执行读操作时,在操作超时之前所使用的时间(以秒为单位)。
-
retry_interval
(类型:int
违约:0
) - 指定在客户端失去与服务器连接的情况下重新连接尝试之间的延迟(以毫秒为单位)。
-
tcp_keepalive
(类型:int
违约:0
) - 指定了TCP-keepalive连接超时时间(以秒为单位)。这需要phpredis v4或更高版本和启用tcp keepalive的服务器。
-
懒惰的
(类型:保龄球
违约:零
) -
启用或禁用到后端的延迟连接。这是
假
默认情况下,当将此作为独立组件使用时真正的
在Symfony应用程序中使用它时默认为。ob娱乐下载 -
redis_cluster
(类型:保龄球
违约:假
) - 启用/禁用redis集群。传递的实际值是无关紧要的,只要它通过了松散的比较检查:' redis_cluster=1 '就足够了。
-
redis_sentinel
(类型:字符串
违约:零
) - 指定连接到哨兵的主名称。
-
dbindex
(类型:int
违约:0
) - 指定要选择的数据库索引。
-
故障转移
(类型:字符串
违约:没有一个
) -
为集群实现指定故障转移。为
\ RedisCluster
有效选项为没有一个
(默认),错误
,分发
或奴隶
.为\ Predis \ ClientInterface
有效选项为奴隶
或分发
. -
ssl
(类型:保龄球
违约:零
) - SSL上下文选项。看到php.net/context.ssl获取更多信息。
请注意
当使用Predis库中有一些额外的predis特定选项可用。引用Predis连接参数欧宝官网下载app文档获取更多信息。
使用标签
为了使用基于标记的失效,可以将适配器打包TagAwareAdapter,但当Redis被用作后端时,通常更有趣的是使用专用RedisTagAwareAdapter.由于标签失效逻辑是在Redis中实现的,所以当使用基于标签的失效时,这个适配器提供了更好的性能:
1 2 3 4 5
使用ob娱乐下载\组件\缓存\适配器\RedisAdapter;使用ob娱乐下载\组件\缓存\适配器\RedisTagAwareAdapter;$客户端= RedisAdapter::createConnection (复述:/ / localhost的);$缓存=新RedisTagAwareAdapter ($客户端);
配置复述,
当使用Redis作为缓存时,您应该配置maxmemory
而且maxmemory-policy
设置。通过设置maxmemory
,你限制了Redis允许消耗多少内存。如果数量过低,Redis会删除仍然有用的条目,你从缓存中获得的好处就会减少。设置maxmemory-policy
来allkeys-lru
告诉Redis当内存不足时可以删除数据,并且首先删除最老的条目(最近使用的最少)。如果你不允许Redis删除条目,当你试图在没有可用内存的情况下添加数据时,它会返回一个错误。示例设置如下所示:
1 2
Maxmemory -policy allkeys-lru
在官方中阅读更多关于这个主题的内容Redis LRU缓存文档欧宝官网下载app.