Redis缓存适配器

编辑本页

警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 5.2,现已不再维护。

本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。

Redis缓存适配器

另请参阅

本文解释了当在任何PHP应用程序中使用缓存作为独立组件时,如何配置Redis适配器。读了ob娱乐下载Symfony Cache配置文章,如果您在Symfony应用程序中使用它。ob娱乐下载

该适配器使用一个(或多个)将值存储在内存中复述,服务器实例。

不像APCu适配器,与Memcached适配器,不局限于当前服务器的共享内存;您可以独立于PHP环境存储内容。还可以使用服务器集群来提供冗余和/或故障转移。

谨慎

要求:至少一个复述,服务器必须安装并运行才能使用此适配器。此外,此适配器需要实现兼容的扩展或库\复述,\ RedisArrayRedisCluster,或\ Predis

该适配器需要一个复述,RedisArrayRedisCluster,或Predis作为第一个参数传递的实例。命名空间和默认缓存生存期可以作为第二个和第三个参数传递:

12 3 4 5 6 7 8 9 10 11 12 13 14 15
使用ob娱乐下载组件缓存适配器RedisAdapter缓存RedisAdapter (//存储到Redis系统的有效连接的对象\复述,redisConnection//存储在这个缓存中的项的键前缀字符串名称空间//未定义缓存项的默认生存期(秒)//自己的生命周期,值为0会导致项目无限期地存储(例如://直到RedisAdapter::clear()被调用或者服务器被清除defaultLifetime0);

配置连接

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]

下面是有效dsn的常见示例,显示可用值的组合:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
使用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”);//一个DSN可以使用以下语法定义多个服务器:// host[hostname-or-IP:port](其中port是可选的)。套接字必须包含尾随的':'RedisAdapter::createConnection (复述:?主机(localhost)主机(localhost: 6379)主机(/ var /运行/ redis.sock:) auth = my-password&redis_cluster = 1”);

复述,哨兵,它为Redis提供了高可用性,在使用Predis库时也被支持。使用redis_sentinel参数设置服务组的名称:

1 2 3
RedisAdapter::createConnection (复述:?主机(redis1:26379)主机(redis2:26379)主机(redis3:26379) &redis_sentinel = mymaster ');

请注意

看到RedisTrait更多的选项,你可以通过DSN参数。

配置选项

createConnection ()Helper方法也接受一个选项数组作为它的第二个参数。的关联数组Key =>值表示选项名称及其各自值的对:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
使用ob娱乐下载组件缓存适配器RedisAdapter客户端= RedisAdapter::createConnection (//提供一个字符串DSN“复述:/ / localhost: 6379”//配置选项的关联数组“懒”= >“持续的”= >0“persistent_id”= >“tcp_keepalive”= >0“超时”= >30.“read_timeout”= >0“retry_interval”= >0,]);

可用选项

(类型:字符串
指定要返回的连接库\复述,\ Predis \客户.如果未指定,则返回\复述,如果复述,分机是可用的,和\ Predis \客户否则。
懒惰的(类型:保龄球违约:
启用或禁用到后端的延迟连接。这是默认情况下,当将此作为独立组件使用时真正的在Symfony应用程序中使用它时默认为。ob娱乐下载
持续的(类型:int违约:0
启用或禁用持久连接的使用。值为0禁用持久连接,值为1使他们。
persistent_id(类型:字符串|零违约:
指定用于持久连接的持久id字符串。
read_timeout(类型:int违约:0
指定在底层网络资源上执行读操作时,在操作超时之前所使用的时间(以秒为单位)。
retry_interval(类型:int违约:0
指定在客户端失去与服务器连接的情况下重新连接尝试之间的延迟(以毫秒为单位)。
tcp_keepalive(类型:int违约:0
指定了TCP-keepalive连接超时时间(以秒为单位)。这需要phpredis v4或更高版本和启用tcp keepalive的服务器。
超时(类型:int违约:30.
指定在连接尝试超时之前连接到Redis服务器的时间(秒)。

请注意

当使用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-policyallkeys-lru告诉Redis当内存不足时可以删除数据,并且首先删除最老的条目(最近使用的最少)。如果你不允许Redis删除条目,当你试图在没有可用内存的情况下添加数据时,它会返回一个错误。示例设置如下所示:

1 2
Maxmemory -policy allkeys-lru

阅读更多关于这个主题的官方文章Redis LRU缓存文档欧宝官网下载app

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。