redis分布式

Jedis 与 ShardedJedis 设计

情到浓时终转凉″ 提交于 2019-11-29 11:41:53
Jedis设计 Jedis作为推荐的java语言redis客户端,其抽象封装为三部分: 对象池设计:Pool,JedisPool,GenericObjectPool,BasePoolableObjectFactory,JedisFactory 面向用户的redis操作封装:BinaryJedisCommands,JedisCommands,BinaryJedis,Jedis 面向redis服务器的操作封装:Commands,Client,BinaryClient,Connection,Protocol 其类设计图如下: 关于common-pool的相关内容,可以参见: http://macrochen.iteye.com/blog/320077 其他类的设计作用如下: 类名 职责 Pool 抽象Jedis对象池操作;并委托给操作给GenericObjectPool JedisPool 实现Pool并提供JedisFactory工厂 JedisFactory 实现BasePoolableObjectFactory,提供创建,销毁Jedis方法 BinaryJedisCommands 抽象面向客户端操作的Redis命令;key,value都为序列化后的byte数组 JedisCommands 抽象面向客户端操作的Redis命令;提供String类型的key,value

缓存在分布式系统中的应用

余生颓废 提交于 2019-11-29 11:27:19
一、缓存概述 缓存是分布式系统中的重要组件,主要解决高并发,大数据场景下,热点数据访问的性能问题。提供高性能的数据快速访问。 1.1缓存的原理 (1) 将数据写入/读取速度更快的存储(设备); (2) 将数据缓存到离应用最近的位置; (3) 将数据缓存到离用户最近的位置。 1.2缓存分类 在分布式系统中,缓存的应用非常广泛,从部署角度有以下几个方面的缓存应用。 (1) CDN缓存; (2) 反向代理缓存; (3) 分布式Cache; (4) 本地应用缓存; 1.3缓存媒介 常用中间件:Varnish,Ngnix,Squid,Memcache,Redis,Ehcache等; 缓存的内容:文件,数据,对象; 缓存的介质:CPU,内存(本地,分布式),磁盘(本地,分布式) 1.3缓存设计 缓存设计需要解决以下几个问题: (1) 缓存什么? 哪些数据需要缓存:1.热点数据;2.静态资源; (2) 缓存的位置? CDN,反向代理,分布式缓存服务器,本机(内存,硬盘) (3) 如何缓存的问题? 过期策略 1.固定时间:比如指定缓存的时间是30分钟; 2.相对时间:比如最近10分钟内没有访问的数据; 同步机制 实时写入;(推) 异步刷新;(推拉) 二、CDN缓存 CDN主要解决将数据缓存到离用户最近的位置,一般缓存静态资源文件(页面,脚本,图片,视频,文件等)。国内网络异常复杂

使用Redis做MySQL的缓存

a 夏天 提交于 2019-11-29 11:05:23
1 为什么使用缓存 当网站的处理和访问量非常大的时候,我们的数据库的压力就变大了,数据库的连接池,数据库同时处理数据的能力就会受到很大的挑战,一旦数据库承受了其最大承受能力,网站的数据处理效率就会大打折扣。此时就要使用高并发处理、负载均衡和分布式数据库,而这些技术既花费人力,又花费资金。 2 使用场景 页面缓存 经常用在CMS(content manage system)内存管理系统里面。 数据缓存 经常会用在页面的具体数据里面。 请参考: http://blog.csdn.net/acmman/article/details/53167917 3 Redis缓存原理 Redis其实就是说把表中经常访问的记录放在了Redis中,然后用户查询时先去查询Redis再去查询MySQL,确实实现了读写分离,也就是Redis只做读操作。由于缓存在内存中,所以查询会很快。 如何确定在redis查询还是Mysql查询 :对于一个sql语句格式的数据请求,首先计算该语句的MD5并据此得到结果集标识符,然后利用该标识符在Redis中查找该结果集。注意,结果集中的每一行都有一个相应的键,这些键都存储在一个Redis集合结构中。如果Redis中不存在这样一个集合,说明要找的结果集不在Redis中,所以需要执行相应的sql语句,在Mysql中查询到相应的结果集

消息队列的理解

