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

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

秒杀案例:

<?php  
    $useTotal = self::getUseTotal($id);  //优先从reids取值,没有取数据库
    $key   = self::USETOTAL_CACHE . $goods_id;
    $redis = self::getRedis();
    $redis->watch($key);
    if ($useTotal + $num > $info['total']) {
        echo ('剩余夺宝码不足,购买失败');
    }
    $redis->multi();
    $redis->incrby($key, $num);
    $res = $redis->exec();
    if ($res) {
        //扣减商品 数量,保存到数据库
    }

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

关于在金融公司做开发一些教训

作者: 分类: 闲谈 时间: 2016-09-14 评论: 暂无评论

1.删除数据,能不做就不做。非要删除,备份是必须的。Delete id前,请先SELECT 下id数据,防止删错。

2.不要过于依赖REDIS,这东西是很好,但还是得以数据库为基本,你不能只把数据保存在REDIS,数据库也得保存,不然redis数据丢了,又或者显示的不对,到时候就有得你哭了。

3.每个程序都是精密的齿轮,不要觉得这个语句操作错误不可能发生,就不对语句的结果进行处理,万一出错,你很可能找不到错误在哪里。精密的程序才是合格的程序。

fastcgi_param 详解

作者: 分类: lnmp 时间: 2016-08-31 评论: 暂无评论
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;#脚本文件请求的路径  
fastcgi_param  QUERY_STRING       $query_string; #请求的参数;如?app=123  
fastcgi_param  REQUEST_METHOD     $request_method; #请求的动作(GET,POST)  
fastcgi_param  CONTENT_TYPE       $content_type; #请求头中的Content-Type字段  
fastcgi_param  CONTENT_LENGTH     $content_length; #请求头中的Content-length字段。  
  
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name; #脚本名称   
fastcgi_param  REQUEST_URI        $request_uri; #请求的地址不带参数  
fastcgi_param  DOCUMENT_URI       $document_uri; #与$uri相同。   
fastcgi_param  DOCUMENT_ROOT      $document_root; #网站的根目录。在server配置中root指令中指定的值   
fastcgi_param  SERVER_PROTOCOL    $server_protocol; #请求使用的协议,通常是HTTP/1.0或HTTP/1.1。    
  
fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;#cgi 版本  
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;#nginx 版本号,可修改、隐藏  
  
fastcgi_param  REMOTE_ADDR        $remote_addr; #客户端IP  
fastcgi_param  REMOTE_PORT        $remote_port; #客户端端口  
fastcgi_param  SERVER_ADDR        $server_addr; #服务器IP地址  
fastcgi_param  SERVER_PORT        $server_port; #服务器端口  
fastcgi_param  SERVER_NAME        $server_name; #服务器名,域名在server配置中指定的server_name  
  
#fastcgi_param  PATH_INFO           $path_info;#可自定义变量  
  
# PHP only, required if PHP was built with --enable-force-cgi-redirect  
#fastcgi_param  REDIRECT_STATUS    200;  

在php可打印出上面的服务环境变量
如:echo $_SERVER['REMOTE_ADDR']
转载地址

Redis教程 哈希

作者: 分类: 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 教程 队列

作者: 分类: 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 

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