rdb

docker搭建redis集群(适用于5.0+)

眉间皱痕 提交于 2020-08-11 04:24:41
前言 Redis集群至少需要3个节点,因为投票容错机制要求超过半数节点认为某个节点挂了该节点才是挂了,所以2个节点无法构成集群。 Redis要求 一主一从的搭配至少要 六个节点,形成三对主从。在项目的实际部署中应用了2台物理机,每台分别部署了3个节点,本篇使用两台虚拟机进行Redis集群部署 部署 一、docker拉取redis # docker 拉取redis镜像 docker pull redis # redis 镜像详情(保证redis版本大于5.0.0) docker inspect redis 二、创建存储目录 # 创建文件夹 mkdir -p /opt/docker/redis-cluster/redis-{6379,6380,6381} # 在每个文件夹中创建data目录和redis.conf配置文件,取名为:redis-6379.conf、redis-6380.conf、redis-6381.conf redis.conf地址 三、修改配置文件的内容 port 7000 ##节点端口 cluster-enabled yes ##cluster集群模式 cluster-config-file nodes.conf ##集群配置名 cluster-node-timeout 5000 ##超时时间 appendonly yes ##持久化模式 protected-mode

Redis面试问题2.0 敖丙版

你说的曾经没有我的故事 提交于 2020-08-11 02:48:28
小伙子您好,看你简历上写了你项目里面用到了Redis,你们为啥用Redis? 心里忍不住暗骂,这叫啥问题,大家不都是用的这个嘛,但是你不能说出来。 认真回答道:帅气迷人的面试官您好,因为传统的关系型数据库如Mysql已经不能适用所有的场景了,比如秒杀的库存扣减,APP首页的访问流量高峰等等,都很容易把数据库打崩,所以引入了缓存中间件,目前市面上比较常用的缓存中间件有Redis 和 Memcached 不过中和考虑了他们的优缺点,最后选择了Redis。 至于更细节的对比朋友们记得查阅Redis 和 Memcached 的区别,比如两者的优缺点对比和各自的场景,后续我有时间也会写出来。 那小伙子,我再问你,Redis有哪些数据结构呀? 字符串String、字典Hash、列表List、集合Set、有序集合SortedSet。 这里我相信99%的读者都能回答上来Redis的5个基本数据类型。如果回答不出来的小伙伴我们就要加油补课哟,大家知道五种类型最适合的场景更好。 但是,如果你是Redis中高级用户,而且你要在这次面试中突出你和其他候选人的不同,还需要加上下面几种数据结构HyperLogLog、Geo、Pub/Sub。 如果你还想加分,那你说还玩过Redis Module,像BloomFilter,RedisSearch,Redis-ML,这个时候面试官得眼睛就开始发亮了

3.docker学习笔记之入门,redis主从配置2 理论

