Redis实战分布式锁

背景在很多互联网产品应用中,有些场景需要加锁处理,比如:秒杀,全局递增ID,楼层生成等等。大部分的解决方案是基于DB实现的,Redis为单进程单线程模式,采用队列模式将并发访问变成串行访问,且多客户端对Redis的连接并不存在竞争关系。其次Redis提供一些命令SETNX,GETSET,可以方便实现分布式锁机制。Redis命令介绍使用Redis实现分布式锁,有两个重要函数需要介绍SETNX命令(S
阅读全文

实例:Tag 标签

在社交网站中用户都可以为自己设置的兴趣标签,后台就可以给标记相同标签的人互推好友,或者向某一批相同标签的人发起活动。设置标签 public function setTags($user_id) {     $redis = new \Redis();     
阅读全文

实例:分布式锁

当程序的访问量大到一定程度之后我们通常会采用分布式架构,使用多台应用程序服务器来运行代码,之前文章我们已经介绍过在分布式架构下如何使用独立存储 SESSION。在高并发的情况下还有一种情况很常见,尤其是在多进程,多线程的情况下使用独立 Redis 服务器时,当某个时间缓存不存在,请求量又很大的时候,大量请求涌向数据库,导致数据库崩溃。这时我们可以使用分布式锁来解决问题。
阅读全文

实例:抽奖

实例:抽奖本文使用 Redis 的集合数据结构制作定期开奖,并不是即时开奖。形式类似微博转发抽奖。建立待抽奖名单待抽奖名单可以一次性建立,也可以对符合条件的及时创建待抽奖名单。本文采用一次性建立,和即时创建用法一致都是通过 sAdd 实现<?php $redis = new \Redis(); $redis->connect('127.0.0.
阅读全文

实例:限制访问次数

实例:限制访问次数上文我们演示了每分钟只允许访问一次,接下来我们演示一下共允许调用1000次,常见业务场景如快递信息调取接口,接口是付费的。比如100元可以查询1000次。共允许调用1000次 public function somthing($user_id) {     $redis = new&nb
阅读全文

实例:限时访问

实例:限时访问在接口开发工作中很常见的限时访问功能,每个用户每分钟只允许调用一次接口。或者论坛中,每个用户五分钟之内只能提交一次评论。本章我们就来实现一个简单的限时访问,每个用户每分钟只允许调用一次接口。在高并发的项目中,通常我们不会用业务层代码来处理限时访问,更常见的是用 Nginx + Lua + Redis 来实现限时访问。每分钟只允许调用一次接口public function&n
阅读全文

实例:文章列表+分页

实例:文章列表+分页因为PHP的数据结构比较少,所以从事PHP的人 redis的数据结构并不是很了解,本文用的文章分页用redis的例子进行实现。采用的redis结构为:哈希+有序集合<?php  $redis = new Redis;  $redis->connect('127.0.0.1',6379,0); &
阅读全文

实例:排行榜

实例:排行榜排行榜功能几乎存在于所有项目中,如按照发布时间倒序的新闻列表,按照考试成绩正序的成绩表,按照浏览量从大到小的话题。Redis 中列表和有序集合两种数据结构都非常适合用于排行榜系统中。本文采用使用有序集合来开发一个投票项目来演示排行榜。1.创建投票选项1.1 创建投票方法使用Request::instance()->post()接受数据保存到数据库public funct
阅读全文

实例:快存!抗住高并发,数据队列

实例:快存!抗住高并发,数据队列通过 Redis 建立数据队列常见的有两种方法,一是Redis 本身自带订阅消息队列模型,二是使用 Redis 的 list 数据结构。本文使用 list 数据结构来演示 Redis 数据队列功能。如果复杂的项目中还是更推荐使用 RabbitMQ 来作为数据队列。因为 RabbitMQ 提供的数据队列更完善,比如离线客户端离线,服务器端会保留队列内容,等客户端上线后
阅读全文

实例:快读!高速数据缓存

实例:快读!高速数据缓存Redis 最简单的用法就是直接存储字符串,Redis 写入和读取性能远高于 MySQL。所以我们经常使用 Redis 作为缓存层为 MySQL 数据库保驾护航。Cache 方法默认使用的是文件缓存,需要自行去 config.php 配置文件中修改缓存存储方式修改配置文件默认配置[文件缓存] 'cache' => [ &nb
阅读全文
首页 12 末页 共 18 条记录