雅荷心语博客
雅荷心语
心之所向便是光
  • 首页
  • 前端之旅
  • 后端之路
  • 软件工具
  • 心灵鸡汤
  • 心路历程
  • 视频资料
  • 关于我们
    • 关于我
    • 关于我
  • 微信平台
    • 业务合作
  • 首页
  • 前端之旅
  • 后端之路
  • 软件工具
  • 心灵鸡汤
  • 心路历程
  • 视频资料
  • 关于我们
    • 关于我
    • 关于我
  • 微信平台
    • 业务合作
  • 关注本站
    • 微信
    • 微博
    • 腾讯微博
    • Twitter
    • Facebook
    • RSS订阅
Hi, 请登录     我要注册     找回密码

对 Redis 消息队列的初步探索

2017-03-14 分类:后端之路 阅读(1855) 评论(0)

前言

早就知道redis的消息队列很强大,但是没有使用场景,最近可能要做的东西需要这个做异步任务处理,刚好今天很早到公司了,顺便看看

首先,我服务器已经安装了redis,并且之前有使用过缓存,

所以直接就开始干了`

首先看看list的方法

  • Blpop删除,并获得该列表中的第一元素,或阻塞,直到有一个可用
  • Brpop删除,并获得该列表中的最后一个元素,或阻塞,直到有一个可用
  • Brpoplpush
  • Lindex获取一个元素,通过其索引列表
  • Linsert在列表中的另一个元素之前或之后插入一个元素
  • Llen获得队列(List)的长度
  • Lpop从队列的左边出队一个元素
  • Lpush从队列的左边入队一个或多个元素
  • Lpushx当队列存在时,从队到左边入队一个元素
  • Lrange从列表中获取指定返回的元素
  • Lrem从列表中删除元素
  • Lset设置队列里面一个元素的值
  • Ltrim修剪到指定范围内的清单
  • Rpop从队列的右边出队一个元素
  • Rpoplpush删除列表中的最后一个元素,将其追加到另一个列表
  • Rpush从队列的右边入队一个元素
  • Rpushx从队列的右边入队一个元素,仅队列存在时有效

我们开始使用一下,先新建一个队列并且循环插入一些数据看看!

1
2
3
4
$arr = array('1','2','3','4','5','6','7','8','9','10');
foreach($arr as $k=>$v){
    Redis::make()->_rPush('mylist',$v);
}

这里的使用的单利模式,封装了redis常用的几个接口!
然后把数据拿出来看看!

PHP
1
2
3
while ($list = Redis::make()-> _lPop('mylist')){
    p($list);
}

 

QQ截图20170314094603
全部拿出来了,很具队列的特性,我继续新添加一个进去,应该是在第一位!

PHP
1
Redis::make()-> _rPush('mylist','最后一个');

再看看队列的长度!

PHP
1
2
$a = Redis::make()->Hash()->lLen('mylist');
p('队列长度:'.$a);

1
队列长度:20

1
最后一个 10 9 8 7 6 ....

我页面刷新了两次,所以循环插入了两次,所以当前队列有20个数据!
简单封装的Redis方法!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
private static $_instance;
    public static function make(){
        if(!self::$_instance){
            self::$_instance = new self();
        }
        return self::$_instance;
    }
    //调用不存在的静态方法跳转到此
    public static function __callStatic($name, $arguments)
    {
        $_instance = self::getInstance();
        return call_user_func_array([$_instance,$name],$arguments);
    }
    //快速设置
    private function st($name,$value,$expire=null){
        return $this->set($name,$value,$expire);
    }
    //快速获取
    private function gt($name){
        return $this->get($name);
    }
    //快速获取
    public function get($name){
        $this->_get('api_'.$name);
    }
    //快速设置
    public function set($name,$value,$expire=null)
    {
        $this->_set('api_'.$name,$value,$expire);
    }
    
    public function _lPop($key){
        return $this->handler->lPop($key);
    }
    public function _rPop($key){
        return $this->handler->rPop($key);
    }
    
    public function _rPush($key,$value){
        return $this->handler->lPush($key,$value);
    }
    public function Hash(){
        return $this->handler;
    }

$this->handler; 是实例化过的Redis对象!

记录结束,等待实现真正的异步消息队列吧!

自己探索,各位看客有更好的建议,欢迎留言告诉我,感激不尽…

喜欢 (1) 赏 讨厌 (0)
分享到:更多 ()
标签:消息队列

相关推荐

  • 将docker安装到D盘或者其他目录
  • 使用 python 给音频增加水印,剪辑压缩后不丢失!
  • 如何使用 nodejs 下载一个 wav 音频
  • macOS 对 Demucs 的支持
  • edge-tts 初体验
  • 联盟数据查询示例
  • 科学上网记录
  • 在浏览器内使用obs-websocket-js控制obs录屏
关于我

小天明 北京·朝阳 前端搬砖工程师

碎碎念):(来自公众号)

热门文章

  • 踩坑记录——iphone上safari开启隐身模式时localStorage变为只读-雅荷心语博客踩坑记录——iphone上safari开启隐身模式时localStorage变为只读2017-02-21评论(4)
  • 程序员是怎样一群人-雅荷心语博客程序员是怎样一群人2015-12-08评论(3)
  • 百度你个大毒瘤 - 吐糟博客这几天打不开事情-雅荷心语博客百度你个大毒瘤 – 吐糟博客这几天打不开事情2015-12-28评论(2)
  • PHP 非对称加密 openssl 加密及解密方法-雅荷心语博客PHP 非对称加密 openssl 加密及解密方法2016-05-17评论(2)
  • PHPStorm10 下载安装破解汉化-雅荷心语博客PHPStorm10 下载安装破解汉化2015-12-15评论(2)
2025年7月
一 二 三 四 五 六 日
« 六    
 123456
78910111213
14151617181920
21222324252627
28293031  

最新评论

  • 前端小武 8年前 (2017-04-06)说:
    我看到了layer
  • 丁艳平 8年前 (2017-03-03)说:
  • Dawn 9年前 (2016-09-16)说:
    call_user_func_array最后的例子是错哦,你用bc方法去调用类里 另外一个方法就知道问题所在了。情况1.调用非静态方法 第一个参数应该传[类的实例,调用方法] (既然有类实例了直接-&
  • Dawn 9年前 (2016-06-21)说:
    tp框架设置了全局捕获异常的,这也没什么。坑的是 他捕获了异常。然后全部返回404。。。不知道的 还以为自己网站被删除了
  • Dawn 9年前 (2016-05-17)说:
    构造函数里的判断 用异常机制可能更好一些

其他类型

  • 芊云全景
  • 配音兔AI配音神器

博客类型

  • 芊云全景
  • 配音兔AI配音神器

左邻右舍

  • 易水寒
  • 楼教主
  • 芊云全景
  • 贤心
  • 配音兔AI配音神器

雅荷心语博客 -心之所向便是光

联系我们关于我们

© 2025 雅荷心语博客   网站地图