
Redis
武汉红喜
专注于消息中间件
展开
-
缓存穿透,缓存击穿,缓存雪崩解决方案分析
前言设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效应。缓存穿透缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击我们的应用,这就是漏洞。解决方案有很多种...转载 2019-05-11 20:27:18 · 429 阅读 · 0 评论 -
分布式之数据库和缓存双写一致性方案解析
转自 https://maimai.cn/article/detail?fid=1057432698&efid=vnXzd0cl0pDwUW6f6iMpGA&from=single_feed为什么写这篇文章?首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。但是在更新缓存方面,对于更新完数据...转载 2019-01-25 13:43:38 · 393 阅读 · 0 评论 -
Redis客户端简单封装
public class ShardedRedisClient implements FactoryBean<ShardedJedisPool>, InitializingBean, DisposableBean { private ShardedJedisPool shardedJedisPool; private JedisPoolConfig jedisPoo...原创 2019-01-08 23:13:26 · 494 阅读 · 0 评论 -
知乎技术分享:从单机到2000万QPS并发的Redis高性能缓存实践之路
本文来自知乎官方技术团队的“知乎技术专栏”,感谢原作者陈鹏的无私分享。1、引言知乎存储平台团队基于开源Redis 组件打造的知乎 Redis 平台,经过不断的研发迭代,目前已经形成了一整套完整自动化运维服务体系,提供很多强大的功能。本文作者陈鹏是该系统的负责人,本次文章深入介绍了该系统的方方面面,值得互联网后端程序员仔细研究。(本文同步发布于:http://www.52im.net...转载 2018-09-19 08:39:02 · 1727 阅读 · 0 评论 -
分布式锁的三种实现方式
分布式锁大有用途,比如用在减库存操作、流水号生成,分布式计数器等。分布式锁服务在大家的项目中或许用的不多,因为大家都把排他放在数据库那一层来挡。当大量的行锁、表锁、事务充斥着数据库的时候。一般web应用很多的瓶颈都在数据库上,这里给大家介绍的是减轻数据库锁负担的方案--分布式锁服务。本文介绍分布式锁常用的三种实现方式。 一、zookeeper1、实现原理:基于zookeeper瞬时...原创 2018-03-09 17:47:07 · 504 阅读 · 0 评论 -
Redis 集群解决方案比较
调研比较了三个Redis集群的解决方案: 系统贡献者是否官方Redis实现编程语言TwemproxyTwitter是CRedis ClusterRedis官方是CCodis豌豆荚否Go+C1.基本架构 1.1 Twemproxy 增加Proxy层,由Proxy实现一致性哈希算法(支持:KETAMA/取模/随机)数据分片算法: 采用一致性哈希算法,以KE...原创 2018-03-09 17:47:16 · 3130 阅读 · 1 评论 -
将redis当做使用LRU算法的缓存来使用
当Redis被当做缓存来使用,当你新增数据时,让它自动地回收旧数据是件很方便的事情。这个行为在开发者社区非常有名,因为它是流行的memcached系统的默认行为。 LRU是Redis唯一支持的回收方法。本页面包括一些常规话题,Redis的maxmemory指令用于将可用内存限制成一个固定大小,还包括了Redis使用的LRU算法,这个实际上只是近似的LR...原创 2018-03-09 17:48:06 · 467 阅读 · 0 评论 -
Redis 的几种数据结构&五种数据类型对象
先看几种数据结构通过分析底层的数据结构,学习如何根据场景选型和设计 1,简单动态字符串 redis使用的字符串SDS有别于C语言中的字符串 a, 结构 free字段为已分配但未使用的空间 len为已使用的空间(不计入'\0') buf为char数组 b, 与C字符串区别 redis的字符环结构可以理解为将...原创 2018-03-09 17:49:10 · 834 阅读 · 0 评论 -
Redis客户端简单封装
Redis客户端简单封装并集成spring. spring-data-redis对redis有过度封装的嫌疑,而且也没有提供sharding模式,本文遂简单封装jedis。<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" ...原创 2017-06-23 07:36:52 · 844 阅读 · 0 评论 -
Redis Cluster原理
一、CLUSTER MEET 命令的实现 通过向节点 A 发送 CLUSTER MEET 命令,客户端可以让接收命令的节点 A 将另一个节点 B 添加到节点 A 当前所在的集群里面: CLUSTER MEET <ip> <port> 收到命令的节点 A 将与节点 B 进行握手(handshake),以此来确认彼此的存在,并为将来的进一步通信打好基础: ...原创 2017-06-23 07:42:33 · 404 阅读 · 0 评论 -
深入理解Redis中的主键失效及其实现机制
作为一种定期清理无效数据的重要机制,主键失效存在于大多数缓存系统中,Reids也不例外。在Redis提供的诸多命令中,EXPIRE、EXPIREAT、PEXPIRE、PEXPIREAT以及SETEX和PSETEX均可以用来设置一条Key-Value对的失效时间,而一条Key-Value对一旦被关联了失效时间就会在到期后自动删除(或者说变得无法访问更为准确)。可以说,主键失效这个概念还是比较容易理解...原创 2017-06-23 07:47:37 · 438 阅读 · 0 评论 -
Redis复制
在Redis中,用户可以通过执行SLAVEOF命令或者设置slaveof选项,让一个服务器去复制(replicate)另一个服务器,我们称呼被复制的服务器为主服务器(master),而对主服务器进行复制的服务器则被称为从服务器(slave)。 127.0.0.1:12345> SLAVEOF 127.0.0.1 6379 一、旧版(2.8版以前)复制功能的实现 Redis的复制功...原创 2017-06-19 01:03:32 · 293 阅读 · 0 评论 -
Redis Sentinel
Redis Sentinel DocumentationRedis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务:监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。 提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 AP...原创 2018-03-09 17:46:45 · 336 阅读 · 0 评论 -
微博CacheService架构浅析
http://www.infoq.com/cn/articles/weibo-cacheservice-architecture/微博作为国内最大的社交媒体网站之一,每天承载着亿万用户的服务请求,这些请求的背后,需要消耗着巨大的计算、内存、网络、I/O等资源。而且因为微博的产品特性,节假日、热门事件等可能带来突发数倍甚至十几倍的访问峰值,这些都对于支撑微博的底层基础架构提出了比较严苛的要求,需要满...转载 2018-03-23 14:48:35 · 1626 阅读 · 0 评论 -
唯品会Redis cluster大规模生产实践经验
嘉宾:陈群很高兴有机会给大家分享redis cluster的生产实践经验。目前在唯品会主要负责redis/hbase的运维和开发支持工作,也参与工具开发工作。Outline一、生产应用场景二、存储架构演变三、应用最佳实践四、运维经验总结第1、2节:介绍redis cluster在唯品会的生产应用场景,以及存储架构的演变。第3节:redis cluster...原创 2018-03-09 17:43:05 · 821 阅读 · 0 评论 -
Jedis一致性hash与sharding
一、Jedis一致性hash 利用缓存技术,不仅可以提升系统性能,还能缓解系统故障。对于redis 3.0以下的版本,redis-server没有sharding的功能,只有master-slave模式。目前企业用的普遍都是只有m/s模式的redis多实例部署,无论是master还是slave挂掉,都需要调整程序配置(或代码)。Jedi...原创 2018-03-09 17:43:23 · 250 阅读 · 0 评论 -
Redis Cluster 实践
一:关于redis cluster1:redis cluster的现状reids-cluster计划在redis3.0中推出,可以看作者antirez的声明:http://antirez.com/news/49 (ps:跳票了好久,今年貌似加快速度了),目前的最新版本见:https://raw.githubusercontent.com/antirez...原创 2018-03-09 17:40:50 · 96 阅读 · 0 评论 -
《Redis设计与实现》学习笔记-发布与订阅、事务、慢查询日志
发布与订阅 Redis通过发布订阅提供一对多甚至是多对多的节点消息通信,发布订阅由PUBLISH、SUBSCRIBE、PSUBSCRIBE、PUBSUB等命令组成。 SUBSCRIBE命令:订阅某频道,在redisServer结构中通过pubsub_channels字典属性保存当前服务器所有频道的订阅关系,字典键时频道名称,字典值是一个链表,记录了...原创 2018-03-09 17:44:14 · 190 阅读 · 0 评论 -
缓存算法(内存回收算法)- LRU、FIFO、LFU
题目链接:https://oj.leetcode.com/problems/lru-cache/ Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations: get ...原创 2018-03-09 17:46:06 · 1250 阅读 · 0 评论 -
Redis持久存储-AOF&RDB
Redis中数据存储模式有2种:cache-only,persistence;cache-only即只做为“缓存”服务,不持久数据,数据在服务终止后将消失,此模式下也将不存在“数据恢复”的手段,是一种安全性低/效率高/容易扩展的方式;persistence即为缓存中的数据持久备份到磁盘文件,在服务重启后可以恢复,此模式下数据相对安全。 持久化数据的方式很多,基于各种考虑面,可能最终导致的设...原创 2017-01-16 23:42:38 · 963 阅读 · 0 评论