redis分布式

redis配置、安装、集群

大兔子大兔子 提交于 2019-12-28 14:26:27
redis配置、安装、集群 前言 Redis 是我们目前大规模使用的缓存中间件,由于它强大高效而又便捷的功能,得到了广泛的使用。单节点的Redis已经就达到了很高的性能,为了提高可用性我们可以使用Redis集群。 当然了,现在集群的方式有很多,隧道模式(还有更高级的虚拟隧道模式)、行星模型、智能路由、P2P模式,各种各样的,算是各有各的好处吧,也有官方给了一种cluster工具,不过本文不用官方的,因为他的官方的这个是在一个服务器上折腾。。。一台机器死了,直接全崩,有点没必要,本文主要讲 主从模式的redis. redis简介 分布式 - 所谓的分布式就是不是单独跑在一台服务器上的,不管公司花多少钱一台服务器多牛,它也是有极限的,1000t内存也是极限,所以单台服务器风险还是比较大的,万一它死了,整个公司完全瘫了也不合适。 所以分布式就是说让我这一个服务是部署在一个一个的服务器上,这样的话就算是有一个服务器因为各种各样的原因瘫了,没关系,继续跑,只不过整个系统性能会有所下降,然后过一段时间等这些节点重新恢复了它又可以接入分布式的系统当中。 内存数据存储 - noSQL 咱们知道跟数据库所有的打交道都需要用SQL语言来完成,结构化查询语言。 它有的时候也叫noSQL,因为咱们那个数据库,说实话它很强,各种关系,各种乱七八糟的东西,但是数据库,它更适合复杂的查询,对于简单的查询

浅淡缓存

会有一股神秘感。 提交于 2019-12-27 10:12:54
缓存作为常用的优化手段,是架构师必备技能之一,在面试时我也喜欢让候选人系统的介绍一下缓存知识,能把缓存体系说清楚的并不多。 单机硬件角度缓存 下图是经典的计算机组成原理的缓存结构图 速度从高到低依次是:L1 > L2 > L3 > 内存 > 磁盘(硬盘缓存+硬盘) 单位容量制造成本从高到低依次是:L1 > L2 > L3 > 内存 > 磁盘(硬盘缓存+硬盘) 对硬件来说,缓存是基于有限的成本下,介于相对高速和相对低速设备之间的缓冲,目的是尽可能的提升处理效率。 用户角度看缓存 DNS缓存 对终端用户而言,操作系统和浏览器都存在着DNS缓存 CDN CDN不是缓存,其核心思想是将用户的请求导向离用户最近的服务节点上,提高用户访问网站的响应速度。只是这里说的最近的服务节点一般是容量有限的缓存服务器。 浏览器缓存 最典型流程是浏览器第一次访问时,服务器返回当前时间Last-Modified值,记为t,当下一次访问时,If-Modified-Since取值t,配合Cache-Control,如果服务端资源未被修改,返回状态码304,浏览器直接从本地磁盘取缓存的网页文件。 对用户来说,缓存是为了从最近的地方取得所需内容,玩命减少等待时间,提升响应速度。 架构角度看缓存 接入层缓存:Nginx缓存 进程内缓存:JVM堆内缓存、堆外缓存 主机内缓存:Local Redis、本地磁盘

Redis和其数据类型操作手册

橙三吉。 提交于 2019-12-27 07:36:17
《“Java技术员”成长手册》,包含框架、存储、搜索、优化、分布式等必备知识,都收集在 GitHub JavaEgg ,N线互联网开发必备技能兵器谱,欢迎指导 Redis简介 Redis: REmote DIctionary Server (远程字典服务器)。 Redis 是一个全开源免费(BSD许可)的,内存中的数据结构存储系统,它可以用作 数据库、缓存和消息中间件 。一般作为一个高性能的(key/value)分布式内存数据库,基于 内存 运行并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,也被人们称为 数据结构服务器 Redis 介绍 ​ redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库。 ​ redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括 string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型) 。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中

celery 分布式异步任务框架(celery简单使用、celery多任务结构、celery定时任务、celery计划任务、celery在Django项目中使用Python脚本调用Django环境)

