redis分布式

memcache和redis的对比

旧街凉风 提交于 2019-11-26 16:25:24
1.memcache a.Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。 其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。 b.Memcached的键key一般是字符串,该值不能重复;value可以放入字符串、数组、数值、对象、布尔,二进制数据和图片视频 c.Memcached默认服务端口是11211 1.1 php和memcache的链接 $mem = new Memcache(); $mem->connect("127.0.0.1", 11211); //Memcache::set方法有四个参数,第一个参数是key,第二个参数是value,第三个参数可选,表示是否压缩保存,第四个参数可选,用来设置一个过期自动销毁的时间。 $mem->set('test','123',0,60); //Memcache::add方法的作用和Memcache::set方法类似,区别是如果 Memcache::add方法的返回值为false,表示这个key已经存在,而Memcache::set方法则会直接覆写。 $mem->add('test'

redis、memcache、mongoDB 对比

痴心易碎 提交于 2019-11-26 16:23:08
从以下几个维度,对 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、可用性(单点问题) 对于单点问题, redis,依赖客户端来实现分布式读写

memcache和redis的对比

微笑、不失礼 提交于 2019-11-26 16:22:12
1.memcache a.Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。 其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。 b.Memcached的键key一般是字符串,该值不能重复;value可以放入字符串、数组、数值、对象、布尔,二进制数据和图片视频 c.Memcached默认服务端口是11211 1.1 php和memcache的链接 $mem = new Memcache(); $mem->connect("127.0.0.1", 11211); //Memcache::set方法有四个参数,第一个参数是key,第二个参数是value,第三个参数可选,表示是否压缩保存,第四个参数可选,用来设置一个过期自动销毁的时间。 $mem->set('test','123',0,60); //Memcache::add方法的作用和Memcache::set方法类似,区别是如果 Memcache::add方法的返回值为false,表示这个key已经存在,而Memcache::set方法则会直接覆写。 $mem->add('test'

Redis介绍第一节

强颜欢笑 提交于 2019-11-26 12:26:04
Redis 介绍 redis介绍(Redis安装在磁盘;Redis数据存储在内存) redis是一种基于键值对(key-value)数据库,其中value可以为string、hash、list、set、zset等多种数据结构,可以满足很多应用场景。还提供了键过期,发布订阅,事务,流水线,等附加功能, 流水线: Redis 的流水线功能允许客户端一次将多个命令请求发送给服务器, 并将被执行的多个命令请求的结果在一个命令回复中全部返回给客户端, 使用这个功能可以有效地减少客户端在执行多个命令时需要与服务器进行通信的次数。 特性: 1〉速度快,数据放在内存中,官方给出的读写性能10万/S,与机器性能也有关 a,数据放内存中是速度快的主要原因 b,C语言实现,与操作系统距离近 c,使用了单线程架构,预防多线程可能产生的竞争问题 2〉键值对的数据结构服务器 3〉丰富的功能:见上功能 4〉简单稳定:单线程 5〉持久化:发生断电或机器故障,数据可能会丢失,持久化到硬盘 6〉主从复制:实现多个相同数据的redis副本 8〉高可用和分布式:哨兵机制实现高可用,保证redis节点故障发现和自动转移 9〉客户端语言多:java php python c c++ nodejs等 使用场景: 缓存:合理使用缓存加快数据访问速度,降低后端数据源压力 排行榜:按照热度排名,按照发布时间排行

Redis系列9: redis集群高可用

孤街浪徒 提交于 2019-11-26 12:22:51
Redis集群的概念:   RedisCluster是redis的分布式解决方案,在3.0版本后推出的方案,有效地解决了Redis分布式的需求,当一个服务挂了可以快速的切换到另外一个服务,当遇到单机内存、并发等瓶颈时,可使用此方案来解决这些问题 一、 分布式数据库概念 1. 分布式数据库把整个数据按分区规则映射到多个节点,即把数据划分到多个节点上,每个节点负责整体数据的一个子集。比如我们库有900条用户数据,有3个redis节点,将900条分成3份,分别存入到3个redis节点 2. 分区规则: 常见的分区规则哈希分区和顺序分区, redis 集群使用了哈希分区 ,顺序分区暂用不到,不做具体说明; rediscluster采用了哈希分区的 “虚拟槽分区” 方式(哈希分区分节点取余、一致性哈希分区和虚拟槽分区),其它两种也不做介绍,有兴趣可以百度了解一下 3. 虚拟槽分区(槽:slot) RedisCluster采用此分区,所有的键根据哈希函数(CRC16[key]&16383)映射到0-16383槽内,共16384个槽位,每个节点维护部分槽及槽所映射的键值数据 哈希函数: Hash()=CRC16[key]&16383 按位与 槽与节点的关系如下 redis用虚拟槽分区原因:解耦数据与节点关系,节点自身维护槽映射关系,分布式存储 4. redisCluster的缺陷: a

