redis分布式

Redis常见面试题

房东的猫 提交于 2019-11-28 04:56:52
1、什么是Redis? 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适合的场景主要局限在较小数据量的高性能操作和运算上。 2、Redis相比memcached有哪些优势? (1) memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型 (2) redis的速度比memcached快很多 (3) redis可以持久化其数据 3、Redis支持哪几种数据类型?

分布式集群系统下的高可用session解决方案

て烟熏妆下的殇ゞ 提交于 2019-11-28 04:27:25
分布式集群系统下的高可用session解决方案 ----guanfuming 20130216 目前,为了使web能适应大规模的访问,需要实现应用的集群部署. 而实现集群部署首先要解决session的统一,即需要实现session的共享机制。 目前,在集群系统下实现session统一的有如下几种方案: (1) 应用服务器间的session复制共享(如tomcat session共享) (2) 基于cache DB缓存的session共享 应用服务器间的session复制共享 session复制共享,主要是指集群环境下,多台应用服务器之间同步session,使session保持一致,对外透明。 如果其中一台服务器发生故障,根据负载均衡的原理,web服务器(apache/nginx)会遍历寻找可用节点,分发请求,由于session已同步,故能保证用户的session信息不会丢失。 此方案的不足之处: 技术复杂,必须在同一种中间件之间完成(如:tomcat-tomcat之间). session复制带来的性能损失会快速增加.特别是当session中保存了较大的对象,而且对象变化较快时, 性能下降更加显著. 这种特性使得web应用的水平扩展受到了限制。 Session内容序列化(serialize),会消耗系统性能。 Session内容通过广播同步给成员,会造成网络流量瓶颈,即便是内网瓶颈。

Redis快速入门及使用

♀尐吖头ヾ 提交于 2019-11-28 04:20:15
原文: Redis快速入门及使用 概述 redis是一种支持分布式的nosql数据库,他的数据是保存在内存中,同时redis可以定时把内存数据同步到磁盘,即可以将数据持久化,并且他比memcached支持更多的数据结构(string,list列表[队列和栈],set[集合],sorted set[有序集合],hash(hash表))。 redis文档: http://redisdoc.com/index.html Redis使用场景 登录会话存储:存储在redis中,与memcached相比,数据不会丢失。 排行版/计数器:比如一些秀场类的项目,经常会有一些前多少名的主播排名。还有一些文章阅读量的技术,或者新浪微博的点赞数等。 作为消息队列:比如celery就是使用redis作为中间人。 当前在线人数:当前系统有多少在线人数。 一些常用的数据缓存:比如我们的BBS论坛,板块不会经常变化的,但是每次访问首页都要从mysql中获取,可以在redis中缓存起来,不用每次请求数据库。 把前200篇文章缓存或者评论缓存:一般用户浏览网站,只会浏览前面一部分文章或者评论,那么可以把前面200篇文章和对应的评论缓存起来。用户访问超过的,就访问数据库,并且以后文章超过200篇,则把之前的文章删除。 好友关系:微博的好友关系使用redis实现。 发布和订阅功能:可以用来做聊天软件。

缓存相关

本小妞迷上赌 提交于 2019-11-28 04:09:05
Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的 hashmap 。其 守护进程 (daemon )是用 C 写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。 Memcached安装和基本使用 Memcached安装: ? 1 2 3 4 5 6 7 8 wget http: / / memcached.org / latest tar - zxvf memcached - 1.x .x.tar.gz cd memcached - 1.x .x . / configure && make && make test && sudo make install PS:依赖libevent yum install libevent - devel apt - get install libevent - dev 启动Memcached ? 1 2 3 4 5 6 7 8 9 10 memcached - d - m 10 - u root - l 10.211 . 55.4 - p 12000 - c 256 - P / tmp / memcached.pid

Redis sentinel 哨兵监测

