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

 

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

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

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • android之ListPreference的用法_PreferenceActivity用法

    首先,我们明确,preference是和数据存储相关的。       其次,它能帮助我们方便的进行数据存储!为什么这个地方一定要强调下方便的这个词呢?原因是,我们可以根本就不使用,我们有另外的N种办法可以实现同样的功能!它的出现,相当于为我们提供了一个方便的工具,当然了,这个工具并不是必须的。       preference都应用在什么场景呢?       这得从andr

    2022年3月10日
  • zookeeper集群安装配置

    zookeeper集群安装配置

    2021年11月15日
  • MFC 如何让菜单返灰(不可点击状态)

    MFC 如何让菜单返灰(不可点击状态)

    2022年2月7日
  • pycharm怎么安装python_pycharm环境配置教程

    pycharm怎么安装python_pycharm环境配置教程1.pycharm的下载,到pycharm官方网站进行下载点击tools选择自己要下载的pycharm的版本2.下载完成安装以后如图所示:创建一个快捷方式,以便打开3.根据安装的提示一步一步往下走就可以了4.Python下载:4.1到Python官网下载Python我下载的是3.9.6版本的Python4.2安装时记得点击path的那个选项,这样就不用了自己去环境那边配置了4.3安装完成以后,在命令提示行下检查一下是否安装成功…

    2022年8月27日
  • Matlab fitrsvm自带支持向量回归[通俗易懂]

    Matlab fitrsvm自带支持向量回归[通俗易懂]简介fitrsvm在中低维预测变量数据集上训练或交叉验证支持向量机(SVM)回归模型。fitrsvm支持使用内核函数映射预测变量数据,并支持通过二次编程实现目标函数最小化。要在高维数据集(即包含许多预测变量的数据集)上训练线性SVM回归模型,请改用fitrlinear。用法Mdl=fitrsvm(Tbl,ResponseVarName)返回使用表Tbl中的自变量值和表中对应变量名…

    2022年5月26日
  • 人脸去重算法_哈希去重算法

    人脸去重算法_哈希去重算法对比其他算法『百度的去重算法』百度的去重算法最简单,就是直接找出此文章的最长的n句话,做一遍hash签名。n一般取3。工程实现巨简单,据说准确率和召回率都能到达80%以上。『shingle算法』shingle原理略复杂,不细说。shingle算法我认为过于学院派,对于工程实现不够友好,速度太慢,基本上无法处理海量数据。『其他算法』具体看微博上的讨论…

    2022年10月26日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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