Redis

php抽奖功能

旧城冷巷雨未停 提交于 2020-08-12 06:33:54
在项目开发中经常会遇到花钱抽奖类型的需求。但是老板总是担心用户用小钱抽到大奖。这样会导致项目亏损。下边这段代码可以有效制止抽奖项目亏钱。 个人奖池: 语言:thinkphp redis mysql 表:desire抽奖商品表 desire_log用户抽奖奖品表 user_desire_log用户抽奖记录表 desire_risk抽奖风控表 需求:用户奖池分为进行中奖池 和已完成奖池 当用户抽到大奖后 用户个人奖池重置 否则将继续抽奖 最后一次抽奖必中大奖 通过风控金额来判断用户是否可以抽大奖   当所有用户已完成的抽奖 盈利大于风控金额的时候可以让用户抽大奖 否则用户抽不到大奖 <? php     // 抽奖接口 public function desire() { $userData = $this ->userSessionData(); // /用户的唯一标识 $time = time (); $this ->limit_reward_time( $userData ['id'], $time ); // /限制抽奖间隔时间 防止被恶意刷奖品 //活动开启开关 $num = input('num/d' ); if (! $num ) { output( '1008', '参数错误' ); } if ( $num !=1 ){ if ( $num !=10 ){ if (

PHP 并发场景的 3 种解决方案

依然范特西╮ 提交于 2020-08-12 05:47:44
在秒杀,抢购等并发场景下,可能会出现超卖的现象,在 PHP 语言中并没有原生提供并发的解决方案,因此就需要借助其他方式来实现并发控制。 列出常见的解决方案有: 使用队列,额外起一个进程处理队列,并发请求都放到队列中,由额外进程串行处理,并发问题就不存在了,但是要额外进程支持以及处理延迟严重,本文不先不讨论这种方法。 利用数据库事务特征,做原子更新,此方法需要依赖数据库的事务特性。 借助文件排他锁,在处理下单请求的时候,用 flock 锁定一个文件,成功拿到锁的才能处理订单。 一、利用 Redis 事务特征 redis 事务是原子操作,可以保证订单处理的过程中数据没有被其它并发的进程修改。 示例代码: <?php $http = new swoole_http_server("0.0.0.0", 9509); // 监听 9509 $http->set(array( 'reactor_num' => 2, //reactor thread num 'worker_num' => 4 //worker process num )); $http->on('request', function (swoole_http_request $request, swoole_http_response $response) { $uniqid = uniqid('uid-', TRUE); /

【赵强老师】什么是Redis Cluster

末鹿安然 提交于 2020-08-12 05:43:05
(一)什么是Redis Cluster? Redis Cluster是Redis的分布式解决方案,在Redis 3.0版本正式推出的,有效解决了Redis分布式方面的需求。当遇到单机内存、并发、流量等瓶颈时,可以采用Cluster架构达到负载均衡的目的。 Redis使用中遇到的瓶颈 我们日常在对于redis的使用中,经常会遇到一些问题: (1)高可用问题,如何保证redis的持续高可用性。 (2)容量问题,单实例redis内存无法无限扩充,达到32G后就进入了64位世界,性能下降。 (3)并发性能问题,redis号称单实例10万并发,但也是有尽头的。 Redis-Cluster的优势  (1)官方推荐,毋庸置疑。 (2)去中心化,集群最大可增加1000个节点,性能随节点增加而线性扩展。 (3)管理方便,后续可自行增加或摘除节点,移动分槽等等。 (4)简单,易上手。 (二)数据分布理论与Redis的数据分区 分布式数据库首要解决把整个数据集按照分区规则映射到多个节点的问题,即把数据集划分到多个节点上,每个节点负责整个数据的一个子集。常见的分区规则有哈希分区和顺序分区。Redis Cluster采用哈希分区规则。 虚拟槽分区巧妙地使用了哈希空间,使用分散度良好的哈希函数把所有的数据映射到一个固定范围内的整数集合,整数定义为槽(slot)。比如: Redis Cluster槽的范围是0

【云栖号案例 | 互联网】品推宝营销内容与流程管理平台上云 减少开发周期

