redis分布式

缓存协议:redis和memcached的优缺点及区别

拟墨画扇 提交于 2019-12-13 21:24:20
memcached 和 redis 都很类似:都是内存型数据库,数据保存在内存中,通过tcp直接存取,优势是速度快,并发高,缺点是数据类型有限,查询功能不强,一般用作缓存。 那么题主说 memcached 的事情 redis 都可以做,那么为什么 memcached 还有人用?那是因为它们两者并不是完全可以相互替代的,它们也有各自的长短优缺点 Memcached Memcached的优点: Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key、value的字节大小以及服务器硬件性能,日常环境中QPS高峰大约在4-6w左右)。 适用于最大程度扛量,有效为服务器减压。 支持直接配置为session handle。 配置维护的坑比较少。 Memcached的局限性: 数据结构很简单单一,只支持简单的key/value数据结构,不像Redis可以支持丰富的数据类型。 无法进行持久化,数据不能备份,只能用于缓存使用,且重启后数据全部丢失。 无法进行数据同步,不能将MC中的数据迁移到其他MC实例中。 Memcached内存分配采用Slab Allocation机制管理内存,value大小分布差异较大时会造成内存利用率降低,并引发低利用率时依然出现踢出等问题。需要用户注重value设计。 memcached服务端原生不支持水平扩展

CDN静态资源加速技术深度解析,开发工程师也得要掌握

孤街浪徒 提交于 2019-12-13 13:18:25
前几天,我们讲到了为何引入缓存且应该什么时候引入,并且讲到了我们生产中缓存的读写策略是什么,忘记了的可以自行去文章列表看下,同时又单独深入讲解了redis哨兵机制( Redis 哨兵机制以及底层原理深入解析,这次终于搞清楚了 )和缓存穿透问题的解决方案( 烦人的缓存穿透问题,今天教就你如何去解决 )。至此,我们现在的系统架构已经是这样子的了 于架构图我们可以看出,我们现在使用了分布式缓存来加速动态请求的各种数据,但是,我们的系统中其实还有很多的静态资源的,并且请求量也是超级大的。例如: 移动端APP,有很多的图片,小视频以及流媒体等。 对于网站来说,不仅有上面那些资源之外,还有大量的HTML 文件,css文件以及Javascript文件等。 现在我们的一个商城里面,有很多的商品图片,并且详情页还有产品介绍视频,目前这些静态资源均是放在Nginx服务器上的,请求量很大,并且这些文件对于访问速度要求极高,并且占据很高的带宽。这里就会很有可能出现访问速度变慢,将带宽占满从而影响我们后端动态请求。这个时候我们就需要考虑该怎么去对这些静态资源做加速了。 如何思考加速 首先我们想一下可不可以也用分布式缓存来存储达到加速的目的呢?答案肯定是不行的,因为: 图片或者视频文件大小都不小,在几兆到几百兆之间。 我们的用户是遍地全国各地的甚至还有国外用户,需要让用户能很快的得到相应,即就近访问

Redis集群搭建的几种方式

拈花ヽ惹草 提交于 2019-12-12 23:36:25
前面使用了哨兵集群搭建单个分片高可用的结构,实现了主从复制和故障转移,但是没有实现分布式。接下来使用Redis集群搭建,实现哨兵集群没有实现的 分布式 高可用。 redis-cluster搭建需求 下面准备6个redis节点,搭建如图所示的三主三从分布式redis集群,实现两两互联,以master8001为例,它可以连接另外两个主节点,以及三个从节点。搭建过程可以使用原生redis命令,也可以使用ruby自带的脚本(需要先安装ruby)。 ruby脚本辅助搭建 使用ruby脚本辅助安装,即使用redis根目录/src/redis-trib.rb脚本来完成,需要先安装ruby。 -rwxrwxr-x. 1 root root 60852 Sep 21 2017 redis-trib.rb (1)安装ruby,这里解压了压缩包,进行编译和安装。但是安装完只是最基本的一步,后面还需要对ruby进行配置,比较麻烦。 # 解压 [root@node01 /home/software]# tar -zxvf ruby-2.3.1.tar.gz # 检查 [root@node01 /home/software/ruby-2.3.1]# . /configure # 编译,安装 [root@node01 /home/software/ruby-2.3.1]# make && make

