redis集群搭建

redis笔记

你说的曾经没有我的故事 提交于 2020-02-23 03:30:49
Redis是开源的免费的高效的以键值对类型的 NoSQL数据库; Redis自身优势: 1.支持的数据类型丰富; 2.因为使用的是内存,读写速度快; 3.原子性,redis中的操作都是单线程,但后期可能会出多线程; 4高可用,redis主从模式,哨兵,集群 5.可设置过期时间,消息订阅等 Redis支持的数据类型: String(字符串)、List(列表)、Set(无序去重集合)、Sorted Set(有序去重集合)、hash(哈希) Redis数据淘汰策略: noeviction 不允许淘汰数据,内存满返回错误信息; allkeys-lru 在所有数据列表中挑选调用最少的数据淘汰; volatile-lru 在已经过期的数据列表中淘汰使用最少的数据; allkeys-random 在所有数据列表中随机淘汰数据 volatile-random 在已经过期的数据列表中随机淘汰数据 volatile-ttl 在已经过期的数据列表中优先淘汰回收存活时间较短的数据; Redis的value值最大存储1个G, String类型最大存储512GB; Redis为了达到最快的读写速度,将数据都写入内存中,在通过异步的方式将数据持久化到磁盘中;这是Redis的优势; Redis的持久化方案: (默认)RDB AOF RDB: 是定期将数据快照保存在一个rbd文件中

构建高并发高可用的电商平台架构实践

為{幸葍}努か 提交于 2020-02-17 07:25:52
一、 设计理念 1. 空间换时间 1) 多级缓存,静态化 客户端页面缓存(http header中包含Expires/Cache of Control,last modified(304,server不返回body,客户端可以继续用cache,减少流量),ETag) 反向代理缓存 应用端的缓存(memcache) 内存数据库 Buffer、cache机制(数据库,中间件等) 2) 索引 哈希、B树、倒排、bitmap 哈希索引适合综合数组的寻址和链表的插入特性,可以实现数据的快速存取。 B树索引适合于查询为主导的场景,避免多次的IO,提高查询的效率。 倒排索引实现单词到文档映射关系的最佳实现方式和最有效的索引结构,广泛用在搜索领域。 Bitmap是一种非常简洁快速的数据结构,他能同时使存储空间和速度最优化(而不必空间换时间),适合于海量数据的的计算场景。 2. 并行与分布式计算 1) 任务切分、分而治之(MR) 在大规模的数据中,数据存在一定的局部性的特征,利用局部性的原理将海量数据计算的问题分而治之。 MR模型是无共享的架构,数据集分布至各个节点。处理时,每个节点就近读取本地存储的数据处理(map),将处理后的数据进行合并(combine)、排序(shuffle and sort)后再分发(至reduce节点),避免了大量数据的传输,提高了处理效率。 2) 多进程、多线程并行执行

构建高并发高可用的电商平台架构实践

我们两清 提交于 2020-02-17 07:05:25
从各个角度总结了电商平台中的架构实践,由于时间仓促,定了个初稿,待补充完善,欢迎大家一起交流。 转载请声明出处: http://blog.csdn.net/yangbutao/article/details/12242441 作者:杨步涛 关注分布式架构、大数据、搜索、开源技术 QQ:306591368 技术Blog: http://blog.csdn.net/yangbutao 一、 设计理念 1. 空间换时间 1) 多级缓存,静态化 客户端页面缓存(http header中包含Expires/Cache of Control,last modified(304,server不返回body,客户端可以继续用cache,减少流量),ETag) 反向代理缓存 应用端的缓存(memcache) 内存数据库 Buffer、cache机制(数据库,中间件等) 2) 索引 哈希、B树、倒排、bitmap 哈希索引适合综合数组的寻址和链表的插入特性,可以实现数据的快速存取。 B树索引适合于查询为主导的场景,避免多次的IO,提高查询的效率。 倒排索引实现单词到文档映射关系的最佳实现方式和最有效的索引结构,广泛用在搜索领域。 Bitmap是一种非常简洁快速的数据结构,他能同时使存储空间和速度最优化(而不必空间换时间),适合于海量数据的的计算场景。 2. 并行与分布式计算 1) 任务切分、分而治之

构建高并发高可用的电商平台架构实践