我是研究僧i 提交于 2019-12-26 11:58:29
一.celery简介 Celery 是一个强大的 分布式任务队列 的 异步处理框架,它可以让任务的执行完全脱离主程序,甚至可以被分配到其他主机上运行。我们通常使用它来实现异步任务(async task)和定时任务(crontab)。 Celery的架构由三部分组成,消息中间件(message broker),任务执行单元(worker)和任务执行结果存储(task result store)组成。 可以看到,Celery 主要包含以下几个模块: 任务模块 Task 包含异步任务和定时任务。其中,异步任务通常在业务逻辑中被触发并发往任务队列,而定时任务由 Celery Beat 进程周期性地将任务发往任务队列。 消息中间件 Broker Broker,即为任务调度队列,接收任务生产者发来的消息(即任务),将任务存入队列。Celery 本身不提供队列服务,官方推荐使用 RabbitMQ 和 Redis 等。 任务执行单元 Worker Worker 是执行任务的处理单元,它实时监控消息队列,获取队列中调度的任务,并执行它。 任务结果存储 Backend Backend 用于存储任务的执行结果,以供查询。同消息中间件一样,存储也可使用 RabbitMQ, redis 和 MongoDB 等。 所以总结一下celery:它是一个处理大量消息的分布式系统,能异步任务、定时任务

redis(1)

纵饮孤独 提交于 2019-12-26 07:10:20
什么是nosql 非关系型数据库 为什么要用nosql web2.0大规模动态网站的兴起 high performance ,高并发读写,动态页面展示与交互,比如微博点赞评论等操作,实时统计在线人数排行榜等 huge storage,海量数据的高效存储和访问,大型网站的用户登录系统 high scalability && high availability,高可扩展性和高可用性 主流NOSQL产品 redis,mongodb,couchdb NoSQL的特点 易扩展 灵活数据模型 大数据量,高性能 高可用 NoSQL数据库的四大分类 键值存储,redis 优势,快速查询 劣势,存储数据缺少结构化 列存储,hbase 优势,快速查询 劣势,功能局限 文档数据库,mongodb 优势,数据结构要求不严格 劣势,查询性能并非特别高,缺少统一查询的语法 图形数据库,infogate 优势,社交网络,利用图结构的相关算法 劣势,需要对整个图做算法分析,不利于分布式方案 redis概述 C语言编写的高性能键值对数据,支持的键值数据类型: 字符串类型 列表类型 有序集合类型 散列 集合类型 Redis的应用场景: 缓存 网站访问统计 任务队列 数据过期处理 应用排行榜 分布式集群架构中的session分离 来源: https://www.cnblogs.com/HKKD/p/7390891

elk+redis分布式分析nginx日志

Deadly 提交于 2019-12-26 05:36:24
一.elk套件介绍 ELK 由 ElasticSearch 、 Logstash 和 Kiabana 三个开源工具组成。官方网站: https://www.elastic.co/products Elasticsearch 是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制, restful 风格接口,多数据源,自动搜索负载等。 Logstash 是一个完全开源的工具,他可以对你的日志进行收集、分析,并将其存储供以后使用(如,搜索)。 kibana 也是一个开源和免费的工具,他 Kibana 可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。 工作原理如下如所示: **客户端的logstash从日志里取出数据推送到服务端的redis里,服务端的logstash从redis里取出推送到elasticsearch,elasticsearch进行分析,kibana来展示 注:安装全部使用rpm安装,方便管理 二、服务端安装过程 1.安装依赖JDK 版本:jre-8u91-linux-x64.rpm # rpm -ivh jre-8u91-linux-x64.rpm Preparing... #######################################

Celery 分布式任务队列

一世执手 提交于 2019-12-25 18:17:54
一、Celery介绍和基本使用 Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理, 如果你的业务场景中需要用到异步任务,就可以考虑使用celery, 举几个实例场景中可用的例子: 你想对100台机器执行一条批量命令,可能会花很长时间 ,但你不想让你的程序等着结果返回,而是给你返回 一个任务ID,你过一段时间只需要拿着这个任务id就可以拿到任务执行结果, 在任务执行ing进行时,你可以继续做其它的事情。 你想做一个定时任务,比如每天检测一下你们所有客户的资料,如果发现今天 是客户的生日,就给他发个短信祝福 Celery 在执行任务时需要通过一个消息中间件来接收和发送任务消息,以及存储任务结果, 一般使用rabbitMQ or Redis,后面会讲 1.1 Celery有以下优点: 简单:一单熟悉了celery的工作流程后,配置和使用还是比较简单的 高可用:当任务执行失败或执行过程中发生连接中断,celery 会自动尝试重新执行任务 快速:一个单进程的celery每分钟可处理上百万个任务 灵活: 几乎celery的各个组件都可以被扩展及自定制 Celery基本工作流程图 1.2 Celery安装使用 Celery的默认broker是RabbitMQ, 仅需配置一行就可以 broker_url = 'amqp://guest

