【PHP进阶】Redis批处理缓存

大家好,我是程序员若风,又到了技术分享时刻。

概要

在某些场景下,我们需要频繁的使用到缓存,比如需要获取多个key值,如果采用单个拿缓存的办法,会造成网络IO极大的浪费,所以我们需要用户Redis的批处理。

批处理场景

  • 批量获取缓存
    • 我们以获取社区UGC内容为例子, 如果需要同时获取10条UGC内容的点赞量,当然,点赞量我们是以集合的方式来存储的,每一条UGC都对应的点赞集合,所以,如果我们要获取这10条点赞的数量,就只能用循环的方式去读取。这样就会造成网络IO的浪费,我们需要采用批量获取的方式来拿数据

      •  public function mgetSetCount($arr)
        {
                 
        return RedisConnect->pipeline(function ($pipe) use ($arr) {
                 
          $c = [];
          foreach ($arr as $key=>$value) {
                 
            $c[] = $pipe->scard($value);
        }
        return $c;
          });
         }
         通过上面的方法,我们就能满足要求。当然,我们这里用到了管道的技术,这个技术我会单独写一篇文章。
        
    • 除了上面管道的方法,也有redis官方的命令能够直接批量获取缓存
      + mget
      + hmget

  • 批量删除缓存
    • 批量删除缓存同上面批量获取缓存一样,也可以使用管道来直接删除我们想要删除的健
         public function delMul(array $keys)
         {
         
           RedisConnect->pipeline(function ($pipe) use ($keys) {
         
            foreach ($keys as $cacheKey) {
         
                $pipe->del($cacheKey);
            }
            });
          }
    
  • 批量设置缓存
         public function MulSet(array $arr)
       {
         
          return RedisConnect->pipeline(function ($pipe) use ($arr) {
         
              foreach ($arr as $item) {
         
                  if (!$item['key'] || !$item['value'] || !$item['ttl']) {
         
                      continue;
                  }
                  $pipe->set($item['key'], $value, 'EX', $item['ttl']);
              }
          });
      }
    
    
    

总结

Redis批处理算是redis我们实战中的一种进阶玩法,有的低流量项目,你不用Redis都可以,如果用上了Redis,用单一操作也是足够了,但是如果我们想要低延时,高性能的服务。那么你肯定绕不开Redis批处理操作。

相关推荐

  1. PHPRedis批处理缓存

    2024-02-23 10:48:22       62 阅读
  2. MyBatis缓存

    2024-02-23 10:48:22       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-23 10:48:22       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-23 10:48:22       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-23 10:48:22       82 阅读
  4. Python语言-面向对象

    2024-02-23 10:48:22       91 阅读

热门阅读

  1. 手机中有哪些逆向进化的功能

    2024-02-23 10:48:22       49 阅读
  2. react项目中的redux以及react-router-dom

    2024-02-23 10:48:22       46 阅读
  3. 两种方法实现批量修改Word文件页眉

    2024-02-23 10:48:22       59 阅读
  4. Sublime text 3 配置

    2024-02-23 10:48:22       49 阅读
  5. Object转List

    2024-02-23 10:48:22       43 阅读
  6. 获取视频第一帧,以及后续上传

    2024-02-23 10:48:22       48 阅读