Redis
assasinSteven
本人暂时没啥说的......
请鼓掌......
展开
-
Redis分页
<?phpclass RedisPage { protected $_redis; protected $_redis_ip ; protected $_redis_port ; protected $_redis_db ; protected $_hash_prefix; /** * RedisPage constructor. * 初始化redis配置 */ public function __cons.原创 2022-05-11 11:36:17 · 1310 阅读 · 0 评论 -
PHP+Redis实现分页
废话少说,上代码吧<?phpclass RedisPage { protected $_redis; protected $_redis_ip ; protected $_redis_port ; protected $_redis_db ; protected $_hash_prefix; /** * RedisPage constructor. * 初始化redis配置 */ public func原创 2022-04-15 12:59:09 · 1330 阅读 · 0 评论 -
Redis系列(八):缓存到底该如何做到高可用?
什么情况会导致缓存不可用? 单点问题: 什么是单点问题呢?就是我们在使用缓存时,有时候由于 QPS、内存容量只需要一个端口(此处的一个端口是指一主一从)就可以扛住所有读写请求时,比如写 QPS 5k,读 QPS 30k,内存 5G;根据这个数据规模,DBA 在部署资源时会选择只部署一个节点。当缓存资源由于某些情况导致服务器宕机或服务不可用时,由于只部署了一个端口,从而导致当前整个应用服务不可用(这种情况之前在实际生产环境中真实发生过,直接炸裂),这就是所谓的单点问题;其实在分布式架构中,为了做.转载 2020-08-19 19:04:46 · 157 阅读 · 0 评论 -
Redis系列(七):缓存只是读写回种这么简单吗?
前面利用 6 篇文章讲述了 Redis 相关的基础知识,相信小伙伴们对 Redis 已经有了一个比较深入的认识和理解了;本文来讲讲实际生产环境中 Redis 作为常用缓存组件是怎么和 DB(关系型数据库,比如 MySQL)配合使用的。看到这里可能有些朋友会内心肯定会淡淡的说上一句:写操作先更新 DB,然后在更新缓存,读操作先读缓存,如果没有读 DB 回种缓存,然后返回结果不就完事了么,这有什么好讲的?只要你有这样的疑问,那么请你一定认真看完本文,因为缓存读写策略远不止你想的那么简单,下面我们就来分析转载 2020-08-19 19:03:57 · 292 阅读 · 0 评论 -
Redis系列(六):Redis线程模型
最近有朋友说,能不能写一篇关于 Redis 线程模型的文章,面试被问到不会导致比较尴尬;今天就来给安排上。Redis 事件是什么?不是讲线程模型吗?和事件有什么关系?实际上 Redis 是一个事件驱动程序;大白话理解一下:就是通过事件的方式来运行 Redis 的。比如客户端向服务端发起一个 get 请求,在做好了建连、发送请求、响应请求、关闭连接等准备操作后,就触发了一个事件。所以在了解线程模型之前,先来看看事件。Redis 的事件分为两种,分别是文件事件和时间事件两种。什么是文件事件转载 2020-08-19 19:02:47 · 187 阅读 · 0 评论 -
Redis系列(五): Redis 集群搭建!
前言上篇文章我们介绍了 Redis 集群的工作原理机制,本文我们就来手动搭建一个 Redis 集群玩玩。强烈建议大家在开始本篇文章之前先看看上篇文章的介绍,这样对集群的安装会更加清楚一些。Redis 集群工作原理环境及版本说明 环境:MacOS 10.14.6 Redis 版本:Redis-4.0.10 最终目标 集群最终会有 6 个节点,3 主 3 从 7000 - 7002 三个节点为主节点 7003 - 7003 三个节点为从节点 700转载 2020-08-19 19:02:05 · 134 阅读 · 0 评论 -
Redis系列(四):Redis集群工作原理
前言插播一个小插曲,本来文章已经写好准备发布了,手贱清理了缓存导致文本内容全部丢失,以至于重新写稿。借此提醒广大粉丝朋友,平时一定要养成备份的好习惯,谨防出现博主这种愚蠢的行为。上篇文章讲解了缓存剔除的流程,以及 RDB 文件和 AOF 文件的原理介绍,本文我们来讲讲数据复制和集群工作的原理。目录 主从数据同步原理分析。 Redis 集群工作原理剖析。 集群槽指派机制。 集群服务自动检测 & 故障转移恢复操作。 主从数据同步原理分析主从数据同步转载 2020-08-19 19:00:37 · 297 阅读 · 1 评论 -
Redis系列(三):缓存过期该如何剔除?RDB和AOF又是什么?
前言相信很多朋友和我一样,平时工作中经常用到 Redis 的过期特性,还有通过 RDB 和 AOF 文件恢复数据,但是它们是如何工作的,本文就来介绍一下;通过了解底层实现原理,从而更好的整体把控系统的正常运行。目录 Redis 的缓存过期策略 RDB 的实现原理 AOF 的实现原理 Redis 的缓存过期策略常见的缓存过期策略大概有如下几种: 定时剔除策略 定期剔除策略 惰性剔除策略 定时剔除策略定时剔除是指在 Redis 后台启动转载 2020-08-19 18:59:39 · 311 阅读 · 0 评论 -
Redis系列之扫盲篇(一)
目录 Redis 是什么? Redis 安装。 基础命令扫盲。 Redis 是什么?Redis 是一款由 C 语言编写的、分布式的、高性能的、非关系型数据库,其拥有超高的吞吐量(每秒 10w,我司实际使用场景中单端口读请求最高 8w,写请求 5w,具体得看实际使用场景和机器性能),但由于其基于内存操作的,内存相对比较昂贵的,所以一般只有在并发相对比较高且存储要求相对较小的场景中被广泛使用(如果有钱一般可以不用考虑内存的事情,哈哈)。想说一句多余的话,为什么要学习 Red转载 2020-08-19 18:58:30 · 121 阅读 · 0 评论 -
性能测试之redis集群监控环境搭建:prometheus + redis_exporter + grafana
搭建redis集群1、环境操作系统:centos7.4redis版本:redis-5.0.4说明:一台云服务器(云服务器抢购地址)模拟6个redis节点,3个master,3个slaveredis安装:https://www.cnblogs.com/uncleyong/p/9882843.html2、创建集群节点目录mkdir /usr/local/redis_clustercd /usr/local/redis_cluster/mkdir -p 7001/da.原创 2020-07-06 16:39:16 · 1690 阅读 · 0 评论 -
Redis 9种数据结构以及它们的内部编码实现
90%的人知道Redis 5种最基本的数据结构;只有不到10%的人知道8种基本数据结构,5种基本+bitmap+GeoHash+HyperLogLog;只有不到5%的人知道9种基本数据结构,5.0最新版本数据结构Streams;只有不到1%的人掌握了所有9种基本数据结构以及8种内部编码;掌握这篇文章的知识点,让你成为面试官眼中Redis方面最靓的仔!说明:本文基于Redis-...原创 2020-01-13 22:10:22 · 1789 阅读 · 1 评论 -
面试官Redis这些必问
分布式缓存缓存好处:高性能 + 高并发高性能(常用)数据库查询耗费了800ms,其他用户对同一个数据再次查询 ,假设该数据在10分钟以内没有变化过,并且 10 分钟之内有 1000 个用户 都查询了同一数据,10 分钟之内,那 1000 个用户,每个人查询这个数据都感觉很慢 800ms比如 :某个商品信息,在 一天之内都不会改变,但是这个商品每次查询一次都要耗费2s,...原创 2020-01-03 10:35:45 · 247 阅读 · 0 评论 -
2020 Redis常见面试题
介绍:Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、 Key-Value 数据库,并提供多种语言的 API的非关系型数据库。 传统数据库遵循 ACID 规则。而 Nosql(Not Only SQL ...原创 2020-01-03 10:36:12 · 990 阅读 · 0 评论 -
排队叫号,前10名显示在屏幕上,用PHP实现
排队叫号,经常看到吧。在肯德基,麦当劳点完餐后,到另外一处,看着上面的屏幕排队拿餐;在去吃大餐,人很多的时候,是不是服务员在电脑上点几下,给你个号码,等下叫到你就可以进去吃饭啦;医院预约挂号,叫号。。。这种排队叫号已经很普遍的运用在我们的日常生活中。我们都知道这是一个队列,先进先出的原理。其实你们都可以实现啦。下面给大家分享一个排队叫号:在同一时刻,仅允许队列的前十进入相关操作,而其他的用户只...原创 2020-01-02 10:00:37 · 1423 阅读 · 0 评论 -
PHP与redis队列实现电商订单自动确认收货
一、场景之前做的电商平台,用户在收到货之后,大部分都不会主动的点击确认收货,导致给商家结款的时候,商家各种投诉,于是就根据需求,要做一个订单在发货之后的x天自动确认收货。所谓的订单自动确认收货,就是在在特定的时间,执行一条update语句,改变订单的状态。二、思路最笨重的做法,通过linux后台定时任务,查询符合条件的订单,然后update。最理想情况下,如果每分钟都有需要upd...原创 2020-01-03 10:36:23 · 290 阅读 · 0 评论 -
Redis实现购物车增删改与清空
购物车管理包含功能:提交商品到购物车、显示购物车列表、删除购物车里商品、修改购物车、清空购物车等等1、 购物车的实现方式:① 可以把购物车的数据,给存储到 session 里面,一旦关闭浏览器,则商品数据就丢失;②可以把购物车的数据,给存储到 cookie 里面,可以长久的保存购物车里面的数据;③可以把购物车的数据,给存储到数据库里面,可以长久的保存购物车里面的数据;④可...原创 2020-01-04 13:40:20 · 1071 阅读 · 0 评论 -
秒杀抢购时的超发,你是如何优化的
高并发下的数据安全我们知道在多线程写入同一个文件的时候,会存现“线程安全”的问题(多个线程同时运行同一段代码,如果每次运行结果和单线程运行的结果是一样的,结果和预期相同,就是线程安全的)。如果是MySQL数据库,可以使用它自带的锁机制很好的解决问题,但是,在大规模并发的场景中,是不推荐使用MySQL的。秒杀和抢购的场景中,还有另外一个问题,就是“超发”,如果在这方面控制不慎,会产生发送过多的情...原创 2020-01-04 13:40:30 · 308 阅读 · 0 评论 -
如何设计一个高并发高可用的秒杀或抢券系统
一个大型网站应用一般都是从最初小规模网站甚至是单机应用发展而来的,为了让系统能够支持足够大的业务量,从前端到后端也采用了各种各样技术,前端静态资源压缩整合、使用CDN、分布式SOA架构、缓存、数据库加索引、读写分离等等。 这些技术是高并发系统所必须的高并发系统设计原则高并发的接口/系统有一个共同的特性,那就是”快”。在系统其它条件既定的情况下,系统处理请求越快,用户得到反馈的时间...原创 2020-01-04 13:41:08 · 1569 阅读 · 0 评论 -
php结合Redis实现100万用户投票项目,并实时查看到投票情况的案例
场景:某网站需要对其项目做一个投票系统,投票项目上线后一小时之内预计有100万用户进行投票,希望用户投票完就能看到实时的投票情况这个场景可以使用redis+mysql冷热数据交换来解决。何为冷热数据交换?冷数据:之前使用的数据,热数据:当前使用的数据。交换:将Redis中的数据周期的存储到MySQL中业务流程用户进行投票后,首先将投票数据保存到Redis中,这些数...原创 2020-01-04 13:41:21 · 360 阅读 · 0 评论 -
Redis大神级知识点
1.什么是redis?Redis 是一个基于内存的高性能key-value数据库。2.Reids的特点 Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的K...原创 2020-01-06 14:25:20 · 153 阅读 · 0 评论 -
PHP&Redis实现排行榜实时更新
基本介绍Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数 (score) 却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O (1)。集合中最大的成员数为 2^32 - 1^ (...原创 2019-12-29 00:31:26 · 2085 阅读 · 0 评论 -
php与Redis实现一个100万用户的投票项目,实现实时查看投票情况?
微信分享里总是有一些亲子活动,或者参加某些大赛需要进行投票,而面向的是所有人都可以参与,或者有限制一个人每天能投票同一个参与者3票之类的。。。这些应用场景有很多。假如一个投票系统做一次投票活动1小时之内预计有100万用户进行投票,而且用户投票完成后就能查看到投票的实时情况,这个场景这个问题我们使用redis+mysql冷热数据交换来解决就好了。好了,什么是冷热数据交换呢?很土的解释一...原创 2019-12-27 09:43:27 · 438 阅读 · 0 评论 -
PHP实现处理过期或者超时订单,并还原库存
订单是我们在日常开发中经常会遇到的一个功能,最近在做一个订单过期与超时的开发。订单过期与超时就不用我解释了吧,其实两者都是同一个问题来着,就是订单未支付的处理,我们要做的是对这些未支付的订单到了一定时间就自动取消,好了,你第一反应那肯定就是做一个定时任务了!是的,就是定时任务,但是哪个才会是最佳方案呢,下面来看看:一、前端到时间请求取消你肯定不会想着在前端来做定时请求取消该订单的,因...原创 2019-12-27 09:40:18 · 1563 阅读 · 1 评论 -
使用PHP+Redis实现延迟任务,实现自动取消订单功能
简单定时任务解决方案:使用redis的keyspace notifications(键失效后通知事件) 需要注意此功能是在redis 2.8版本以后推出的,因此你服务器上的reids最少要是2.8版本以上;(A)业务场景:1、当一个业务触发以后需要启动一个定时任务,在指定时间内再去执行一个任务(如自动取消订单,自动完成订单等功能)2、redis的keyspace notificatio...原创 2019-12-26 11:25:58 · 234 阅读 · 0 评论 -
令牌桶限流思路分享(PHP+Redis实现机制)
一 、场景描述在开发接口服务器的过程中,为了防止客户端对于接口的滥用,保护服务器的资源, 通常来说我们会对于服务器上的各种接口进行调用次数的限制。比如对于某个 用户,他在一个时间段(interval)内,比如 1 分钟,调用服务器接口的次数不能够 大于一个上限(limit),比如说 100 次。如果用户调用接口的次数超过上限的话,就直接拒绝用户的请求,返回错误信息。服务接口的流量...原创 2019-12-26 10:58:29 · 642 阅读 · 2 评论 -
优化秒杀抢购时的超发
高并发下的数据安全我们知道在多线程写入同一个文件的时候,会存现“线程安全”的问题(多个线程同时运行同一段代码,如果每次运行结果和单线程运行的结果是一样的,结果和预期相同,就是线程安全的)。如果是MySQL数据库,可以使用它自带的锁机制很好的解决问题,但是,在大规模并发的场景中,是不推荐使用MySQL的。秒杀和抢购的场景中,还有另外一个问题,就是“超发”,如果在这方面控制不慎,会产生发...原创 2019-08-27 19:33:14 · 220 阅读 · 3 评论 -
Redis实战之限制操作频率
场景:场景1留言功能限制,30秒内只能评论10次,超出次数不让能再评论,并提示:过于频繁场景2点赞功能限制,10秒内只能点赞10次,超出次数后不能再点赞,并封印1个小时,提示:过于频繁,被禁止操作1小时场景3上传记录功能,需要限制一天只能上传 100次,超出次数不让能再上传,并提示:超出今日上线抽离本质在业务开发的过程中,我们不断的参与各种业务场景的方案设计,往往很...翻译 2019-06-12 22:29:52 · 293 阅读 · 0 评论 -
PHP+Redis实现延迟任务 实现自动取消订单,自动完成订单
简单定时任务解决方案:使用redis的keyspace notifications(键失效后通知事件) 需要注意此功能是在redis 2.8版本以后推出的,因此你服务器上的reids最少要是2.8版本以上;(A)业务场景:1、当一个业务触发以后需要启动一个定时任务,在指定时间内再去执行一个任务(如自动取消订单,自动完成订单等功能)2、redis的keyspace notifica...原创 2019-05-16 12:23:13 · 1971 阅读 · 1 评论 -
Redis实现订阅发布与批量发送短信
1 什么是redis订阅Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。直接点,你可以理解为我关注了你,你发布了信息,文章等,我就可以立马收的到。2 发布订阅的场景在哪里比如以下几个场景:2.1 典型的网页上的消息可以做到实时通知2.2 订单下单以后 通过redis订阅实时通知库存改变2.3 接口需要做一...原创 2019-05-16 12:09:14 · 660 阅读 · 0 评论 -
Redis的那些最常见面试问题
1.什么是redis?Redis 是一个基于内存的高性能key-value数据库。2.Reids的特点 Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的K...原创 2019-05-16 12:04:36 · 174 阅读 · 0 评论 -
Go语言操作Redis(一)
Redis 简介redis(REmote DIctionary Server)是一个由Salvatore Sanfilippo写key-value存储系统,它由C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value类型的数据库,并提供多种语言的API。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、se...原创 2019-05-14 22:38:07 · 287 阅读 · 0 评论 -
Redis实现订阅发布与批量发送短信
1 什么是redis订阅Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。直接点,你可以理解为我关注了你,你发布了信息,文章等,我就可以立马收的到。2 发布订阅的场景在哪里比如以下几个场景:2.1 典型的网页上的消息可以做到实时通知2.2 订单下单以后 通过redis订阅实时通知库存改变2.3 接口需要做一...原创 2019-05-10 14:40:49 · 1111 阅读 · 0 评论