redis的三种集群方式

徘徊边缘 提交于 2019-11-26 08:03:05
redis有三种集群方式:主从复制,哨兵模式和集群。 1.主从复制 主从复制原理: 从服务器连接主服务器,发送SYNC命令; 主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令; 主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令; 从服务器收到快照文件后丢弃所有旧数据,载入收到的快照; 主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令; 从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令;( 从服务器初始化完成 ) 主服务器每执行一个写命令就会向从服务器发送相同的写命令,从服务器接收并执行收到的写命令( 从服务器初始化完成后的操作 ) 主从复制优缺点: 优点: 支持主从复制,主机会自动将数据同步到从机,可以进行读写分离 为了分载Master的读操作压力,Slave服务器可以为客户端提供只读操作的服务,写服务仍然必须由Master来完成 Slave同样可以接受其它Slaves的连接和同步请求,这样可以有效的分载Master的同步压力。 Master Server是以非阻塞的方式为Slaves提供服务。所以在Master-Slave同步期间,客户端仍然可以提交查询或修改请求。 Slave Server同样是以非阻塞的方式完成数据同步。在同步期间

docker快速搭建分布式爬虫pyspider

天大地大妈咪最大 提交于 2019-11-26 04:32:12
简介 pyspider是Python中强大Web爬虫框架,并且支持分布式架构。 为什么使用docker搭建pyspider 在安装pyspider时爬过一些坑,比如使用pip install pyspider时,python的版本要求在3.6及以下,因为async等已经是python3.7的关键字; 使用git clone代码安装pyspider, python3 setup.py intall ,使用过程会遇到ssl证书的问题,总而言之,可能会遇到版本兼容问题。 使用docker部署pyspider docker的安装不做说明; 直接进入正题。 docker network create --driver bridge pyspider mkdir -p /volume1/docker/Pyspider/mysql/{conf,logs,data}/ /volume1/docker/Pyspider/redis/ docker run --network=pyspider --name redis -d -v /volume1/docker/Pyspider/redis:/data -p 6379:6379 redis docker run --network pyspider -p 33060:3306 --name pymysql -v /volume1/docker

Redis面试题汇总

烂漫一生 提交于 2019-11-26 01:43:20
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支持哪几种数据类型

如何提高缓存命中率(Redis)

╄→гoц情女王★ 提交于 2019-11-25 23:43:02
缓存命中率的介绍 命中:可以直接通过缓存获取到需要的数据。 不命中:无法直接通过缓存获取到想要的数据,需要再次查询数据库或者执行其它的操作。原因可能是由于缓存中根本不存在,或者缓存已经过期。 通常来讲,缓存的命中率越高则表示使用缓存的收益越高,应用的性能越好(响应时间越短、吞吐量越高),抗并发的能力越强。 由此可见,在高并发的互联网系统中,缓存的命中率是至关重要的指标。 如何监控缓存的命中率 redis提供了INFO这个命令,能够随时监控服务器的状态,只用telnet到对应服务器的端口,执行命令即可: telnet localhost 6379 info 在输出的信息里面有这几项和缓存的状态比较有关系: keyspace_hits:14414110 keyspace_misses:3228654 used_memory:433264648 expired_keys:1333536 evicted_keys:1547380 通过计算hits和miss,我们可以得到缓存的命中率:14414110 / (14414110 + 3228654) = 81% ,一个缓存失效机制,和过期时间设计良好的系统,命中率可以做到95%以上 有个ruby gem叫redis-stat,它利用INFO命令展现出更直观的信息报表,推荐: https://github.com/junegunn/redis

Redis 面试题

梦想与她 提交于 2019-11-25 19:37:37
http://www.yunweipai.com/archives/28372.html 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)