[转]Redis案例——商品秒杀,购物车

作者: 时间: 2016-11-08 评论: 暂无评论

秒杀案例:

<?php  
    header("content-type:text/html;charset=utf-8");  
    $redis = new redis();  
    $result = $redis->connect('10.10.10.119', 6379);  
    $mywatchkey = $redis->get("mywatchkey");  
    $rob_total = 100;   //抢购数量  
    if($mywatchkey<$rob_total){  
        $redis->watch("mywatchkey");  
        $redis->multi();  
        //设置延迟,方便测试效果。  
        sleep(5);  
        //插入抢购数据  
        $redis->hSet("mywatchlist","user_id_".mt_rand(1, 9999),time());  
        $redis->set("mywatchkey",$mywatchkey+1);  
        $rob_result = $redis->exec();  
        if($rob_result){  
            $mywatchlist = $redis->hGetAll("mywatchlist");  
            echo "抢购成功!<br/>";  
            echo "剩余数量:".($rob_total-$mywatchkey-1)."<br/>";  
            echo "用户列表:<pre>";  
            var_dump($mywatchlist);  
        }else{  
            echo "手气不好,再抢购!";exit;  
        }  
    }  

根据这个原理,我们可以watch 来写商品的购物车,支付订单之前watch 商品的标志位(商品数量等于0的时候变化),标志位变化则支付失败。

[转载地址]redis watch详解 代码转载地址

Redis教程 哈希

作者: 时间: 2016-08-01 评论: 暂无评论

s.n. 命令和说明

1   hdel key field2 [field2] 

删除一个或多个哈希字段

2   hexists key field 

判断一个哈希字段存在与否

3   hget key field 

获取存储在指定的键散列字段的值

4   hgetall key 

让所有的字段和值在指定的键存储在一个哈希

5   hincrby key field increment 

由给定数量增加的哈希字段的整数值

6   hincrbyfloat key field increment 

由给定的递增量哈希字段的浮点值

7   hkeys key 

获取所有在哈希字段

8   hlen key 

获取哈希字段数

9   hmget key field1 [field2] 

获得所有给定的哈希字段的值
注意:php 里面得这样写 $redis->hmget($key,array($field1,$field2)) 返回的是数组

10  hmset key field1 value1 [field2 value2 ] 

设置多个哈希字段的多个值

11  hset key field value 

设置哈希字段的字符串值

12  hsetnx key field value 

设置哈希字段的值,仅当该字段不存在

13  hvals key 

获取在哈希中的所有值

14  hscan key cursor [match pattern] [count count] 

增量迭代哈希字段及相关值

Redis 教程 队列

作者: 时间: 2016-07-18 评论: 暂无评论

s.n. 命令 & 描述

1   blpop key1 [key2 ] timeout 

取出并获取列表中的第一个元素,或阻塞,直到有可用

2   brpop key1 [key2 ] timeout 

取出并获取列表中的最后一个元素,或阻塞,直到有可用

3   brpoplpush source destination timeout 

从列表中弹出一个值,它推到另一个列表并返回它;或阻塞,直到有可用

4   lindex key index 

从一个列表其索引获取对应的元素

5   linsert key before|after pivot value 

在列表中的其他元素之后或之前插入一个元素

6   llen key 

获取列表的长度

7   lpop key 

获取并取出列表中的第一个元素

8   lpush key value1 [value2] 

在前面加上一个或多个值的列表

9   lpushx key value 

在前面加上一个值列表,仅当列表中存在

10  lrange key start stop 

从一个列表获取各种元素

11  lrem key count value 

从列表中删除元素

12  lset key index value 

在列表中的索引设置一个元素的值

13  ltrim key start stop 

修剪列表到指定的范围内

14  rpop key 

取出并获取列表中的最后一个元素

15  rpoplpush source destination 

删除最后一个元素的列表,将其附加到另一个列表并返回它

16  rpush key value1 [value2]

添加一个或多个值到列表

17  rpushx key value 

添加一个值列表,仅当列表中存在

Redis 教程 排序命令

作者: 时间: 2016-03-22 评论: 暂无评论

Redis排序命令集
如下表显示与​​排序集的一些基本命令:
s.n. 命令& 描述

zadd key score1 member1 [score2 member2] 

添加一个或多个成员到有序集合,或者如果它已经存在更新其分数

zcard key 

得到的有序集合成员的数量

zcount key min max 

计算一个有序集合成员与给定值范围内的分数

zincrby key increment member

在有序集合增加成员的分数

zinterstore destination numkeys key [key ...] 

多重交叉排序集合,并存储生成一个新的键有序集合。

zlexcount key min max 

计算一个给定的字典范围之间的有序集合成员的数量

zrange key start stop [withscores] 

由索引返回一个成员范围的有序集合。

zrangebylex key min max [limit offset count] 

返回一个成员范围的有序集合(由字典范围)

zrangebyscore key min max [withscores] [limit] 

按分数返回一个成员范围的有序集合。

zrank key member 

确定成员的索引中有序集合

zrem key member [member ...] 

从有序集合中删除一个或多个成员

zremrangebylex key min max 

删除所有成员在给定的字典范围之间的有序集合

zremrangebyrank key start stop 

在给定的索引之内删除所有成员的有序集合

zremrangebyscore key min max 

在给定的分数之内删除所有成员的有序集合

zrevrange key start stop [withscores] 

返回一个成员范围的有序集合,通过索引,以分数排序,从高分到低分

zrevrangebyscore key max min [withscores]

返回一个成员范围的有序集合,按分数,以分数排序从高分到低分

zrevrank key member 

确定一个有序集合成员的索引,以分数排序,从高分到低分

zscore key member 

获取给定成员相关联的分数在一个有序集合

zunionstore destination numkeys key [key ...]

添加多个集排序,所得排序集合存储在一个新的键

zscan key cursor [match pattern] [count count] 

增量迭代排序元素集和相关的分数

scores分数 member 成员 withscores 带上分数