• redis常见使用场景下PHP实现


    基于redis字符串string类型的简单缓存实现

    <?php
    //简单字符串缓存
    
    $redis = new \Redis();
    $redis->connect('127.0.0.1',6379);
    
    //缓存数据
    $redis->set('cache_key',json_encode(['data'=>'这是缓存数据']));
    
    //获取缓存数据
    $data = $redis->get('cache_key');
    print_r(json_decode($data,true));

    基于redis列表list类型的简单队列实现

    <?php
    
    //利用列表list实现简单队列
    $redis = new \Redis();
    $redis->connect('localhost',6379);
    
    //进队列
    $redis->rpush('queue_name',json_encode(['user_id'=>5]));
    $redis->rpush('queue_name',json_encode(['user_id'=>6]));
    $redis->rpush('queue_name',json_encode(['user_id'=>7]));
    
    echo "数据进队列完成\n";
    
    //可查看队列
    $res = $redis->lrange('queue_name',0,1000);
    print_r($res);
    
    //出队列
    $redis->lpop('queue_name');
    
    //查看队列
    $res = $redis->lrange('queue_name',0,1000);
    print_r($res);

    基于redis事务的乐观锁实现

    <?php
    
    //实现乐观锁机制
    
    $redis = new \Redis();
    $redis->connect('localhost',6379);
    
    //监视count的值
    $redis->watch('count');
    
    //开启事务
    $redis->multi();
    
    //操作count
    $redis->set('count',time());
    
    //--------------------------------
    //模拟并发下其他进程对count的操作
    //redis-cli 执行 $redis->set('count','is simulate');
    sleep(10);
    //--------------------------------
    
    //提交事务
    $res = $redis->exec();
    
    if($res){
        echo 'sucesss';
        return;
    }else{
        echo 'fail';
    }

    基于redis的发布订阅实现

    发布publish.php

    <?php
    //发布
    
    $redis = new \Redis();
    $redis->connect('localhost',6379);
    
    $redis->publish('msg','来自xxx频道的消息推送');
    echo '消息推送成功';
    
    $redis->close();

    订阅subscribe.php

    <?php
    //订阅
    
    //ini_set('default_socket_timeout',-1);
    
    $redis = new \Redis();
    $redis->pconnect('localhost',6379);
    
    //订阅
    echo "订阅频道等待消息推送\n";
    
    $redis->subscribe(['msg'],'callfun'); //msg 是频道名
    
    //回调
    function callfun($redis,$channel,$msg){
        print_r(['redis'=>$redis,'channel'=>$channel,'msg'=>$msg]);
    }
     
  • 相关阅读:
    asp.net c#中去掉最后一个字符和去掉第一个字母
    两个div并排
    VS.Net2005中使用本地化功能实现多语言的切换
    gridview嵌套DropDownList選定值[转]
    C# 获取系统时间
    NERDTree,好用的文件浏览器
    通过$.browser来判断浏览器
    vim 智能提示
    让vim显示函数列表
    vim中文乱码解决方法
  • 原文地址:https://www.cnblogs.com/lxwphp/p/15454924.html
Copyright © 2020-2023  润新知