搭建redis集群

笑着哭i 提交于 2019-12-25 14:03:56
什么是Redis集群 简介 Redis是一个快速高效的NoSQL型数据库,由于其基于内存存储、单线程、多路IO复用的特性,其QPS可以达到惊人的100000+(官方数据),但是即使有这么高的速度,在中国这么大的网民基数环境下,也存在着性能瓶颈。 首先抛开服务器故障不谈,Redis集群首先可以使Redis性能得到线性提高,这是毋庸置疑的,其次Redis集群除了解决了效率问题,还可以解决服务器宕机造成的数据丢失问题,当某个Redis节点宕机,剩下的节点会继续工作,并不会影响整体集群的使用,从而实现 高可用 。 Redis单机模式有什么问题 单机故障 在单机模式下的Redis,我们的应用中所有需要缓存的数据都依赖一台Redis服务器,应用的流量小可能看不出什么问题,但是随着应用越来越大,流量越来越大,如果出现服务器宕机或者断电的状况,那么我们的应用整个一个缓存层在一段时间内(重启)都将不复存在。 先不谈基于Redis的分布式Session可能造成的问题,如果恰好遇上流量高峰,这些流量直接打在数据库上,我们知道数据库的IO效率远不及Redis,这将大大提高应用负载,容易出现数据库服务器的宕机,从而造成应用的宕机。 由此看来,单机版Redis如果出现故障,将有可能引起一系列的连锁反应,造成不可逆的损失。 容量瓶颈 我们知道Redis是基于内存存储的一个NoSQL数据库

四种重要的非关系型数据库

妖精的绣舞 提交于 2019-12-25 13:39:07
Hbase 列式存储以流的方式在列中存储所有的数据 。对于任何记录,索引都可以快速地获取列上的数据;列式存储支持行检索,但这需要从每个列获取匹配的列值,并重新组成行。HBase(Hadoop Database)是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。HBase是Google BigTable的开源实现,模仿并提供了基于Google文件系统的BigTable数据库的所有功能。HBase可以直接使用本地文件系统或者Hadoop作为数据存储方式,不过为了提高数据可靠性和系统的健壮性,发挥HBase处理大数据量等功能,需要使用Hadoop作为文件系统。HBase仅能通过主键(row key)和主键的range来检索数据,仅支持单行事务,主要用来存储非结构化和半结构化的松散数据。 Hbase中表的特点:大,稀疏,面向列 Hadoop生态系统中的各层系统 HBase位于结构化存储层; HDFS为HBase提供了高可靠性的底层存储支持; MapReduce为HBase提供了高性能的计算能力; Zookeeper为HBase提供了稳定服务和失败恢复机制; Pig和Hive还为HBase提供了高层语言支持,使得在HBase上进行数据统计处理变的非常简单;

分布式缓存Redis使用心得

我的未来我决定 提交于 2019-12-25 13:32:51
一、缓存在系统中用来做什么 1. 少量数据存储,高速读写访问。通过数据全部in-momery 的方式来保证高速访问,同时提供数据落地的功能,实际这正是Redis最主要的适用场景。 2. 海量数据存储,分布式系统支持,数据一致性保证,方便的集群节点添加/删除。Redis3.0以后开始支持集群,实现了半自动化的数据分片,不过需要smart-client的支持。 二、从不同的角度来详细介绍redis 网络模型:Redis使用单线程的IO复用模型,自己封装了一个简单的AeEvent事件处理框架,主要实现了epoll、kqueue和select,对于单纯只有IO操作来说,单线程可以将速度优势发挥到最大,但是Redis也提供了一些简单的计算功能,比如排序、聚合等,对于这些操作,单线程模型实际会严重影响整体吞吐量,CPU计算过程中,整个IO调度都是被阻塞住的。 内存管理:Redis使用现场申请内存的方式来存储数据,并且很少使用free-list等方式来优化内存分配,会在一定程度上存在内存碎片,Redis跟据存储命令参数,会把带过期时间的数据单独存放在一起,并把它们称为临时数据,非临时数据是永远不会被剔除的,即便物理内存不够,导致swap也不会剔除任何非临时数据(但会尝试剔除部分临时数据),这点上Redis更适合作为存储而不是cache。 数据一致性问题:在一致性问题上