Redis
Redis是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的Web应用程序。
Redis有三个主要特点,使它优越于其它键值数据存储系统 -
- Redis将其数据库完全保存在内存中,仅使用磁盘进行持久化。
- 与其它键值数据存储相比,Redis有一组相对丰富的数据类型。
- Redis可以将数据复制到任意数量的从机中。
Redis支持的数据类型有 Stirng(字符串), List(列表), Hash(字典), Set(集合), Sorted Set(有序集合);
redis 队列
redis 提供了两种方式来作消息队列。一个是生产者消费模式,另外是发布订阅模式。前者会让一个或者多个客户端监听消息队列,消费者消费;后者是一个或者多个客户端订阅频道,只要发布者发布消息,所以订阅者都能收到消息,订阅者都是平等的。
生产者消费模式
1、定时任务入列rpush
2、定时任务出列lpop
入列文件pre.php:
<?php $redis=new Redis(); $redis->connect('127.0.0.1','6379'); $password='fenglove'; $redis->auth($password); $arr=array('h','e','l','l','o','w','o','r','l','d'); foreach($arr as $k=>$v){ $redis->rpush('mylist',$v); }
出列文件index.php:
<?php $redis=new Redis(); $redis->connect('127.0.0.1',6379); $password='fenglove'; $redis->auth($password); //list类型出队操作 $value=$redis->lpop('mylist'); if($value){ echo '出队的值'.$value; }else{ echo "出队完成"; }
开启定时任务:
在/etc/中
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed 1 * * * * root /bin/netstat -lntp * * * * * root /usr/local/php/bin/php /root/test.php >> /root/test.log * * * * * root /usr/local/php/bin/php /root/phptest/index.php */10 * * * * root /usr/local/php/bin/php /root/phptest/pre.php
结果:
1 127.0.0.1:6379> lrange mylist 0 -1 2 1) "h" 3 2) "e" 4 3) "l" 5 4) "l" 6 5) "o" 7 6) "w" 8 7) "o" 9 8) "r" 10 9) "l" 11 10) "d" 12 127.0.0.1:6379> lrange mylist 0 -1 13 1) "e" 14 2) "l" 15 3) "l" 16 4) "o" 17 5) "w" 18 6) "o" 19 7) "r" 20 8) "l" 21 9) "d"