时间秒杀一切 提交于 2020-02-17 06:44:57
从各个角度总结了电商平台中的架构实践,由于时间仓促,定了个初稿,待补充完善,欢迎大家一起交流。 转载请声明出处: http://blog.csdn.net/yangbutao/article/details/12242441 作者:杨步涛 关注分布式架构、大数据、搜索、开源技术 QQ:306591368 技术Blog: http://blog.csdn.net/yangbutao 一、 设计理念 1. 空间换时间 1) 多级缓存,静态化 客户端页面缓存(http header中包含Expires/Cache of Control,last modified(304,server不返回body,客户端可以继续用cache,减少流量),ETag) 反向代理缓存 应用端的缓存(memcache) 内存数据库 Buffer、cache机制(数据库,中间件等) 2) 索引 哈希、B树、倒排、bitmap 哈希索引适合综合数组的寻址和链表的插入特性,可以实现数据的快速存取。 B树索引适合于查询为主导的场景,避免多次的IO,提高查询的效率。 倒排索引实现单词到文档映射关系的最佳实现方式和最有效的索引结构,广泛用在搜索领域。 Bitmap是一种非常简洁快速的数据结构,他能同时使存储空间和速度最优化(而不必空间换时间),适合于海量数据的的计算场景。 2. 并行与分布式计算 1) 任务切分、分而治之

redis集群搭建

前提是你 提交于 2020-02-11 10:10:39
1.安装ruby yum install ruby yum install rubygems 2.redis集群管理工具redis-trib.rb [root@bogon ~]# cd redis-3.0.0 [root@bogon redis-3.0.0]# cd src [root@bogon src]# ll *.rb -rwxrwxr-x. 1 root root 48141 Apr 1 07:01 redis-trib.rb 3.脚本需要的 ruby包:下载 4. 安装ruby的包: gem install redis-3.0.0.gem [root@bogon ~]# gem install redis-3.0.0.gem 5.创建文件夹redis-cluster,在该文件夹下创建6个redis实例,端口号从6001~6006 6. 修改redis的配置文件 修改端口号 打开 cluster-enable前面的注释。 7.把创建集群的 ruby脚本复制到 redis-cluster目录下。 8.启动 6个 redis实例 9.创建集群。 [root@bogon redis-cluster]# ./redis-trib.rb create --replicas 1 192.168.25.153:6001 192.168.25.153:6002 192.168.25.153

大型分布式电商系统架构演进史?

妖精的绣舞 提交于 2020-02-09 15:26:11
文章目录 概述 作者简介 一、大型分布式网站架构技术 1、大型网站的特点 2、大型网站架构目标 3、大型网站架构模式 4、高性能架构 5、高可用架构 6、可伸缩架构 7、可扩展架构 8、安全架构 9、敏捷性 10、大型架构举例 二、大型电商网站系统架构演变过程 1、最开始的网站架构 2、应用、数据、文件分离 3、利用缓存改善网站性能 4、使用集群改善应用服务器性能 5、数据库读写分离和分库分表 6、使用CDN和反向代理提高网站性能 7、使用分布式文件系统 8、使用NoSQL和搜索引擎 9、将应用服务器进行业务拆分 10、搭建分布式服务 三、一张图说明电商架构 四、大型电商网站架构案例 概述 本文是学习大型分布式网站架构的技术总结。对架构一个高性能、高可用、可伸缩及可扩展的分布式网站进行了概要性描述,并给出一个架构参考。文中一部分为读书笔记,一部分是个人经验总结,对大型分布式网站架构有较好的参考价值。 作者简介 烂皮猪,十余年工作经验,曾在Google等外企工作过几年,精通Java、分布式架构,微服务架构以及数据库,最近正在研究大数据以及区块链,希望能够突破到更高的境界 一、大型分布式网站架构技术 1、大型网站的特点 用户多,分布广泛 大流量,高并发 海量数据,服务高可用 安全环境恶劣,易受网络攻击 功能多,变更快,频繁发布 从小到大,渐进发展 以用户为中心 免费服务,付费体验 2

Redis高级客户端Lettuce详解

别说谁变了你拦得住时间么 提交于 2020-02-06 11:45:18
前提 Lettuce 是一个 Redis 的 Java 驱动包,初识她的时候是使用 RedisTemplate 的时候遇到点问题 Debug 到底层的一些源码,发现 spring-data-redis 的驱动包在某个版本之后替换为 Lettuce 。 Lettuce 翻译为 生菜 ,没错,就是吃的那种生菜,所以它的 Logo 长这样: 既然能被 Spring 生态所认可, Lettuce 想必有过人之处,于是笔者花时间阅读她的官方文档,整理测试示例,写下这篇文章。编写本文时所使用的版本为 Lettuce 5.1.8.RELEASE , SpringBoot 2.1.8.RELEASE , JDK [8,11] 。 超长警告 :这篇文章断断续续花了两周完成,超过4万字… Lettuce简介 Lettuce 是一个高性能基于 Java 编写的 Redis 驱动框架,底层集成了 Project Reactor 提供天然的反应式编程,通信框架集成了 Netty 使用了非阻塞 IO , 5.x 版本之后融合了 JDK1.8 的异步编程特性,在保证高性能的同时提供了十分丰富易用的 API , 5.1 版本的新特性如下: 支持 Redis 的新增命令 ZPOPMIN, ZPOPMAX, BZPOPMIN, BZPOPMAX 。 支持通过 Brave 模块跟踪 Redis 命令执行。 支持