Redis三种部署方式

自作多情 提交于 2019-12-12 16:39:14
standaloan(单机模式) standaloan 是redis单机模式,及所有服务连接一台redis服务,该模式不适用生产。如果发生宕机,内存爆炸,就可能导致所有连接改redis的服务发生缓存失效引起雪崩。 ssentinel(哨兵模式) redis-Sentinel(哨兵模式)是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主备切换,而Redis-sentinel本身也是一个独立运行的进程,它能监控多个master-slave集群,发现master宕机后能进行切换 sentinel哨兵如下功能实现 (1)monitoring:监控redis是否正常运行 (2)notification:通知application错误信息 (3)failover:当某个master死掉,选择另外一个slave升级为master,更 新master-slave关系。 (4)configurationprovider:client通过sentinel获取redis地址,并在failover时更新地址 2.sentinels and slaves autodiscovery(redis2.8及以上) 配置文件中只配置master地址

Redis与Memcached的区别

非 Y 不嫁゛ 提交于 2019-12-12 15:59:04
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> memcached和redis的区别 区别: 1、数据类型不同,memcached只支持key-value,redis支持String,List,Map,set,sorted Set 2、memcached保存在内存中,redis内存和文件里面都有保存,宕机之后memcached完全丢失,redis还可以从文件中恢复到内存中 3、memcahed的内存分配是基于slab划分的,通过page(默认1M)申请内存,然后每个slab会划分为好多的chunk,数据都存储在chunk中,redis为了屏蔽不同平台之间的差异,redis对内存分配函数进行了一层封装,程序中统一使用zmalloc,zfree一系列函数 4、memcahed基于libevent网络库,而redis是基于epoll网络模型,紧接着说下, select,poll,epoll的区别 select同步阻塞,最大文件描述符1024, poll同步阻塞,没有最大文件描述符限制, epoll异步非阻塞,没有最大文件描述符限制。 select是轮询式的事件通知, epoll是回调事件通知callback 5、memcahed多线程的,redis是单线程的,redis使用epoll,这就是redis为什么使用单线程性能一点也不逊于memcahed的原因 6

redis主从集群搭建及容灾部署(哨兵sentinel)

孤者浪人 提交于 2019-12-12 13:46:33
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Redis也用了一段时间了,记录一下相关集群搭建及配置详解,方便后续使用查阅。 提纲 Redis安装 整体架构 Redis主从结构搭建 Redis容灾部署(哨兵sentinel) Redis常见问题 Redis安装 发行版: CentOS -6.6 64bit 内核:2.6.32-504.el6.x86_64 CPU:intel-i7 3.6G 内存:2G 下载redis,选择合适的版本 [root @rocket software]# wget http://download.redis.io/releases/redis-2.8.17.tar.gz [root @rocket software]# cd redis-2.8.17 [root @rocket redis-2.8.17]# make [root @rocket redis-2.8.17]# make test cd src && make test make[1]: Entering directory `/home/software/redis-2.8.17/src' You need tcl 8.5 or newer in order to run the Redis test make[1]: *** [test] Error 1

redis主从集群搭建及容灾部署(哨兵sentinel)

白昼怎懂夜的黑 提交于 2019-12-12 13:18:55
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Redis也用了一段时间了,记录一下相关集群搭建及配置详解,方便后续使用查阅。 提纲 Redis安装 整体架构 Redis主从结构搭建 Redis容灾部署(哨兵sentinel) Redis常见问题 Redis安装 发行版: CentOS -6.6 64bit 内核:2.6.32-504.el6.x86_64 CPU:intel-i7 3.6G 内存:2G 下载redis,选择合适的版本 [root @rocket software]# wget http://download.redis.io/releases/redis-2.8.17.tar.gz [root @rocket software]# cd redis-2.8.17 [root @rocket redis-2.8.17]# make [root @rocket redis-2.8.17]# make test cd src && make test make[1]: Entering directory `/home/software/redis-2.8.17/src' You need tcl 8.5 or newer in order to run the Redis test make[1]: *** [test] Error 1