感情迁移 提交于 2020-08-12 05:42:19
云栖号案例库: 【点击查看更多上云案例】 不知道怎么上云?看云栖号案例库,了解不同行业不同发展阶段的上云方案,助力你上云决策! 公司介绍 北京品推宝移动科技有限公司为品牌广告主或营销公司提供一个高度可视化、自动化、智能化的内容协同管理平台,用于大规模管理营销内容资产和委派内容创作任务。通过机器学习和推荐算法,实时分析海量数据来寻找、筛选、推荐与品牌营销目标相符合的个人或团队,从而帮助品牌广告主或营销公司找到最适合的合作伙伴和营销内容,将营销效果最大化。 业务痛点 我们公司打算新部署一个项目,对上线时间和研发效率要求高。对后期的业务规模不可控,要求设计弹性升级方案。 数据安全方面,希望有自动备份的机制,不需要我们的研发同学投入精力维护。 数据处理方面,针对多媒体数据具有强大的转码、压缩、剪辑等处理能力,最终输出为全平台支持的内容格式。 数据存储方面,希望具有安全、低成本、高可用、可靠性,并且容量和处理能力弹性扩展。 解决方案 方案细节: 使用阿里云的SLB配合EIP实现高可用架构,做流量分发,应用负载。 部署云安全中心实现服务器的基础防护,防御基本的木马病毒漏洞。 采用Redis做缓存数据库,解决活动期间的高并发访问瓶颈问题。 采用RDS存储结构化数据、用户信息等,RDS的高可用版以及自动备份策略可以满足我们公司对的数据安全要求。 采用MongoDB存储非结构化数据

分布式锁-Redission-Lock锁的使用与原理