不羁岁月 提交于 2019-11-29 09:53:41
1.什么是消息队列 :消息队列是消息在传输过程中储存消息的容器。消息队列管理器在将消息从它的源传递到目标时充当着中间人的角色。如果发送消息过程中,接受者不能够接收消息,那么消息队列会保留消息。 2.为什么需要消息队列 :消息队列主要有三个作用:异步,削峰,解耦。 主要是为了解决高并发情况下,由于大量的请求一起发送,这时候同步执行的话,往往会阻塞程序,因此我们需要进行异步处理,缓解系统压力,也可以削峰。 另外,如果几个系统在处理业务的时候耦合性很大,那么只要其中一个系统出问题,其他系统也无法工作,消息队列还可以解耦和。 因此消息队列是大型分布式系统中必不可少的中间件,一般用到的消息队列有rabbitMQ,redis. 当然,消息队列也有缺点 系统可用性降低:比如如果用redis来作为中间人,如果redis挂了,那么整个系统就不能用了,解决方法可以考虑用集群。 系统复杂度增加:多增加了MQ队列,使得整个系统的复杂度提高。 一致性问题:操作多个系统的时候,可能会出现有一两个系统操作不成功过就返回数据,结果造成一致性问题。 3.rabbitmq跟redis来作消息队列的区别? 1.可靠性: redis: 没有相应机制保证消息的消费,当消费者消费失败,消息丢失 rabbitmq: 具有消息消费确认,如果消费者消费失败,会自动返回队列中 2.持久化: redis:

分布式缓存Redis应用场景解析

℡╲_俬逩灬. 提交于 2019-11-29 09:38:00
Redis 的应用场景非常广泛。虽然Redis是一个key-value的内存数据库,但在实际场景中,Redis经常被作为缓存来使用,如面对数据高并发的读写、海量数据的读写等。 举个例子,A网站首页一天有100万人访问,其中有一个“积分商城”的板块,要直接从数据库查询,那么一天就要多消耗100万次数据库请求。如果将这些数据储存到Redis(内存)中,要用的时候,直接从内存调取,不仅可以大大节省系统直接读取磁盘来获得数据的IO开销,提高服务器的资源利用率,还能极大地提升速度。 随着日益增长的用户量以及业务高峰期剧增的访问量,通过扩容一次资源就能够解决问题的方式已不再有显著成效,并且运维Redis也比之前更易出现差错。而华为云分布式缓存Redis就很好地解决了自建Redis的一些问题,应用场景也十分丰富。比如很多大型电商网站、视频网站和游戏应用等,存在大规模数据访问,对数据查询效率要求高。使用华为云 分布式缓存Redis服务 可实现页面缓存、应用缓存、状态缓存、事件并行处理,能够有效减少数据库磁盘IO,提高数据查询效率,减轻管理维护工作量,降低数据库存储成本。对传统磁盘数据库是一个重要的补充,成为了互联网应用,尤其是支持高并发访问的互联网应用必不可少的基础服务之一。 具体而言,分布式缓存Redis可用于以下场景: 1、页面缓存 Redis可将Web页面的内容片段,包括HTML

一 分布式缓存redis概念

别来无恙 提交于 2019-11-29 08:42:00
什么是NOSQL NoSQL是不同于传统的关系数据库的数据库管理系统的统称。其两者最重要的区别是NoSQL不使用SQL作为查询语言。 NoSQL数据存储可以不需要固定的表格模式。NoSQL是基于键值对的,可以想象成表中的主键和值的对应关系。 NoSQL:redis、memcached、mongodb、guava(loadingCache) 什么是Redis Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings)、散列(hashes)、 列表(lists)、 集合(sets)、 有序集合(sorted sets)等。 从mysql出发来认识redis 概念 关系型数据库的一个常见用法是存储长期的报告数据,并将这些报告数据用作固定时间范围内的聚合数据。 收集聚合数据的常见做法是:先将各个行插入一个报告表里面, 之后再通过扫描这些行来收集聚合数据, 并更新聚合表中巳有的那些行。 图解redis为什么出现 详细图解 查询优化器:join,left join,子查询,依赖子查询进行复杂sql及排序的优化。 Redis和memcached和mysql之间的区别 redis和memcached各有什么优势 内存管理机制进行比较 Memcached默认使用Slab

redis面试总结