为什么要用 redis 而不用 map 做缓存?

霸气de小男生 提交于 2019-12-11 15:56:25
缓存分为本地缓存和分布式缓存。以 Java 为例,使用自带的 map 或者 guava 实现的是本地缓存,最 主要的特点是轻量以及快速,生命周期随着 jvm 的销毁而结束,并且在多实例的情况下,每个实例都需要 各自保存一份缓存,缓存不具有一致性。 使用 redis 或 memcached 之类的称为分布式缓存,在多实例的情况下,各实例共用一份缓存数据, 缓存具有一致性。缺点是需要保持 redis 或 memcached 服务的高可用,整个程序架构上较为复杂。 来源: https://www.cnblogs.com/chen4j/p/12022868.html

Redis

最后都变了- 提交于 2019-12-11 13:13:53
Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸,打败了无数竞争对手,每次都只能看到无数落寞的身影失望的离开,略感愧疚(请允许我使用一下夸张的修辞手法)。 于是在一个寂寞难耐的夜晚,我痛定思痛,决定开始写《吊打面试官》系列,希望能帮助各位读者以后面试势如破竹,对面试官进行360°的反击,吊打问你的面试官,让一同面试的同僚瞠目结舌,疯狂收割大厂Offer! 絮叨 上一期因为是在双十一一直在熬夜的大环境下完成的,所以我自己觉得质量明显没之前的好,我这不一睡好就加班加点准备补偿大家,来点干货。(熬夜太容易感冒了,这次点个赞别白嫖了!) 顺带提一嘴,我把我准备写啥画了一个思维导图,以后总不能每篇都放个贼大的图吧,就开源到了我的GitHub,大家有兴趣可以去完善和Star。 这篇我就先放出来大家看看,感觉还是差点意思,等大家完善了。 回望过去 上一期吊打系列我们提到了Redis相关的一些知识,还没看的小伙伴可以回顾一下 《吊打面试官》系列-Redis基础 《吊打面试官》系列-缓存雪崩、击穿、穿透 《吊打面试官》系列-Redis哨兵、持久化、主从、手撕LRU 《吊打面试官》系列-Redis终章-凛冬将至、FPX-新王登基 这期我就从缓存到一些常见的问题讲一下

50-哨兵机制和持久化

孤者浪人 提交于 2019-12-11 08:40:51
目录 1、什么是哨兵机制 2、哨兵模式修改配置 3、什么是Redis持久化 4、RDB持久化 5、AOF持久化 6、AOF与ROB区别 1、什么是哨兵机制 Redis的哨兵(sentinel)系统用于管理多个Redis服务器,该系统执行以下三个任务: 1.1、监控(Monitoring):哨兵(sentinel)会不断地检查你的Master和Slave是否运作正常 1.2、提醒(Notification):当被监控的某个Redis出现问题时,哨兵(sentinel) 可以通过 API 向管理员或者其他应用程序发送通知。 1.3、转载自动故障迁移(Automatic failover):当一个Master不能正常工作时,哨兵(sentinel) 会开始一次自动故障迁移操作,它会将失效Master的其中一个Slave升级为新的Master, 并让失效Master的其他Slave改为复制新的Master; 当客户端试图连接失效的Master时,集群也会向客户端返回新Master的地址,使得集群可以使用Master代替失效Master。 1.4、哨兵(sentinel) 是一个分布式系统,你可以在一个架构中运行多个哨兵(sentinel) 进程,这些进程使用留言协议(gossipprotocols)来接收关于Master是否下线的信息,并使用投票协议(agreement protocols