Laravel 在Redis中缓存带有标记的密钥会降低性能

Laravel 在Redis中缓存带有标记的密钥会降低性能,laravel,caching,redis,Laravel,Caching,Redis,我正在尝试缓存用户权限。问题是所有用户都有一些共同的特性(标签)。因此,一旦修改了与用户特性(标签)对应的特权,我打算仅使共享该特定特性(标签)的用户的缓存失效 我曾尝试在Redis的Laravel中使用标记进行缓存。它解决了我的问题,但对于大量用户来说,性能会下降,这是我最关心的问题 对于上述场景,是否有其他方法可以使用Redis在Laravel中进行缓存?通常,用户不会直接与权限/权限链接。在典型场景中,用户链接到角色,角色链接到权限 用户角色关系未缓存,角色权限关系已缓存。这是非常有益的,

我正在尝试缓存用户权限。问题是所有用户都有一些共同的特性(标签)。因此,一旦修改了与用户特性(标签)对应的特权,我打算仅使共享该特定特性(标签)的用户的缓存失效

我曾尝试在Redis的Laravel中使用标记进行缓存。它解决了我的问题,但对于大量用户来说,性能会下降,这是我最关心的问题


对于上述场景,是否有其他方法可以使用Redis在Laravel中进行缓存?

通常,用户不会直接与权限/权限链接。在典型场景中,用户链接到角色,角色链接到权限

用户角色关系未缓存,角色权限关系已缓存。这是非常有益的,因为可能有数千个用户,缓存所有用户权限数据会降低性能,但可能有15-20个或100个角色

为什么缓存用户权限关系会降低性能?

非常简单,缓存只会提高频繁访问的数据的性能。如果有数千或几十万用户,缓存所有这些用户权限关系数据实际上比从数据库中获取数据更糟糕,因为它经常被访问

另一方面,缓存角色权限数据可能会提高性能,因为访问频率很高(与用户Privilege缓存不同,每个登录的用户都会访问缓存中的该数据)

希望这是有意义的

您可以查看缓存实现,它几乎位于同一行上。它是目前最流行的角色和权限的Laravel库


另请参见:

这里的最终结果是什么,我无法理解用户权限的问题,它们经常更改,这很重要吗?是否需要立即使缓存无效?当使用该应用程序的用户减少时,是否可以这样做?当只有一个分配的Do更改时,是否会使用户的整个缓存(甚至是不相关的特权)无效?什么时候达到性能要求是什么意思?只有一次,直到用户刷新页面?当用户使用应用程序时,是否在“会话”期间持续?有多少用户,每个用户的缓存有多大?您是否尝试过为Redis增加RAM?