非 Y 不嫁゛ 提交于 2020-08-10 23:40:17
全量复制 用于初次复制或其它无法进行部分复制的情况,将主节点中的所有数据都发送给从节点,是一个非常重型的操作,当数据量较大时,会对主从节点和网络造成很大的开销 部分复制 用于处理在主从复制中因网络闪断等原因造成的数据丢失场景,当从节点再次连上主节点后,如果(条件允许),主节点会补发丢失数据给从节点。因为补发的数据远远小于全量数据,可以有效避免全量复制的过高开销,需要注意的是,如果网络中断时间过长,造成主节点没有能够完整地保存中断期间执行的写命令,则无法进行部分复制,仍使用全量复制 复制偏移量 参与复制的主从节点都会维护自身复制偏移量。主节点(master)在处理完写入命令后,会把命令的字节长度做累加记录,统计信息在 info relication 中的master_repl_offset 指标中: 127.0.0.1:6379> info replication 从节点(slave)每秒钟上报自身的复制偏移量给主节点,因此主节点也会保存从节点的复制偏移量,统计指标如下: 从节点在接收到主节点发送的命令后,也会累加记录自身的偏移量。统计信息在 info relication 中的 slave_repl_offset 中 复制积压缓冲区 复制积压缓冲区是保存在主节点上的一个固定长度的队列,默认大小为1MB,当主节点有连接的从节点(slave)时被创建,这时主节点(master

一篇文章彻底理解Redis持久化:RDB和AOF

|▌冷眼眸甩不掉的悲伤 提交于 2020-08-10 10:16:11
一篇文章彻底理解Redis持久化:RDB和AOF 为什么需要持久化? Redis对数据的操作都是基于内存的,当遇到了进程退出、服务器宕机等意外情况,如果没有持久化机制,那么Redis中的数据将会丢失无法恢复。有了持久化机制,Redis在下次重启时可以利用之前持久化的文件进行数据恢复。理解和掌握Redis的持久机制,对于Redis的日常开发和运维都有很大帮助,也是在大厂面试经常被问到的知识点。Redis支持的两种持久化机制: RDB:把当前数据生成快照保存在硬盘上。 AOF:记录每次对数据的操作到硬盘上。 接下来,我们详细了解一下这两种持久化机制。 RDB持久化 RDB(Redis DataBase)持久化是把当前Redis中全部数据生成快照保存在硬盘上。RDB持久化可以手动触发,也可以自动触发。 手动触发 save和bgsave命令都可以手动触发RDB持久化。 save命令 执行save命令会手动触发RDB持久化,但是save命令会阻塞Redis服务,直到RDB持久化完成。当Redis服务储存大量数据时,会造成较长时间的阻塞,不建议使用。 save OK 执行后,Redis的日志中记录: DB saved on disk bgsave命令 执行bgsave命令也会手动触发RDB持久化,和save命令不同是:Redis服务一般不会阻塞。Redis进程会执行fork操作创建子进程

Redis 主从搭建示例

▼魔方 西西 提交于 2020-08-10 00:12:35
1,配置 1.1 master redis.conf # basic daemonize yes port 6379 logfile /usr/local/redis/var/redis.log pidfile /var/run/redis_6379.pid dir /usr/local/redis/redis_dbfiles/ #受保护模式:在本redis服务暴露在外网时,开启此模式后,其他客户端连接时会校验绑定IP,密码等 protected-mode yes # aof # 主节点打开AOF机制 appendonly yes # master # 绑定IP,否则主从节点无法通信,127.0.0.1表示本机,0.0.0.0表示所有机器 bind 127.0.0.1 bind 123.123.123.123 #表示slave的机器IP # 设置master的认证口令为redis requirepass redis # backlog大小 repl-backlog-size 1mb # 快照同步的超时时间 repl-timeout 60 # 开启无盘复制 repl-diskless-sync yes # 无盘复制的延迟默认为5s,是为了等待更多的slave连接 repl-diskless-sync-delay 5 # 是否开启主从节点复制数据的延迟机制 # 当关闭时

redis文件中的dump.rdb文件

放肆的年华 提交于 2020-08-09 21:10:42
dump.rdb是由Redis服务器自动生成的 默认情况下,每隔一段时间redis服务器程序会自动对数据库做一次遍历,把内存快照写在一个叫做“dump.rdb”的文件里,这个持久化机制叫做SNAPSHOT。有了SNAPSHOT后,如果服务器宕机,重新启动redis服务器程序时redis会自动加载dump.rdb,将数据库状态恢复到上一次做SNAPSHOT时的状态。 至于多久做一次SNAPSHOT,SNAPSHOT文件的路径和文件名,你可以在redis的conf文件里指定。 Redis 支持两种形式的持久化,一种是RDB快照(snapshotting),另外一种是AOF(append-only-file) 来源: oschina 链接: https://my.oschina.net/u/4397388/blog/4274235

Redis系列(二十)、缓存穿透、击穿、雪崩、预热、更新、降级

*爱你&永不变心* 提交于 2020-08-09 11:38:05
Redis是高性能的分布式内存数据库,对于内存数据库经常会出现下面几种情况,也经常会出现在Redis面试题中:缓存穿透、缓存击穿、缓存雪崩、缓存预热、缓存更新、缓存降级。本篇分别介绍这些概念以及对应的解决方案。 目录 缓存穿透 缓存击穿 缓存雪崩 缓存预热 缓存更新 缓存降级 Redis6系列文章 : Redis系列(一)、CentOS7下安装Redis6.0.3稳定版 Redis系列(二)、数据类型之字符串String Redis系列(三)、数据类型之哈希Hash Redis系列(四)、数据类型之列表List Redis系列(五)、数据类型之无序集合Set Redis系列(六)、数据类型之有序集合ZSet(sorted_set) Redis系列(七)、常用key命令 Redis系列(八)、常用服务器命令 Redis系列(九)、Redis的“事务”及Lua脚本操作 Redis系列(十)、详解Redis持久化方式AOF、RDB以及混合持久化 Redis系列(十一)、Redis6新特性之ACL安全策略(用户权限管理) Redis系列(十二)、Redis6集群搭建及原理(主从、哨兵、集群) Redis系列(十三)、pub/sub发布与订阅(对比List和Kafka) Redis系列(十四)、Redis6新特性之RESP3与客户端缓存(Client side caching)

看完这篇Redis缓存三大问题,保你面试能造火箭,工作能拧螺丝。

不问归期 提交于 2020-08-09 10:33:40
前言 日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题。 一旦涉及大数据量的需求,如一些商品抢购的情景,或者主页访问量瞬间较大的时候,单一使用数据库来保存数据的系统会因为面向磁盘,磁盘读/写速度问题有严重的性能弊端,详细的磁盘读写原理请参考这一片 在这一瞬间成千上万的请求到来,需要系统在极短的时间内完成成千上万次的读/写操作,这个时候往往不是数据库能够承受的,极其容易造成数据库系统瘫痪,最终导致服务宕机的严重生产问题。 为了克服上述的问题,项目通常会引入NoSQL技术,这是一种基于内存的数据库,并且提供一定的持久化功能。 Redis 技术就是 NoSQL 技术中的一种。 Redis 缓存的使用,极大的提升了应用程序的性能和效率,特别是数据查询方面。 但同时,它也带来了一些问题。其中,最要害的问题,就是数据的一致性问题,从严格意义上讲,这个问题无解。如果对数据的一致性要求很高,那么就不能使用缓存。 另外的一些典型问题就是,缓存穿透、缓存击穿和缓存雪崩。本篇文章从实际代码操作,来提出解决这三个缓存问题的方案,毕竟Redis的缓存问题是实际面试中高频问点,理论和实操要兼得。 缓存穿透 缓存穿透是指查询一条数据库和缓存都没有的一条数据,就会一直查询数据库,对数据库的访问压力就会增大,缓存穿透的解决方案,有以下两种:

Redis常见面试题

隐身守侯 提交于 2020-08-08 19:00:39
http://jasontec.cn/articles/2019/12/20/1576826633007.html 介绍:Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API的非关系型数据库。 传统数据库遵循 ACID 规则。而 Nosql(Not Only SQL 的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称) 一般为分布式而分布式一般遵循 CAP 定理。 Github 源码:https://github.com/antirez/redis Redis 官网:https://redis.io/ Redis支持的数据类型? String字符串: 格式: set key value string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。 string类型是Redis最基本的数据类型,一个键最大能存储512MB。 Hash(哈希) 格式: hmset name key1 value1 key2 value2 Redis hash 是一个键值(key=>value)对集合。 Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。 List(列表)

centos7搭建redis集群

陌路散爱 提交于 2020-08-08 09:39:26
搭建环境 系统: centos 7.4 服务器金山云 安装ruby环境 [root@jsy-bj-test00 ~]# yum install -y ruby rubygems 复制6份redis服务 [work@jsy-bj-test00 ~]$ cp -rp redis redis1 [work@jsy-bj-test00 ~]$ cp -rp redis redis2 [work@jsy-bj-test00 ~]$ cp -rp redis redis3 redis配置文件修改 #六个节点需做如下更改 [work@jsy-bj-test00 ~]$ vim redis1/etc/redis.conf [work@jsy-bj-test00 ~]$ sed -i 's/port 6379/port 6380/g' redis5/etc/redis.conf #修改端口 port 6380 #打开注释,开启集群模式 cluster-enabled yes #集群的配置文件 cluster-config-file nodes-6380.conf [work@jsy-bj-test00 ~]$ sed -i 's/cluster-config-file nodes-6379.conf/cluster-config-file nodes-6380.conf/g' redis5/etc