若如初见. 提交于 2019-11-29 08:25:46
http://blog.csdn.net/guchuanyun111/article/category/6335900 (1)什么是redis? Redis 是一个基于内存的高性能key-value 数据库 。 (有空再补充,有理解错误或不足欢迎指正) (2)Reids的特点 Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。 Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种 数据结构 ,此外单个value的最大限制是1GB,不像 memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能,比方说用他的List来做FIFO双向链表,实现一个轻量级的高性 能消息队列服务,用他的Set可以做高性能的tag系统等等。另外Redis也可以对存入的Key-Value设置expire时间,因此也可以被当作一 个功能加强版的memcached来用。 Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。 (3

redis、memcache、mongoDB 做了对比

爷,独闯天下 提交于 2019-11-29 08:07:13
from: http://yang.u85.us/memcache_redis_mongodb.pdf 从以下几个维度,对redis、memcache、mongoDB 做了对比。 1、性能 都比较高,性能对我们来说应该都不是瓶颈。 总体来讲,TPS 方面redis 和memcache 差不多,要大于mongodb。 2、操作的便利性 memcache 数据结构单一。(key-value) redis 丰富一些,数据操作方面,redis 更好一些,较少的网络IO 次数,同时还提供list,set, hash 等数据结构的存储。 mongodb 支持丰富的数据表达,索引,最类似关系型数据库,支持的查询语言非常丰富。 3、内存空间的大小和数据量的大小 redis 在2.0 版本后增加了自己的VM 特性,突破物理内存的限制;可以对key value 设置过 期时间(类似memcache) memcache 可以修改最大可用内存,采用LRU 算法。Memcached 代理软件magent,比如建立 10 台4G 的Memcache 集群,就相当于有了40G。magent -s 10.1.2.1 -s 10.1.2.2:11211 -b 10.1.2.3:14000 mongoDB 适合大数据量的存储,依赖操作系统VM 做内存管理,吃内存也比较厉害,服务 不要和别的服务在一起。 4、可用性

memcache、redis原理对比

拟墨画扇 提交于 2019-11-29 08:06:39
一、问题: 数据库表数据量极大(千万条),要求让服务器更加快速地响应用户的需求。 二、解决方案: 1.通过高速服务器Cache缓存数据库数据 2.内存数据库 (这里仅从数据缓存方面考虑,当然,后期可以采用Hadoop+HBase+Hive等分布式存储分析平台) 三、主流解Cache和数据库对比: 上述技术基本上代表了当今在数据存储方面所有的实现方案,其中主要涉及到了普通关系型数据库(MySQL/PostgreSQL),NoSQL数据库(MongoDB),内存数据库(Redis),内存Cache(Memcached),我们现在需要的是对大数据表仍保持高效的查询速度,普通关系型数据库是无法满足的。而MongoDB其实只是一种非关系型数据库,其优势在于可以存储海量数据,具备强大的查询功能,因此不宜用于缓存数据的场景。 从以上各数据可知,对于我们产品最可行的技术方案有两种: 1.Memcached 内存Key-Value Cache 2.Redis 内存数据库 四、下面重点分析Memcached和Redis两种方案: 4.1 Memcached介绍 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度,现在已被LiveJournal、hatena、Facebook

memcache、redis原理对比

≯℡__Kan透↙ 提交于 2019-11-29 08:06:29
一、问题: 数据库表数据量极大(千万条),要求让服务器更加快速地响应用户的需求。 二、解决方案: 1.通过高速服务器Cache缓存数据库数据 2.内存数据库 (这里仅从数据缓存方面考虑,当然,后期可以采用Hadoop+HBase+Hive等分布式存储分析平台) 三、主流解Cache和数据库对比: 上述技术基本上代表了当今在数据存储方面所有的实现方案,其中主要涉及到了普通关系型数据库(MySQL/PostgreSQL),NoSQL数据库(MongoDB),内存数据库(Redis),内存Cache(Memcached),我们现在需要的是对大数据表仍保持高效的查询速度,普通关系型数据库是无法满足的。而MongoDB其实只是一种非关系型数据库,其优势在于可以存储海量数据,具备强大的查询功能,因此不宜用于缓存数据的场景。 从以上各数据可知,对于我们产品最可行的技术方案有两种: 1.Memcached 内存Key-Value Cache 2.Redis 内存数据库 四、下面重点分析Memcached和Redis两种方案: 4.1 Memcached介绍 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度,现在已被LiveJournal、hatena、Facebook