Redis分布式集群实战(2)——搭建redis主从同步及哨兵模式

空扰寡人 提交于 2020-02-04 23:50:06
上一篇介绍了Redis基础知识,以及与mysql,memcached区别。此篇搭建Redis主从同步。 文章目录 一、Redis主从同步 1、主从复制概念 2、特点 3、实验 二、搭建哨兵模式 一、Redis主从同步 1、主从复制概念 主从复制模型中,有多个redis节点。 其中,有且仅有一个为主节点Master。从节点Slave可以有多个。 只要网络连接正常,Master会一直将自己的数据更新同步给Slaves,保持主从同步。 2、特点 (1)主节点Master可读、可写. (2)从节点Slave只读。(read-only) 因此,主从模型可以提高读的能力,在一定程度上缓解了写的能力。因为能写仍然只有Master节点一个,可以将读的操作全部移交到从节点上,变相提高了写能力。 实验环境: 本实验搭建主从同步,一主两备 server1虚拟机作主Redis缓存数据库 : ip为:172.25.76.1 关闭防火墙及selinux server2虚拟机作备Redis缓存数据库 : ip为:172.25.76.2 关闭防火墙及selinux server3虚拟机作备Redis缓存数据库 : ip为:172.25.76.3 关闭防火墙及selinux 3、实验 主Redis(server1)上: yum install -y gcc -y # 下载GNU编译器套件gcc tar zxf

Redis分布式集群实战(3)——搭建redis集群及redis集群中添加新结点

前提是你 提交于 2020-02-04 23:46:17
文章目录 一、redis集群简介 1、集群 2、redis集群 3、redis集群的优势 4、redis集群工作原理 5、哈希槽 6、容错 二、实验 实验环境: 2、搭建redis集群 3、redis集群中添加新结点 4、集群重新分片 (1)手动分配哈希槽 (2)自动平均分配哈希槽 5、移除节点 (1)移除从Slave节点 (1)移除Master节点 一、redis集群简介 1、集群 集群是一组相互独立的、通过高速网络互相联通的节点,构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群就是一个独立的服务器。 集群技术是一种通用的技术,其目的是为了解决单机运算能力的不足、IO能力的不足、提高服务的可靠性、获得规模可扩展能力,降低整体方案的运维成本(运行、升级、维护成本)。能在大流量访问下提供稳定的业务,集群化是存储的必然形态。 2、redis集群 Redis 集群是一个分布式(distributed)、容错(fault-tolerant)的 Redis 实现, 集群可以使用的功能是普通单机 Redis 所能使用的功能的一个子集(subset),提供在多个Redis节点之间共享数据的程序集。。 Redis 集群并不支持同时处理多个键的 Redis 命令,因为这需要在多个节点间移动数据,这样会降低redis集群的性能,在高负载的情况下可能会导致不可预料的错误。

Redis详解(七)——集群

非 Y 不嫁゛ 提交于 2020-02-03 21:50:40
Redis详解(七)——集群 ​Redis3.0版本之前,可以通过Redis Sentinel(哨兵)来实现高可用 ( HA ),从3.0版本之后,官方推出了Redis Cluster,它的主要用途是实现数据分片(Data Sharding),不过同样可以实现HA,是官方当前推荐的方案。 在Redis Sentinel模式中,每个节点需要保存全量数据,冗余比较多,而在Redis Cluster模式中,每个分片只需要保存一部分的数据,对于内存数据库来说,还是要尽量的减少冗余。在数据量太大的情况下,故障恢复需要较长时间,另外,内存实在是太贵了。。。 Redis Cluster的具体实现细节是采用了Hash槽的概念,集群会预先分配16384个槽,并将这些槽分配给具体的服务节点,通过对Key进行CRC16(key)%16384运算得到对应的槽是哪一个,从而将读写操作转发到该槽所对应的服务节点。当有新的节点加入或者移除的时候,再来迁移这些槽以及其对应的数据。在这种设计之下,我们就可以很方便的进行动态扩容或缩容,个人也比较倾向于这种集群模式。 传送门: Redis Cluster官方介绍 当然,关于高可用的实现方案,也可以将这两种模式结合起来使用,不过比较复杂,不太推荐。 搭建集群: ​ Redis Cluster集群至少需要三个master节点