本秂侑毒 提交于 2020-08-12 05:41:48
环境准备 添加 Maven 依赖 <dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.12.0</version> </dependency> 添加配置类 @Configuration public class MyRedissonConfig { @Bean(destroyMethod = "shutdown") RedissonClient redisson() throws IOException { Config config = new Config(); config.useSingleServer().setAddress("redis://192.168.56.10:6379"); return Redisson.create(config); } } 基本使用代码如下: @GetMapping("/hello") @ResponseBody public String hello() { //获取Lock锁,设置锁的名称 RLock lock = redisson.getLock("my-lock"); //开启 lock.lock(); try { System.out.println("上锁:" + Thread

我司使用了六年的分布式锁

天涯浪子 提交于 2020-08-12 05:39:52
导读:不管是在单体应用时代还是分布式应用时代,一些保障我们数据安全的手段从来都未过时,只是底层实现发生了一些变化,今天我就来分享一下我司使用了六年的分布式锁方案,希望对一些同学有一些帮助。 关键词:分布式,并发,原子性 前言 提到数据一致性、操作原子性,诸如此类的一些与并发有关的词汇时不知道你第一时间会联想到什么呢?我相信大多数人可能会想到“锁”,为什么是锁呢,这个我不多说,大家心里应该都明白。在单体应用时代,我们使用jvm提供的锁就可以很好的工作,但是到了分布式应用时代,jvm提供的锁就行不通了,那么势必要借助一些跨jvm的临界资源来支持锁的相关语义,比如redis,zookeeper等。 步入正题 我今天就来分享下我司基于redis来实现的分布式锁,2013年投入使用,也算是久经沙场。但是也存在一些设计上的缺陷,这个我后面也会提到,希望大家秉着互相学习的态度文明交流,别一上来就说这不行那不行,还是那句话“适合自己的才是最好的”。 加锁过程分析 我第一次读代码的时候,有这么几个疑惑: Q1:为什么不使用 SET key value [expiration EX seconds|PX milliseconds] [NX|XX] 这个指令来实现key的自动过期呢,反而放到应用代码判断key是否过期? A1:我们的分布式锁开发的时候SET命令还不支持NX、PX

搭建redis集群及安装ESXI6.7

∥☆過路亽.° 提交于 2020-08-12 05:28:10
1、安装配置redis的cluster集群 1.1 规划 操作系统:CentOS Linux release 7.6.1810 (Core) master:c1 c2 c3 slave:c4 c5 c6 1.2 在各个虚拟机安装redis [root@c4 src]#wget http://download.redis.io/releases/redis-3.2.12.tar.gz [root@c4 src]#tar xf redis-3.2.12.tar.gz [root@c4 src]#cd redis-3.2.12 [root@c4 src]#make [root@c4 src]#cp redis.conf /usr/local/redis/etc/ 1.3 修改每个Redis的配置文件 cluster-enabled yes #去掉注释 #bind 127.0.0.1 #注释这一行 daemonize yes #把no改成yes requirepass 123456 [root@c4 src]#/usr/local/bin/redis-server /usr/local/etc/redis.conf #启动redis 1.4 解决ruby版本问题 [root@c1 src]# pwd /usr/local/src [root@c1 src]# wget https:/

Redis从入门到精通:中级篇

喜你入骨 提交于 2020-08-12 05:12:01
原文链接:http://www.cnblogs.com/xrq730/p/8944539.html,转载请注明出处,谢谢 本文目录 上一篇文章以认识Redis为主,写了Redis系列的第一篇,现在开启第二部分的学习,在本文中,我们将看到以下内容: Redis数据结构String、Hash、List、Set、SortedSet及相关操作,提一下Redis在3.2.0之后有新增了一种GEO的数据类型表示地理位置,不过本文这种数据结构略过 Redis其他一些常用命令,分为Key操作与服务器操作 Redis事务机制 主要以实战为主,希望通过本文可以让大家掌握Redis的基本使用。 本来这篇文章还准备加上Redis线程模型分析的,但是写完发现篇幅实在太长,就把Redis线程模型放到最后一篇中了,也挺好的,本文专注于对Redis命令的讲解。 另外说一下,本文讲Redis中的数据结构,但是 数据结构本身不在本文的讲解范围内 ,如果想知道Hash、List、Set等数据结构特点及使用场景,可以自己查阅数据结构相关资料。 String数据结构的基本操作 首先说一下数据结构String,这是Redis中最简单的一种数据结构,和MemCache数据结构是一样的,即Key-Value型的数据,根据Redis官方文档, Value最大值为512M 。 下面用表格来看一下String操作的相关命令: 命令

谈一谈数据库的那些事

陌路散爱 提交于 2020-08-12 05:09:40
文章目录 Question1:介绍一下数据库存储引擎,以及罗列你所知道的几种不同的数据库存储引擎? Answer1: 数据库存储引擎含义 存储引擎1:InnoDB ( B+树 ) 存储引擎2:TokuDB( Fractal Tree-节点带数据 ) 存储引擎3:MyIASM 存储引擎4:Memory Question2:谈一谈如何设计出高效的索引(或谈一谈你所知道的索引设计法则或如何在索引层面提高查询速度)? Answer2: Question3:介绍一下数据库的三大范式? Answer3: Question4:介绍一下数据库事务ACID ? Answer4: Question5:介绍一下数据库事务隔离机制? Answer5: Question6:介绍一下数据库事务存储过程( 特定功能的SQL语句集)? Answer6: Question7:谈一谈触发器(一段能自动执行的程序)? Answer7: Question8:介绍一下数据库并发策略? Answer8: Question9:介绍一下数据库锁? Answer9: Question10:介绍一下数据库基于Redis的分布式锁? Answer10: Question11:介绍一下数据库分区、分表技术? Answer11: Question12:谈一谈数据库两阶段提交协议? Answer12: Question13

互联网业务全球化互通组网

假装没事ソ 提交于 2020-08-12 05:09:14
云栖号最佳实践:【 点击查看更多上云最佳实践 】 这里有丰富的企业上云最佳实践,从典型场景入门,提供一系列项目实践方案,降低企业上云门槛的同时满足您的需求! 场景描述 本方案适用从事全球化业务的客户,希望借助全球互通的网络,实现多地域的互通。同时在全球互联的网络下,搭建应用多地部署。如果业务中涉及到高速通道,提供高速通道迁移云企业网的操作演练;涉及到跨账号多 VPC 下的数据迁移和同步,本方案提供详细的操作步骤,帮助客户快速完成演练。 解决问题 借助云企业网解决网络互通 高速通道到云企业网的平滑迁移 RDS 的数据互通,特别是跨账号多 VPC 的数据同步 应用的快速部署 产品列表 云企业网 CEN 云服务器 ECS 数据库 RDS 数据库 Redis 数据传输 DTS 负载均衡 SLB 块存储 专有网络 VPC 直达最佳实践 》》 来源: oschina 链接: https://my.oschina.net/u/4258260/blog/4332199