redis 队列操作的例子(php)_php技巧_脚本之家


本站和网页 https://www.jb51.net/article/30093.htm 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

redis 队列操作的例子(php)_php技巧_脚本之家
脚本之家
服务器常用软件
手机版
投稿中心
关注微信
快捷导航
软件下载
android
MAC
驱动下载
字体下载
DLL
源码下载
PHP
ASP.NET
ASP
JSP
软件编程
C#
JAVA
C 语言
Delphi
Android
网络编程
PHP
ASP.NET
ASP
JavaScript
在线工具
CSS格式化
JS格式化
Html转化为Js
数据库
MYSQL
MSSQL
oracle
DB2
MARIADB
CMS
PHPCMS
DEDECMS
帝国CMS
WordPress
常用工具
PHP开发工具
python
Photoshop
必备软件
网站首页
网页制作
网络编程
脚本专栏
脚本下载
数据库
服务器
电子书籍
操作系统
网站运营
平面设计
其它
媒体动画
电脑基础
硬件教程
网络安全
php基础
php技巧
php实例
php文摘
php模板
您的位置:首页 → 网络编程 → PHP编程 → php技巧 → redis 队列操作
redis 队列操作的例子(php)
更新时间:2012年04月12日 23:59:06 作者:
Reids是一个比较高级的开源key-value存储系统,采用ANSI C实现。其与memcached类似,但是支持持久化数据存储
入队操作 复制代码 代码如下: <?php $redis = new Redis(); $redis->connect('127.0.0.1',6379); while(True){ try{ $value = 'value_'.date('Y-m-d H:i:s'); $redis->LPUSH('key1',$value); sleep(rand()%3); echo $value."\n"; }catch(Exception $e){ echo $e->getMessage()."\n"; } } ?> 出队操作 复制代码 代码如下: <?php $redis = new Redis(); $redis->pconnect('127.0.0.1',6379); while(True){ try{ echo $redis->LPOP('key1')."\n"; }catch(Exception $e){ echo $e->getMessage()."\n"; } sleep(rand()%3); }?> 如何使用Redis 做队列操作 Reids是一个比较高级的开源key-value存储系统,采用ANSI C实现。其与memcached类似,但是支持持久化数据存储,同时value支持多种类型:字符串 (同memcached中的value),列表 ,集合 (Set),有序集合 (OrderSet)和Hash 。所有的值类型均支持原子操作,如列表中追加弹出元素,集合中插入移除元素等。Rdids的数据大部分位于内存中,其读写效率非常高,其提供AOF(追加 式操作记录文件)和DUMP(定期数据备份)两种持久化方式。Redis支持自定义的VM(虚拟内存)机制,当数据容量超过内存时,可以将部分Value 存储到文件中。同时Redis支持Master-Slave机制,可以进行数据复制。 可以把Redis的list结构当队列来用. 从上面Redis的场景和作用来说,对于我们现在的开发活动,究竟能把Redis引入在那些场景,而不是把这么好的东东演变成“为了使用Redis,而Redis”的惨烈局面呢?当然,具体问题具体分析,这个真的很重要哈。 缓存?分布式缓存? 队列?分布式队列? 某些系统应用(例如,电信、银行和大型互联网应用等)都会使用到,当然,现在大行其道的memcache就是很好的证明;但从某一方面来说,memcache是否能把两张囊括其中,而且能做到更好(没有实际的应用过,所以只是抛出)。但从Redis身上,我就能感觉到,Redis,就能把队列和缓存两张都囊括其中,而且都不会产生并发环境下的困扰,因为Redis中的操作都是原子操作来着。 至于评论两者的孰好孰坏就免了,存在就是理由,选择适合的就是最好的。 下面开始玩玩Redis中的队列(分布式)设计YY吧,请大虾们多多指点。 状况场景: 现在的项目,都是部署在多个服务器,或者多个IP上,而且前台经由F5分发,所以用户的请求究竟落在那一台的服务器上,是无法确定的。对于项目中,有一秒杀设计,刚开始没有考虑到这种部署,同时也是使用最容易处理的方式,直接给数据库表锁行记录(Oracle上的)。可以说,对于不同的应用部署,而只有一台数据库服务器来说,很“轻松”的就解决了这个并发的问题。所以现在考虑一下,是不是挪到应用上,避免数据库服务器也掺杂到业务上。 比如,现在有2台应用服务器,1台数据库服务器。想法是,把Redis部署在数据库服务器上,两台服务器在操作并发缓存或者队列时,先从Redis服务器上,取得在两台应用服务器的代理对象,再做入列出列的操作。 看代码实现(PHP) 入队列操作文件 list_push.php 复制代码 代码如下: <?php $redis = getRedisInstance();//从Redis服务器拿到redis实例 $redis->connect('Redis服务器IP', 6379); while (true) { $redis->lPush('list1', 'A_'.date('Y-m-d H:i:s')); sleep(rand()%3); } ?> 执行# php list_push.php & 出队列操作 list_pop.php文件 复制代码 代码如下: <?php $redis = getRedisInstance();//从Redis服务器拿到redis实例 $redis->pconnect('Redis服务器IP', 6379); while(true) { try { var_export( $redis->blPop('list1', 10) ); } catch(Exception $e) { //echo $e; } } 实现方法(Python) 1.入队列(write.py) 复制代码 代码如下: #!/usr/bin/env python import time from redis import Redis redis = Redis(host='127.0.0.1', port=6379) while True: now = time.strftime("%Y/%m/%d %H:%M:%S") redis.lpush('test_queue', now) time.sleep(1) 2.出队列(read.py) 复制代码 代码如下: #!/usr/bin/env python import sys from redis import Redis redis = Redis(host='127.0.0.1', port=6379) while True: res = redis.rpop('test_queue') if res == None: pass else: print str(res) 在操作时,注意,要操作的是同一个list对象。 呵呵,现在的主要思路就差不多就是如此,不过真实场景中,会有出入。
您可能感兴趣的文章:30个php操作redis常用方法代码例子php操作redis中的hash和zset类型数据的方法和代码例子php结合redis实现高并发下的抢购、秒杀功能的实例php Session存储到Redis的方法PHP操作Redis常用技巧总结php操作redis缓存方法分享在PHP中使用redisPHP实现操作redis的封装类完整实例Php-Redis安装测试笔记Linux下php安装Redis扩展的方法php+redis实现商城秒杀功能redis安装、配置、使用和redis php扩展安装教程PHP实现Redis单据锁以及防止并发重复写入ThinkPHP自定义Redis处理SESSION的实现方法详解thinkphp+redis+队列的实现代码项目中应用Redis+Php的场景PHP使用Redis长连接的方法详解php操作redis命令及代码实例大全
redis
队列操作
相关文章
PHP把MSSQL数据导入到MYSQL的方法这篇文章主要介绍了PHP把MSSQL数据导入到MYSQL的方法,分别列举了两个实例实现将MSSQL数据导入到MYSQL的功能,是非常实用的技巧,具有一定的参考借鉴价值,需要的朋友可以参考下 2014-12-12
php页码形式分页函数支持静态化地址及ajax分页这篇文章主要介绍了php页码形式分页函数,此分页支持静态化地址分页和无链接地址时的ajax分页,需要的朋友可以参考下 2014-03-03
php获得当前的脚本网址这篇文章介绍了php获得当前的脚本网址的方法,通过php服务器变量$_SERVER的简单判断、转换与输出,实现获取当前网址的功能,需要的朋友可以参考一下 2007-12-12
php批量删除超链接的实现方法有时候我们会遇到这种需求,清除掉一段html文本内容中的超链接,这时有什么好办法呢?下面就总结几种简单的方法清除html文本中的超链接,需要的朋友可以参考下 2015-10-10
php实现的简单中文验证码功能示例这篇文章主要介绍了php实现的简单中文验证码功能,结合实例形式分析了php中文验证码功能的实现步骤与操作方法,包括图形创建、编码操作、session操作等相关技巧,需要的朋友可以参考下 2017-01-01
php在服务器执行exec命令失败的解决方法出于安全的原因,服务器是不允许php或者其他语言执行exec命令的,当你有特殊需要php在服务器执行exec命令时,你需要设置两个地方,不然就无法执行成功 2012-03-03
mcrypt启用 加密以及解密过程详细解析Mcrypt库支持20多种加密算法和8种加密模式,具体可以通过函数mcrypt_list_algorithms()和mcrypt_list_modes()来显示 2013-08-08
PHP Post获取不到非表单数据的问题解决办法这篇文章主要介绍了PHP Post获取不到非表单数据的问题的解决办法以及代码分享,需要的朋友参考下。 2018-02-02
PHP file_get_contents设置超时处理方法今天说的这篇是讲超时的,确实在跨服务器提交的时候,不可避免的会遇到超时的情况,这个时候怎么办?set_time_limit是没有用的,只有用context中的timeout时间来控制 2013-09-09
php实现jQuery扩展函数今天在运行书上的jQuery代码时,不知道是书上弄错了,还是我的jQuery版本的问题,例子上面有一个jQuery函数不存在。 2009-10-10
最新评论
大家感兴趣的内容
1php中json_decode()和json_encode(2PHP 数组和字符串互相转换实现方法3php 字符串中是否包含指定字符串的多种方法4PHP中使用cURL实现Get和Post请求的方法5php中iconv函数使用方法6php日期转时间戳,指定日期转换成时间戳7PHP 页面跳转到另一个页面的多种方法方法总结8PHP中文处理 中文字符串截取(mb_substr)和获取中9php下intval()和(int)转换使用与区别10利用phpExcel实现Excel数据的导入导出(全步骤详细
最近更新的内容
php获取本周开始日期和结束日期的方法PHP简单实现解析xml为数组的方法PHP学习笔记 IIS7下安装配置php环境ThinkPHP 表单自动验证运用示例php中的buffer缓冲区用法分析PHP 常用数组内部函数(Array Functions)介绍php错误级别的设置方法PHP error_log()将错误信息写入一个文件(定义和用法)PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法PHP实现顺时针打印矩阵(螺旋矩阵)的方法示例
常用在线小工具
微信
投稿
脚本任务
在线工具
关注微信公众号
关于我们 -
广告合作 -
联系我们 -
免责声明 -
网站地图 -
投诉建议 -
在线投稿
CopyRight 2006-2021 JB51.Net Inc All Rights Reserved. 脚本之家 版权所有