
nosql(redis,mamcached,mogodb)
深夜程序猿
everything in front of you is the best arrangement
展开
-
redis php 使用实例
redis的操作很多的,以前看到一个比较全的博客,但是现在找不到了。查个东西搜半天,下面整理一下php处理redis的例子,个人觉得常用一些例子。下面的例子都是基于php-redis这个扩展的。1,connect描述:实例连接到一个Redis.参数:host: string,port: int返回值:BOOL 成功返回:TRUE;失败返回:FALSE查看复制打印?示例: ...转载 2019-04-29 16:12:44 · 1925 阅读 · 0 评论 -
PHP实现redis限制单ip、单用户的访问次数功能
Method 1通过key记录IP:rate.limiting:$IP,同时初始时设置期限为60秒,如果超时则重新设置,否则进行判断,当一分钟内访问超过100次,则禁止访问。$isKeyExists = rate.limiting:$IPif ($isKeyExists == 1) { $times = INCR rate.limiting:$IP if ($times &...转载 2019-05-15 14:39:59 · 1258 阅读 · 0 评论 -
基于Redis实现的Rate limiter (限流器)
首先建议大家好好阅读一下官方文章,如何利用incr命令实现一些应用模式(Pattern)。INCR命令的介绍与应用本文不对原文进行大段翻译,主要讲下自己的理解。模式:计数器Redis原子性自增操作,最明显的应用就是计数器了,类似Java的AtomicInteger。可以结合EXPIRE,INCRBY,GET,SET,DECR等操作做很多很多事情。多命令的情况下要注意事务或者使用Lu...转载 2019-05-16 09:51:49 · 9542 阅读 · 0 评论 -
Redis实现简单消息队列(Python)
任务异步化打开浏览器,输入地址,按下回车,打开了页面。于是一个HTTP请求(request)就由客户端发送到服务器,服务器处理请求,返回响应(response)内容。我们每天都在浏览网页,发送大大小小的请求给服务器。有时候,服务器接到了请求,会发现他也需要给另外的服务器发送请求,或者服务器也需要做另外一些事情,于是最初们发送的请求就被阻塞了,也就是要等待服务器完成其他的事情。更多的时候...转载 2019-05-16 10:00:19 · 5631 阅读 · 0 评论 -
redis解决高并发问题,如商品秒杀
redis真的是一个很好的技术,它可以很好的在一定程度上解决网站一瞬间的并发量,例如商品抢购秒杀等活动。。。redis之所以能解决高并发的原因是它可以直接访问内存,而以往我们用的是数据库(硬盘),提高了访问效率,解决了数据库服务器压力。为什么redis的地位越来越高,我们为何不选择memcache,这是因为memcache只能存储字符串,而redis存储类型很丰富(例如有字符串、LIST、...转载 2019-05-16 10:01:50 · 6120 阅读 · 0 评论 -
redis实现高并发下的抢购/秒杀功能
抢购/秒杀是如今很常见的一个应用场景,那么高并发竞争下如何解决超抢(或超卖库存不足为负数的问题)呢?常规写法:查询出对应商品的库存,看是否大于0,然后执行生成订单等操作,但是在判断库存是否大于0处,如果在高并发下就会有问题,导致库存量出现负数这里我就只谈redis的解决方案吧...我们先来看以下代码(这里我以laravel为例吧)是否能正确解决超抢/卖的问题:<?php...转载 2019-05-16 10:05:19 · 592 阅读 · 0 评论 -
php结合redis实现高并发下的抢购、秒杀功能的实例
抢购、秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个:1 高并发对数据库产生的压力2 竞争状态下如何解决库存的正确减少("超卖"问题)对于第一个问题,已经很容易想到用缓存来处理抢购,避免直接操作数据库,例如使用Redis。重点在于第二个问题常规写法:查询出对应商品的库存,看是否大于0,然后执行生成订单等操作,但是在判断库存是否大于0处,如果在高并发下就会有问题,导...转载 2019-05-16 10:14:19 · 413 阅读 · 0 评论 -
如何解决高并发,秒杀问题 - Redis轻松实现秒杀系统
相信不少人会被这个问题困扰,分享大家一篇这样的文章,希望能够帮到你!一、秒杀业务为什么难做?1)im系统,例如qq或者微博,每个人都读自己的数据(好友列表、群列表、个人信息);2)微博系统,每个人读你关注的人的数据,一个人读多个人的数据;3)秒杀系统,库存只有一份,所有人会在集中的时间读和写这些数据,多个人读一个数据。例如:小米手机每周二的秒杀,可能手机只有1万部,但瞬时进入的...转载 2019-05-16 10:23:51 · 14835 阅读 · 5 评论 -
php处理抢购类功能的高并发请求
本文以抢购、秒杀为例。介绍如何在高并发状况下确保数据正确。在高并发请求下容易参数两个问题1.数据出错,导致产品超卖。2.频繁操作数据库,导致性能下降。测试环境Windows7apache2.4.9php5.5.12php框架 yii2.0工具 apache bench (apache自带高并发请求工具)。通常处理方法从控制器可以看出代码思路。先查询商品库存。...转载 2019-05-16 10:21:10 · 1132 阅读 · 0 评论 -
redis+PHP实现高并发下秒杀数据入库的问题
在高并发下实现抢购秒杀功能中,我有一个疑问,就是数据入库的问题,什么时候入库。设想思路:1.判断他抢购成功了,立马把生成的订单数据写入mysql订单表,同时库存表字段减少1;2.判断抢购成功后,把用户的user_id存入到redis的list列表里(比如:order,以user_id为值的列表)。然后再用crontab定时去一个一个插入到mysql订单表里,同时库存表字段减少1。设想结果...转载 2019-05-16 10:25:15 · 1293 阅读 · 0 评论 -
MQ对比之RabbitMQ & Redis
消息队列选择:RabbitMQ & RedisRabbitMQRabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现的产品,RabbitMQ是一个消息代理,从“生产者”接收消息并传递消息至“消费者”,期间可根据规则路由、缓存、持久化消息。“生产者”也即message发送者以下简称P,相对应的“消费者”乃message接收者以下...转载 2019-05-16 10:52:25 · 221 阅读 · 0 评论 -
用redis实现消息队列(实时消费+ack机制)
消息队列首先做简单的引入。MQ主要是用来:解耦应用、 异步化消息 流量削峰填谷目前使用的较多的有ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ等。网上的资源对各种情况都有详细的解释,在此不做过多赘述。本文仅介绍如何使用Redis实现轻量级MQ的过程。为什么要用Redis实现轻量级MQ?在业务的实现过程中,就算没有大量的流量...转载 2019-05-17 09:58:29 · 14209 阅读 · 5 评论 -
Redis实现简单消息队列
任务异步化打开浏览器,输入地址,按下回车,打开了页面。于是一个HTTP请求(request)就由客户端发送到服务器,服务器处理请求,返回响应(response)内容。我们每天都在浏览网页,发送大大小小的请求给服务器。有时候,服务器接到了请求,会发现他也需要给另外的服务器发送请求,或者服务器也需要做另外一些事情,于是最初们发送的请求就被阻塞了,也就是要等待服务器完成其他的事情。更多的时候...转载 2019-05-17 10:01:27 · 173 阅读 · 0 评论 -
php中使用redis队列操作实例代码
例1,入队操作:<?php$redis = new Redis();$redis->connect('127.0.0.1',6379);while(True){ try{ $value = 'value_'.date('Y-m-d H:i:s'); $redis->LPUSH('key1',$value); sleep(rand()%3);...转载 2019-05-17 10:05:43 · 2674 阅读 · 0 评论 -
PHP之异步处理
PHP之 异步处理个人理解在项目中使用消息队列一般是有如下几个原因:1.把瞬间服务器的请求处理换成异步处理,缓解服务器的压力2.实现数据顺序排列获取redis 队列 实现 异步处理的效果<?php/** * 请求过来以后,如果数据过大,导致响应速度过慢,则可以先把要处理的数据保存到redis中, 然后直接去响应 *///redis数据入队操作 $redis ...转载 2019-05-13 09:34:50 · 4729 阅读 · 0 评论 -
基于Redis的限流系统的设计
本文讲述基于Redis的限流系统的设计,主要会谈及限流系统中限流策略这个功能的设计;在实现方面,算法使用的是令牌桶算法来,访问Redis使用lua脚本。1、概念In computer networks,rate limitingis used to control the rate of traffic sent or received by a network interface...转载 2019-05-15 14:35:05 · 292 阅读 · 0 评论 -
基于Redis的限流器的实现
1 概述系统中的接口通常都有限流,比如 70次/秒 ,如何保证我们的接口的调用次数在超过第三方接口限流的时候快速失败呢?这时候就需要限流器了。下面是笔者用redis实现限流器的流程图。2 代码/*** 获取限流权限* @param key* @param millisecond 毫秒数* @param limitCount 限流次数* @return*/p...转载 2019-05-15 14:31:48 · 1909 阅读 · 0 评论 -
Redis 数据类型
Redis 数据类型Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。String(字符串)string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。string 类型是二进制安全的。意思是 redis 的 st...转载 2019-05-14 15:19:55 · 159 阅读 · 0 评论 -
PHP 使用 Redis
安装开始在 PHP 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 PHP redis 驱动,且你的机器上能正常使用 PHP。 接下来让我们安装 PHP redis 驱动:下载地址为:https://github.com/phpredis/phpredis/releases。PHP安装redis扩展以下操作需要在下载的 phpredis 目录中完成:$ wg...转载 2019-05-14 15:23:35 · 826 阅读 · 0 评论 -
Redis(命令、键key、字符串String、哈希Hash、列表List、集合Set、有序集合sorted set、HyperLogLog)
Redis 命令Redis 命令用于在 redis 服务上执行操作。要在 redis 服务上执行命令需要一个 redis 客户端。Redis 客户端在我们之前下载的的 redis 的安装包中。语法Redis 客户端的基本语法为:$ redis-cli实例以下实例讲解了如何启动 redis 客户端:启动 redis 客户端,打开终端并输入命令redis-cli。该...转载 2019-05-14 15:32:55 · 569 阅读 · 0 评论 -
Redis (发布订阅、事务、脚本、连接、服务器)
Redis 发布订阅Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。Redis 客户端可以订阅任意数量的频道。下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:当有新消息通过 PUBLISH 命令发送给频道 channel1 ...转载 2019-05-14 15:37:53 · 229 阅读 · 0 评论 -
Redis(数据备份与恢复、安全、性能测试、客户端连接、管道技术、分区)
Redis 数据备份与恢复RedisSAVE命令用于创建当前数据库的备份。语法redis Save 命令基本语法如下:redis 127.0.0.1:6379> SAVE 实例redis 127.0.0.1:6379> SAVE OK该命令将在 redis 安装目录中创建dump.rdb文件。恢复数据如果需要恢复数据,只需将备份文件 (du...转载 2019-05-14 15:42:56 · 150 阅读 · 0 评论 -
Redis 安装与配置
Redis 简介Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。Redis 与其他 key - value 缓存产品有以下三个特点:Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存...转载 2019-05-14 15:47:33 · 1248 阅读 · 0 评论 -
PHP操作Redis常用技巧总结
本文实例讲述了PHP操作Redis常用技巧。分享给大家供大家参考,具体如下:一、Redis连接与认证//连接参数:ip、端口、连接超时时间,连接成功返回true,否则返回false$ret = $redis->connect('127.0.0.1', 6379, 30);//密码认证:成功返回true,否则返回false$ret = $redis->auth('123...原创 2019-05-14 16:00:42 · 232 阅读 · 0 评论 -
Redis和Memcache的区别总结-京东阿里面试
集群:redis 和memcached都支持集群数据类型Redis支持的数据类型要丰富得多,Redis不仅仅支持简单的k/v类型的数据,同时还提供String,List,Set,Hash,Sorted Set,pub/sub,Transactions数据结构的存储。其中Set是HashMap实现的,value永远为null而已memcache支持简单数据类型,需要客户端自己处理复杂...转载 2019-05-15 14:04:16 · 451 阅读 · 0 评论 -
Redis 和 Memcached 的区别
Redis与Memcached的区别传统MySQL+ Memcached架构遇到的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题: 1.MySQL需要不断进行拆库拆表,Memcached也需不断跟着扩容,扩容和维护工作占据大量开发...转载 2019-05-15 14:04:50 · 1506 阅读 · 0 评论 -
redis和mongodb的比较
RedisRedis的优点:支持多种数据结构,如 string(字符串)、 list(双向链表)、dict(hash表)、set(集合)、zset(排序set)、hyperloglog(基数估算)支持持久化操作,可以进行aof及rdb数据持久化到磁盘,从而进行数据备份或数据恢复等操作,较好的防止数据丢失的手段。支持通过Replication进行数据复制,通过master-slave机制...转载 2019-05-15 14:09:42 · 1037 阅读 · 0 评论 -
redis持久化的几种方式
1、前言Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集 合和有序集合。支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能。所以Redis也可以被看成是一个数据结构服务 器。Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为“半持久化模式”...转载 2019-05-15 14:14:59 · 104 阅读 · 0 评论 -
Redis · 特性分析 · AOF Rewrite 分析
AOF介绍Redis提供两种持久化机制RDB: 将数据库的快照以二进制的方式保存到磁盘; AOF: 将所有写入命令及相关参数以协议文本的方式写入文件并持久保存磁盘。本文只关心AOF,简单介绍一下:Redis Server将所有写入的命令转换成协议文本的方式写入AOF文件,例如:Server收到 set key value的的写入命令,server会进行以下几步操作:将命令转换成协议...转载 2019-05-15 14:17:08 · 153 阅读 · 0 评论 -
redis持久化RDB和AOF
Redis 持久化:提供了多种不同级别的持久化方式:一种是RDB,另一种是AOF.RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)。AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。 AOF 文件中的命令全部以 Redis 协议的格式来保存,新命令会被追加到文件的末尾。 Redis...转载 2019-05-15 14:20:30 · 116 阅读 · 0 评论 -
Redis内存使用优化与存储
##Redis数据类型 最为常用的数据类型主要有五种:String, Hash, List, Set和SortedSet. redis内部使用一个redisObject对象来表示所有的key和value。redisObject最主要的信息如下图所示: type代表一个value对象具体是何种数据类型,encoding是不同数据类型在redis内部的存储方式,比如:type=string代表v...转载 2019-05-15 14:29:54 · 149 阅读 · 0 评论 -
【高并发简单解决方案】redis队列缓存 + mysql 批量入库 + php离线整合
需求背景:有个调用统计日志存储和统计需求,要求存储到mysql中;存储数据高峰能达到日均千万,瓶颈在于直接入库并发太高,可能会把mysql干垮。问题分析思考:应用网站架构的衍化过程中,应用最新的框架和工具技术固然是最优选择;但是,如果能在现有的框架的基础上提出简单可依赖的解决方案,未尝不是一种提升自我的尝试。解决: 问题一:要求日志最好入库;但是,直接入库mysql确实扛不住...转载 2019-05-13 09:40:27 · 473 阅读 · 0 评论