zoukankan      html  css  js  c++  java
  • 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 "数据进队列完成
    ";
    
    //可查看队列
    $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 "订阅频道等待消息推送
    ";
    
    $redis->subscribe(['msg'],'callfun'); //msg 是频道名
    
    //回调
    function callfun($redis,$channel,$msg){
        print_r(['redis'=>$redis,'channel'=>$channel,'msg'=>$msg]);
    }
     
  • 相关阅读:
    python打印出当下的小时、分钟
    flask_ajax登录注册
    flask_SQlalchemy的复杂使用
    flask使用现有的数据表、在网页中显示数据
    js 的DOMdocument的使用
    pymysql的是使用
    通过ajax修改div id="div1" 的值
    关于django2.2使用xadmin的方法
    DOS windows 使用bat脚本获取 IP MAC 系统信息
    apache https 双向证书生成
  • 原文地址:https://www.cnblogs.com/lxwphp/p/7728150.html
Copyright © 2011-2022 走看看