廉价感情. 提交于 2019-11-28 02:44:49
  Sentinel 进程是用于监控 redis 集群中 Master 主服务器工作的状态,在 Master 主服务器发生故障的时候,可以实现 Master 和 Slave 服务器的切换,保证系统的高可用,其已经被集成在 redis2.6+的版本中, Redis 的哨兵模式到了 2.8 版本之后就稳定了下来。一般在生产环境也建议使用 Redis 的 2.8 版本的以后版本。哨兵(Sentinel) 是一个分布式系统, 可以在一个架构中运行多个哨兵(sentinel) 进程,这些进程使用流言协议(gossip protocols)来接收关于 Master 主服务器是否下线的信息,并使用投票协议(Agreement Protocols)来决定是否执行自动故障迁移,以及选择哪个 Slave 作为新的 Master。每个哨兵(Sentinel)进程会向其它哨兵(Sentinel)、 Master、 Slave 定时发送消息,以确认对方是否”活”着,如果发现对方在指定配置时间(可配置的)内未得到回应,则暂时认为对方已掉线,也就是所谓的” 主观认为宕机” , 主观是每个成员都具有的独自的而且可能相同也可能不同的意识,英文名称: Subjec Down,简称 SDOWN。有主观宕机,肯定就有客观宕机。当“哨兵群”中的多数 Sentinel 进程在对 Master 主服务器做出 SDOWN 的判断

秒杀架构设计问题以及思考

ぃ、小莉子 提交于 2019-11-28 00:59:31
秒杀注意事项以及整体简略设计 1.如何解决卖超问题 --在sql加上判断防止数据边为负数 --数据库加唯一索引防止用户重复购买 --redis预减库存减少数据库访问 内存标记减少redis访问 请求先入队列缓冲,异步下单,增强用户体验 注册功能 -- 如果有前端的牛人加入修改几个页面那是再好不过了哈哈哈 全局异常处理拦截 1.定义全局的异常拦截器 2.定义了全局异常类型 3.只返回和业务有关的 4.详情请看GlobleException 页面级缓存thymeleafViewResolver 对象级缓存redis redis永久缓存对象减少压力 redis预减库存减少数据库访 内存标记方法减少redis访问 订单处理队列rabbitmq 请求先入队缓冲,异步下单,增强用户体验 请求出队,生成订单,减少库存 客户端定时轮询检查是否秒杀成功 解决分布式session --生成随机的uuid作为cookie返回并redis内存写入 --拦截器每次拦截方法,来重新获根据cookie获取对象 --下一个页面拿到key重新获取对象 --HandlerMethodArgumentResolver 方法 supportsParameter 如果为true 执行 resolveArgument 方法获取miaoshauser对象 --如果有缓存的话 这个功能实现起来就和简单

--------------------搭建redis集群----------------------

徘徊边缘 提交于 2019-11-27 23:57:17
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_42815754/article/details/82912130 redis集群搭建 一、Redis Cluster(Redis集群)简介 redis是一个开源的key value存储系统,受到了广大互联网公司的青睐。redis3.0版本之前只支持单例模式,在3.0版本及以后才支持集群,我这里用的是redis3.0.0版本; redis集群采用P2P模式,是完全去中心化的,不存在中心节点或者代理节点; redis集群是没有统一的入口的,客户端(client)连接集群的时候连接集群中的任意节点(node)即可,集群内部的节点是相互通信的(PING-PONG机制),每个节点都是一个redis实例; 为了实现集群的高可用,即判断节点是否健康(能否正常使用),redis-cluster有这么一个投票容错机制:如果集群中超过半数的节点投票认为某个节点挂了,那么这个节点就挂了(fail)。这是判断节点是否挂了的方法; 那么如何判断集群是否挂了呢? -> 如果集群中任意一个节点挂了,而且该节点没有从节点(备份节点),那么这个集群就挂了。这是判断集群是否挂了的方法; 那么为什么任意一个节点挂了(没有从节点)这个集群就挂了呢? ->

