redis常见使用场景下PHP实现

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]);
}

 

 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/113831.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号