Redis
奔跑的码农
热爱web开发,热爱生活!
展开
-
基于单Redis节点的分布式锁
场景:某个业务接口,因为做了比较复杂的数据库查询并且调用量很大,所以加了缓存,并设定缓存过期后刷新。问题是缓存过期的瞬间,大量并发请求会穿透缓存直接查询数据库,造成雪崩效应,如果有锁机制,那么就可以控制只有一个请求去更新缓存,其它的请求视情况要么等待,要么使用过期的缓存。下面以PHPRedis 扩展为例,实现一段演示代码:<?php$redis = new Redis();$ca原创 2017-04-18 08:42:13 · 525 阅读 · 0 评论 -
设计缓存系统时应该注意的几点问题
前言设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效应。缓存穿透缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击我们的应用,这就是漏洞。解决方案有很多种方法可以有效地...转载 2018-03-13 18:23:49 · 3160 阅读 · 0 评论 -
Redis-Bitmaps详解
一.数据结构模型Redis提供的Bitmaps这个“数据结构”可以实现对位的操作。Bitmaps本身不是一种数据结构,实际上就是字符串,但是它可以对字符串的位进行操作。可以把Bitmaps想象成一个以位为单位数组,数组中的每个单元只能存0或者1,数组的下标在bitmaps中叫做偏移量。单个bitmaps的最大长度是512MB,即2^32个比特位。二. 命令 2.1 设置值命令:setbit ke...原创 2018-03-13 18:21:31 · 5192 阅读 · 0 评论 -
Redis单线程架构
1 单线程模型Redis客户端对服务端的每次调用都经历了发送命令,执行命令,返回结果三个过程。其中执行命令阶段,由于Redis是单线程来处理命令的,所有每一条到达服务端的命令不会立刻执行,所有的命令都会进入一个队列中,然后逐个被执行。并且多个客户端发送的命令的执行顺序是不确定的。但是可以确定的是不会有两条命令被同时执行,不会产生并发问题,这就是Redis的单线程基本模型。2 单线程模型每秒万级别处...原创 2018-03-13 17:29:29 · 167 阅读 · 0 评论 -
Redis数据迁移-键迁移
一.数据迁移1.1 键迁移有时候我们想将一个redis的数据迁移到另一个redis中,redis提供了三种方式来满足数据迁移的需求,分别是move、dump+restore、migrate1.1.1 move key dbRedis支持多数据库,多数据库之间彼此在数据上是隔离的。move key db就是把指定的键从源数据库迁移到目标数据库中。由于多数据库在生产环境中不建议使用,所以此命令很少使用...原创 2018-03-12 17:09:22 · 1474 阅读 · 0 评论 -
redis-migrate-tool迁移工具
Redis-Migrate-Tool 使用详解Redis 集群迁移工具,基于redis复制,快速,稳定。 github链接:https://github.com/vipshop/redis-migrate-tool特点:•快速。•多线程。•基于redis复制。•实时迁移。•迁移过程中,源集群不影响对外提供服务。•异构迁移。•支持Twemproxy集群,redis cluster集群,rdb文件 和...转载 2018-03-12 17:08:06 · 2039 阅读 · 0 评论 -
细说Redis监控和告警
对于任何应用服务和组件,都需要一套完善可靠谱监控方案。尤其redis这类敏感的纯内存、高并发和低延时的服务,一套完善的监控告警方案,是精细化运营的前提。本文分几节,细说Redis的监控和告警:1.Redis监控告警的价值2.Redis监控的数据采集3.Redis告警策略4.基于Open Falcon的Redis监控告警方案Redis监控告警的价值Redis监控告警的价值对每个角色都不同,重要的几个...转载 2018-03-16 18:03:54 · 1254 阅读 · 0 评论 -
Redis性能调优
Redis监控工具,命令和调优1.图形化监控因为要对Redis做性能测试,发现了GitHub上有个python写的RedisLive监控工具评价不错。结果鼓捣了半天,最后发现其主页中引用了Google的jsapi脚本,必须在线连接谷歌的服务,Stackoverflow上说把js脚本下载到本地也没法解决问题,坑爹!正要放弃时发现了一个从RedisLive fork出去的项目redis-monitor...转载 2018-03-16 18:01:05 · 6542 阅读 · 0 评论 -
关于phpredis中的connect和pconnect的一些见解
最近看到网上不少误导人的文章,高并发下应该使用pconnect,但是pconnect一定比connect好吗?下面是我的一些见解,权当抛砖引玉了。首先说下connect和pconnect的区别:connect:脚本结束之后连接就释放了。 pconnect:脚本结束之后连接不释放,连接保持在php-fpm进程中。调用close时的表现当手动调用close时原创 2017-09-30 17:47:31 · 2744 阅读 · 0 评论 -
Redis源码阅读笔记—sds
Redis系统当中,针对字符串进行的更加完善的封装,建立了一个动态字符串,并构建了大量的实用api。相关的实现代码为sds.h及sds.c,以下为我的源码阅读笔记。内容较多,逐步更新[cpp] view plain copytypedef char *sds; struct __attribute__ ((__packed__)) sdshdr5 { usigned char fl...转载 2018-03-21 19:03:22 · 850 阅读 · 0 评论