首页 > 数据库 >laravel-permission 缓存导致的Redis带宽占用问题

laravel-permission 缓存导致的Redis带宽占用问题

时间:2023-05-06 16:36:19浏览次数:48  
标签:laravel 缓存 permission gitlab Redis spatie 权限

 

先决条件

spatie/laravel-permission: 3.18.0 权限数: 634 角色数: 94

问题

laravel-permission 的缓存机制设计的不太合理 将所有的权限存放在一个大set中,且存放了许多不必要的信息。 当项目拥有大量的角色权限,使得这个set达到了11mb,非常影响性能。

解决方案

spatie/laravel-permission: 4.3.0 及以上版本,这个问题得到了解决。 然而我们不会贸然去选择升级依赖包的大版本,有风险,所以选择fork了一份到gitlab中,自行维护v3版本。 并将对应的优化措施集成到 3.18.0 上,发布 3.19.0 ### 优化后能够将大小缩减为原来的5% 出口流量速率由原来的140mb/s降到了6mb/s

集成

{
    "repositories": [
        {
            "type": "gitlab",
            "url": "https://git.papamk.com/packagist/laravel-permission"
        }
    ],
    "require": {
        "spatie/laravel-permission": "3.19.0"
    }
}

参考资料

https://github.com/spatie/laravel-permission/pull/1799

标签:laravel,缓存,permission,gitlab,Redis,spatie,权限
From: https://www.cnblogs.com/zy2022-7-12/p/17377805.html

相关文章

  • spring cloud 配置 redis、定义redis工具类
    一、引入redis工具依赖在build.gradle文件中的dependencies的对象中引入依赖compile'org.springframework.boot:spring-boot-starter-data-redis:2.1.5.RELEASE'二、application.xml配置redisspringredis:database:#Redis数据库索引(默认为0)host:......
  • redis分布式锁、介绍、具体实现,调用、原理、使用场景
    一、作用redis分布式锁:可以分为两点:1.分布式2.加锁主要作用是,在多副本部署服务的情况下(或者高并发时),相同时间点内,对业务代码进行加锁,业务代码只能被一个线程执行用了分布式锁,相当于强制将多副本(或者单副本高并发时)并行改成串行执行,其他副本直接返回或者阻塞等待(排队执行)由于是......
  • Redis Desktop Manager简单用法
    RedisDesktopManager简单用法一、官网https://redisdesktop.com/二、登录前置条件是:Redis安装正常且服务已经开启RedisDesktopManager运行打开,点击“连接到Redis服务器”1)输入连接名(不固定字符串),例如:rediscon或test或test1等等2)地址端口号(redis服务器地址及端口号):127.0.0.1......
  • ubuntu安装redis
    redis是C语言编写的一款非关系型数据库,使用键值对存储数据,数据缓存在内存中首先下载安装redis,并测试是否安装正确wgethttp://download.redis.io/releases/redis-6.0.8.tar.gztar-zxvfredis-6.0.8.tar.gzcdredis-6.0.8makemaketest如果make失败,则需要升级gcc如果mak......
  • redis之五种基本数据类型
    0.前言本文主要讲解redis的五种基本数据类型:String、List、Set、SortedSet、Hash。学习如何使用它们,并且了解它们的底层数据结构实现,这样我们才能在适当的应用场景选择最适合的数据类型来解决我们的需求。1.String1.1简单使用String是redis最简单的且最常用的数据类型,可以......
  • 【已解决】Microsoft Visual C++ Redistributable is not installed
    【Error】导入torch,提示报错:MicrosoftVisualC++Redistributableisnotinstalled,thismayleadtotheDLLloadfailure.【Cause】Anaconda没有默认安装在C盘;系统没有安装VC++Redistributable程序。【Resolve】VC++Redistributable.exe双击安装,重启电脑即可。......
  • Redis--分布式中实现Session共享(一)
    上一篇介绍了如何使用nginx+iis部署一个简单的分布式系统,文章结尾留下了几个问题,其中一个是"如何解决多站点下Session共享"。这篇文章将会介绍如何使用Redis,下一篇在此基础上实现Session。这里特别说明一下,其实没有必要使用Redis来解决Session共享。Asp.net提供了StateServer模......
  • Jenkins 执行Docker build错误Got permission denied while trying to connect to the
    问题: 解决方法:这个报错为权限问题1.把jenkins用户,加到docker用户组 #如果没有docker用户组,先创建用户组:groupadddocker#添加jenkins用户到用户组:sudousermod-a-Gdockerjenkins-a<追加>必须与-G选项一起使用,把用户追加到某些组中。-G<群组>修改用户所属的......
  • laravel 知识汇总|定时任务|
    1.helloword生命周期生命周期Laravel框架门面Facade源码分析门面的运用2.数据库配置3.migrate创建数据库laravel中migration数据迁移4.composer的使用,require和require-dev区别5.自动生成模型,自动生成代码注释:idea生成器:https://chujc.github.io/2019/05/15/%E5%B7%A5......
  • 使用StackExchange.Redis组件C#模糊删除模糊查找
     C#StackExchange.Redis模糊删除模糊查找 ///<summary>///模糊查找///</summary>///<paramname="key"></param>publicList<XJDataDll.Tag.Point>SelectTags(stringpattern){......