redis分布式

Redis常见问题总结

匿名 (未验证) 提交于 2019-12-03 00:43:02
【本文内容来自网络总结】 Redis是一个开源、高性能、基于键值对的缓存与存储系统。 劣势:Redis是单线程,Memcached是多线程,在多核服务器上后者的性能理论上会更高一些。 优势:随着Redis3.0的推出,标志着memcache的所有功能都已经成了Redis的子集。同时Redis对集群的支持使得Memcache原有的第三方集群工具不再成为优势。因此,在新项目中使用Redis替代Memcache将会是非常好的选择。 (1)字符串类型 (Key-Value) 使用最多的类型 (2)散列类型 (Hash) 适合存储对象 (3)列表类型 (List) (4)集合类型 (Set) (5)有序集合类型 (Zset) 内存 Remote Dictionary Server(远程数据服务) 共六种数据淘汰策略。(分三类) 一、从已设置过期的数据集 (1)volatile-lru:从已设置过期时间的数据集中,选择最近最少使用的数据淘汰 (2)volatile-ttl:从已设置过期时间的数据集中,选择将要过期的数据淘汰 (3)volatile-random:从已设置过期时间的数据集中,任意选择数据淘汰 二、从整体数据集 (4)allkeys-lru:从全数据集中,选择最近最少使用的数据淘汰 (5)allkeys-random:从全数据集中任意选择数据淘汰 三、驱逐(默认策略-直接返回错误)

深入学习Redis(5):集群

匿名 (未验证) 提交于 2019-12-03 00:43:02
原文: 深入学习Redis(5):集群 前言 在前面的文章中,已经介绍了Redis的几种高可用技术:持久化、主从复制和哨兵,但这些方案仍有不足,其中最主要的问题是存储能力受单机限制,以及无法实现写操作的负载均衡。 Redis集群解决了上述问题,实现了较为完善的高可用方案。本文将详细介绍集群,主要内容包括: 集群的作用;集群的搭建方法及设计方案;集群的基本原理;客户端访问集群的方法;以及其他实践中需要的集群知识(集群扩容、故障转移、参数优化等) 。 系列文章 深入学习Redis(1):Redis内存模型 深入学习Redis(2):持久化 深入学习Redis(3):主从复制 深入学习Redis(4):哨兵 深入学习Redis(5):集群 Ŀ¼ 一、集群的作用 二、集群的搭建 1. 执行Redis命令搭建集群 2. 使用Ruby脚本搭建集群 3. 集群方案设计 三、集群的基本原理 1. 数据分区方案 2. 节点通信机制 3. 数据结构 4. 集群命令的实现 四、客户端访问集群 1. redis-cli 2. Smart客户端 五、实践须知 1. 集群伸缩 2. 故障转移 3. 集群的限制及应对方法 4. Hash Tag 5. 参数优化 6. redis-trib.rb 参考文献 一、集群的作用 集群,即Redis Cluster,是Redis 3.0开始引入的分布式存储方案。

让Redis突破内存大小的限制

匿名 (未验证) 提交于 2019-12-03 00:43:02
Redis虽然可以实现持久化存储,也是基于数据内存模型的基础之上,单机内存大小限制着Redis存储的数据量,有没有一种替代方案呢?本文介绍一款笔者使用的采用New BSD License 许可协议的软件――SSDB。 官网地址: http://ssdb.io/zh_cn/ SSDB 是一个 C/C++ 语言开发的高性能 NoSQL 数据库, 支持 KV, list, map(hash), zset(sorted set) 等数据结构, 用来替代或者与 Redis 配合存储十亿级别列表的数据。操作命令与redis无异,客户端也很丰富,在众多公司已经在生产环境中使用。 特性 替代 Redis 数据库, Redis 的 100 倍容量 LevelDB 网络支持, 使用 C/C++ 开发 Redis API 兼容, 支持 Redis 客户端 适合存储集合数据, 如 list, hash, zset... 客户端 API 支持的语言包括: C++, PHP, Python, Java, Go 持久化的队列服务 主从复制, 负载均衡 安装 wget no check certificate https : //github.com/ideawu/ssdb/archive/master.zip unzip master cd ssdb master make optional, install

scrapy分布式爬虫设置