Redis系列五:redis主从复制(replication)、哨兵(sentinel)、集群(cluster)

我的未来我决定 提交于 2019-11-27 18:41:11
一、Redis主从复制 主从复制:主节点负责写数据,从节点负责读数据,主节点定期把数据同步到从节点保证数据的一致性 1. 主从复制的相关操作 配置主从复制方式一、新增redis6380.conf, 加入 slaveof 192.168.152.128 6379, 在6379启动完后再启6380,完成配置; 配置主从复制方式二、redis-server --slaveof 192.168.152.128 6379 临时生效 查看状态:info replication 断开主从复制:在slave节点,执行6380:>slaveof no one 断开后再变成主从复制:6380:> slaveof 192.168.152.128 6379 数据较重要的节点,主从复制时使用密码验证: requirepass 从节点建议用只读模式slave-read-only=yes, 若从节点修改数据,主从数据不一致 传输延迟:主从一般部署在不同机器上,复制时存在网络延时问题,redis提供repl-disable-tcp-nodelay参数决定是否关闭TCP_NODELAY,默认为关闭 参数关闭时:无论大小都会及时发布到从节点,占带宽,适用于主从网络好的场景, 参数启用时:主节点合并所有数据成TCP包节省带宽,默认为40毫秒发一次,取决于内核,主从的同步延迟40毫秒,适用于网络环境复杂或带宽紧张

Redis——集群方案之redis cluster的搭建部署

别等时光非礼了梦想. 提交于 2019-11-27 12:52:02
一.redis的集群之redis cluster的概念 对于Redis集群方案有好多种, 基本常用的就是twemproxy,codis,redis cluster这三种解决方案。 本文介绍 redis cluster。 上篇博文实现redis的高可用,针对的主要是master宕机的情况,我们发现所有节点的数据都是一样的,那么一旦数据量过大,redis也会存在效率下降的问题,redis3.0版本正式推出后,有效地解决了redis分布式方面的需求,当遇到单机内存,并发,流量等瓶颈时,可以采用Cluster架构方法达到负载均衡的目的。 redis使用中遇到的瓶颈 我们日常在对于redis的使用中,经常会遇到一些问题 1、容量问题,单实例redis内存无法无限扩充,达到32G后就进入了64位世界,性能下降。 2、并发性能问题,redis号称单实例10万并发,但也是有尽头的。 redis-cluster的优势 1、官方推荐,毋庸置疑。 2、去中心化,集群最大可增加1000个节点,性能随节点增加而线性扩展。 3、管理方便,后续可自行增加或摘除节点,移动分槽等等。 4、简单,易上手。 redis-cluster名词介绍 1、master 主节点、 2、slave 从节点 3、slot  哈希槽,一共有16384数据分槽,分布在集群的所有主节点中。 redis-cluster的设计

Redis核心配置

久未见 提交于 2019-11-27 11:01:30
文章目录 Redis的主从复制 Redis配置哨兵模式 Redis事务 Redis的持久化 RDB Redis的主从复制 主从复制的简介 1、redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并接收主数据库同步过来的数据,一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库。 2、通过redis的复制功能可以很好的实现数据库的读写分离,提高服务器的负载能力。主数据库主要进行写操作,而从数据库负责读操作。 主从复制的过程 主从复制的过程 1:当一个从数据库启动时,会向主数据库发送sync命令, 2:主数据库接收到sync命令后会开始在后台保存快照(执行rdb操作),并将保存期间接收到的命令缓存起来 3:当快照完成后,redis会将快照文件和所有缓存的命令发送给从数据库。 4:从数据库收到后,会载入快照文件并执行收到的缓存的命令。 假设我们现在有3个redis服务,地址分别为 192.168.110.138(master), 192.168.110.138(slave), 192.168.110.140(slave) salve的配置:修改etc/redis/redis.conf文件 sudo vim redis