匿名 (未验证) 提交于 2019-12-03 00:39:02
# 启用Redis调度存储请求队列 SCHEDULER = "scrapy_redis.scheduler.Scheduler" # 确保所有的爬虫通过Redis去重 DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter" # 默认请求序列化使用的是pickle 但是我们可以更改为其他类似的。PS:这玩意儿2.X的可以用。3.X的不能用 #SCHEDULER_SERIALIZER = "scrapy_redis.picklecompat" # 不清除Redis队列、这样可以暂停/恢复 爬取 #SCHEDULER_PERSIST = True # 使用优先级调度请求队列 (默认使用) #SCHEDULER_QUEUE_CLASS = ‘scrapy_redis.queue.PriorityQueue‘ # 可选用的其它队列 #SCHEDULER_QUEUE_CLASS = ‘scrapy_redis.queue.FifoQueue‘ #SCHEDULER_QUEUE_CLASS = ‘scrapy_redis.queue.LifoQueue‘ # 最大空闲时间防止分布式爬虫因为等待而关闭 # 这只有当上面设置的队列类是SpiderQueue或SpiderStack时才有效 # 并且当您的蜘蛛首次启动时

Spring--集成jedis简单实例

匿名 (未验证) 提交于 2019-12-03 00:22:01
jedis是redis的java客户端,spring将redis连接池作为一个bean配置。 redis连接池分为两种,一种是“redis.clients.jedis.ShardedJedisPool”,这是基于hash算法的一种分布式集群redis客户端连接池。 另一种是“redis.clients.jedis.JedisPool”,这是单机环境适用的redis连接池。 maven导入相关包: <!-- redis依赖包 --> < dependency > < groupId > redis.clients </ groupId > < artifactId > jedis </ artifactId > < version > 2.9.0 </ version > </ dependency > ShardedJedisPool是redis集群客户端的对象池,可以通过他来操作ShardedJedis,下面是ShardedJedisPool的xml配置,spring-jedis.xml: <? xml version="1.0" encoding="UTF-8" ?> < beans xmlns ="http://www.springframework.org/schema/beans" xmlns:xsi ="http://www.w3.org/2001/XMLSchema

在服务器上搭建scrapy分布式爬虫环境的过程

匿名 (未验证) 提交于 2019-12-03 00:22:01
这段时间在用 scrapy 爬取大众点评美食店铺的信息,由于准备爬取该网站上全国各个城市的信息,单机跑效率肯定是跟不上的,所以只能借助于分布式。scrapy 学习自 崔庆才 老师的视频,受益颇多,代码简练易懂,风格清新。这里梳理一遍从刚申请的服务器环境配置,python 安装,到搭建能运行分布式爬虫的整个流程。 服务器我是申请的阿里云的学生机,腾讯云和美团云也申请了,相比起来还是阿里云用起来舒服,腾讯云使用体验最差。我装的是 centos 系统,以下也是 centos 下遇到的问题及解决问题的找过的链接。 另外阿里云需要添加安全组规则,将后面会用到的端口放行,例如27017,6800等。 从机配置 1. python 的安装 在装过好几台服务器后总结出了最短且有效的装 python 的方法,参考了 这篇文章 这里简要总结一下 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz mkdir /usr/local

mybatis总结

匿名 (未验证) 提交于 2019-12-03 00:09:02
1.JDBC是怎么访问数据库的? 答:JDBC编程有6步,分别是1.加载sql驱动,2.使用DriverManager获取数据库连接,3.使用Connecttion来创建一个Statement对象 Statement对象用来执行SQL语句,4.执行SQL语句,5.操作结果集,6.回收数据库资源 2.MyBatis是怎么访问数据库的? 答:1导入架包; 2创建实体类对象; 3 创建mybatis的配置文件mybatis-config.xml; 4创建上面的TuserMapper.xml(Sql映射文件); 5 创建test类进行测试; 3.MyBatis和JDBC访问数据库有什么区别? 答:MyBatis具有以下一些特点:简单易用、性能高效、保留SQL、开源框架。 2可以自定义SQL、存储过程和高级映射的持久层框架 3. 优化获取和释放;SQL统一管理,对数据库进行存取操作;生成动态SQL语句;能够对结果集进行映射 总结: 一: 当dataSource的类型是POOLED时,还额外有以下常用属性。 poolMaximumActiveConnections,连接池最大活动连接数,默认值10 poolMaximumIdleConnections,连接池最大闲置连接数 poolMaximumCheckoutTime,连接“离开”连接池的最大时间,默认20秒 二:

分布式设计--数据库主从

匿名 (未验证) 提交于 2019-12-02 23:55:01
数据库主从 作用 数据备份 读写分离 特点 只能一主多从 (mysql可以多主多从) 从数据库不能写入 (mysql可以写) 配置 # 主从数据库分别配置ip/端口 bind 127.0 . 0.1 port 6379 # 从数据库配置slaveof参数: 主数据库ip 主数据库端口 slaveof 127.0 . 0.1 6379 # 以下两条连起来: 当至少有2个从数据库可以进行复制并且响应延迟都在10秒之内时, 主数据库才允许写操作 min - slaves - to - write 2 min - slaves - max - lag 10 # ubuntu的redis安装目录, 其中包含了redis和sentinal的配置模板 / usr / local / redis / # ubuntu中 启动/重启/停止 默认的redis服务 / etc / init . d / redis - server start / restart / stop 来源:博客园 作者: 太虚真人 链接:https://www.cnblogs.com/oklizz/p/11414367.html

非关系型数据库-nosql

匿名 (未验证) 提交于 2019-12-02 23:34:01
Nosql 本篇文章主要介绍Nosql的一些东西,以及Nosql中比较火的三个数据库Redis、Memchache、MongoDb和他们之间的区别。以下是本文章的阅读目录 一、Nosql介绍 1. Nosql简介 2. Nosql的特点和关系型数据库的区别 3. Redis,Memcache,MongoDb的特点与区别 4 .参考文章 1. Nosql介绍 Nosql的全称是Not Only Sql,这个概念早起就有人提出,在09年的时候比较火。Nosql指的是非关系型数据库,而我们常用的都是关系型数据库。就像我们常用的mysql,sqlserver一样,这些数据库一般用来存储重要信息,应对普通的业务是没有问题的。但是,随着互联网的高速发展,传统的关系型数据库在应付超大规模,超大流量以及高并发的时候力不从心。而就在这个时候,Nosql得到的告诉的发展。 2. Nosql和关系型数据库的区别 1.存储方式   关系型数据库是表格式的,因此存储在表的行和列中。他们之间很容易关联协作存储,提取数据很方便。而Nosql数据库则与其相反,他是大块的组合在一起。通常存储在数据集中,就像文档、键值对或者图结构。 2.存储结构   关系型数据库对应的是结构化数据,数据表都预先定义了结构(列的定义),结构描述了数据的形式和内容。这一点对数据建模至关重要,虽然预定义结构带来了可靠性和稳定性

SpringBoot:redis分布式缓存

谁说胖子不能爱 提交于 2019-12-02 22:41:46
前言 应用系统需要通过Cache来缓存不经常改变得数据来提高系统性能和增加系统吞吐量,避免直接访问数据库等低速存储系统。缓存的数据通常存放在访问速度更快的内存里或者是低延迟存取的存储器,服务器上。应用系统缓存,通常有如下作用: 缓存web系统的输出,如伪静态页面。 缓存系统的不经常改变的业务数据,如用户权限,字典数据.配置信息等 大家都知道springBoot项目都是微服务部署,A服务和B服务分开部署,那么它们如何更新或者获取共有模块的缓存数据,或者给A服务做分布式集群负载,如何确保A服务的所有集群都能同步公共模块的缓存数据,这些都涉及到分布式系统缓存的实现。(ehcache可以通过Terracotta组件一个缓存集群,这个暂时不讲) 但是ehcache的设计并不适合做分布式缓存,所以今天用redis来实现分布式缓存。 架构图: 一二级缓存服务器 使用Redis缓存, 通过网络访问还是不如从内存中获取性能好,所以通常称之为二级缓存 , 从内存中取得的缓存数据称之为一级缓存。 当应用系统需要查询缓存的时候,先从一级缓存里查找,如果有,则返回,如果没有查找到,则再查询二级缓存,架构图如下 Spring Boot 2 自带了前面俩种缓存的实现方式,本文将简单实现第三种,高速一二级缓存实现 Redis分布式缓存 1.pom文件 <dependency>   <groupId>org