rdb

《【面试突击】— Redis篇》--Redis Cluster及缓存使用和架构设计的常见问题

别来无恙 提交于 2020-04-29 01:21:47
能坚持别人不能坚持的,才能拥有别人未曾拥有的。 关注 编程大道 公众号,让我们一同坚持心中所想,一起成长!! 《【面试突击】— Redis篇》--Redis Cluster及缓存使用和架构设计的常见问题 在这个系列里,我会整理一些面试题与大家分享,帮助年后和我一样想要在金三银四准备跳槽的同学。 我们一起巩固、突击面试官常问的一些面试题,加油!! 《【面试突击】— Redis篇》--Redis数据类型?适用于哪些场景? 《【面试突击】— Redis篇》--Redis的线程模型了解吗?为啥单线程效率还这么高? 《【面试突击】— Redis篇》-- Redis的主从复制?哨兵机制? 《【面试突击】— Redis篇》-- Redis哨兵原理及持久化机制 说说Redis cluster 在redis cluster集群架构中,可以由N个redis master node组成,每个master node都可以挂载多个slave node。 可以自动将数据进行分片,每个master上放一部分数据; 还提供内置的高可用支持,部分master不可用时,还是可以继续工作的,因为每个master都有salve节点,那么如果mater挂掉,redis cluster这套机制,就会自动将某个slave切换成master; 支持读写分离:对于每个master来说,都负责写请求,写就写到master

《【面试突击】— Redis篇》-- Redis哨兵原理及持久化机制

让人想犯罪 __ 提交于 2020-04-28 23:17:56
能坚持别人不能坚持的,才能拥有别人未曾拥有的。 关注 编程大道 公众号,让我们一同坚持心中所想,一起成长!! 《【面试突击】— Redis篇》-- Redis哨兵原理及持久化机制 在这个系列里,我会整理一些面试题与大家分享,帮助年后和我一样想要在金三银四准备跳槽的同学。 我们一起巩固、突击面试官常问的一些面试题,加油!! 《【面试突击】— Redis篇》--Redis数据类型?适用于哪些场景? 《【面试突击】— Redis篇》--Redis的线程模型了解吗?为啥单线程效率还这么高? 《【面试突击】— Redis篇》-- Redis的主从复制?哨兵机制? 前两次因为时间原因面试官暂时中止了面试,觉得上次你对redis的主从复制,哨兵机制的知识掌握的还可以,于是今天面试官想看看你到底对Redis了解有多深,又加大了攻势,你准备好了吗? 上次因为时间问题面试草草收场今天我还有几个哨兵的问题要问。首先说一下Redis Sentinel是怎么工作的?重点描述一下故障转移的过程 好的。 1)每个Sentinel以每秒钟一次的频率向它所知的Master,Slave以及其他 Sentinel 实例发送一个 PING 命令。 2)如果一个实例(instance)距离最后一次有效回复 PING 命令的时间超过 down-after-milliseconds 选项所指定的值, 则这个实例会被当前

Redis 的 maxmemory 和 dbnum 默认值都是多少?对于最大值会有限制吗?

折月煮酒 提交于 2020-04-28 16:14:19
一、Redis 的默认配置 了解 Redis 的都知道,Redis 服务器状态有很多可配置的默认值。 例如:数据库数量,最大可用内存,AOF 持久化相关配置和 RDB 持久化相关配置等等。我相信,关于 AOF 持久化和 RDB 持久化的配置大家都很熟悉,但是关于数据库数量和最大可用内存,是不是恰恰很容易被大家忽略? 当 Redis 实例部署在正式环境时,我们可能会根据系统业务或者服务器配置来对 redis.conf 配置文件里的一些选项进行修改。可能此时我们的潜意识都会觉得,大部分东西都是越多越好:数据库数量越多,那么我们就可以一个业务对应一个数据库,再繁杂的业务也不怕不够用;最大可用内存越大,那么我们就可以往 Redis 里存放越多的数据。 那么,数据库数量是不是真的可以无限大,Redis 没做限制么?是不是真的越多越好用? 最大可用内存是不是设置成越大越好?Redis 会不会对此也有限制呢? 下面我们来分析看看。 二、最大可用内存 maxmemory: 1、Redis 源码里的默认最大可用内存:REDIS_DEFAULT_MAXMEMORY 在 redis.h 里我们可以看到最大可用内存 REDIS_DEFAULT_MAXMEMORY 的默认值是0,即最大可用内存默认没有设置最大值。 如果 maxmemory == 0 ,那么不管用户存放多少数据到 Redis 中,Redis

Redis基础知识补充及持久化、备份介绍(二)--技术流ken

不羁的心 提交于 2020-04-28 09:05:08
Redis知识补充 在上一篇博客《 Redis基础认识及常用命令使用(一)--技术流ken 》中已经介绍了redis的一些基础知识,以及常用命令的使用,本篇博客将补充一些基础知识以及redis持久化和备份。 一. 启用redis的认证功能 第一步:登录redis并创建几个字符串,并退出 [root@ken ~]# redis- cli 127.0 . 0.1 : 6379 > set name zhangsan OK 127.0 . 0.1 : 6379 > set addr jiangsu OK 127.0 . 0.1 : 6379 > set tel 123456 OK 127.0 . 0.1 : 6379 > MGET name addr tel 1 ) " zhangsan " 2 ) " jiangsu " 3 ) " 123456 " 127.0.0.1:6379> exit 第二步:修改redis配置文件 大约在80行处启动protect-mode,并添加一行requirepass及密码 [root@ken ~]# vim /etc/ redis.conf ... 76 # By default protected mode is enabled. You should disable it only if 77 # you are sure you want

为什么redis是单线程的以及为什么这么快?

谁说我不能喝 提交于 2020-04-28 08:37:56
官网的说法 我们先来认真看一下官网的说法。翻译过来大意如下: CPU并不是您使用Redis的瓶颈,因为通常Redis要么受内存限制,要么受网络限制。例如,使用在一般Linux系统上运行的流水线Redis每秒可以发送一百万个请求,因此,如果您的应用程序主要使用O(N)或O(log(N))命令,则几乎不会使用过多的CPU 。 但是,为了最大程度地利用CPU,您可以在同一服务器上启动多个Redis实例,并将它们视为不同的服务器。在某个时候,单个实例可能还不够,因此,如果您要使用多个CPU,则可以开始考虑更早地分片的某种方法。 但是,在Redis 4.0中,我们开始使Redis具有更多线程。目前,这仅限于在后台删除对象,以及阻止通过Redis模块实现的命令。对于将来的版本,计划是使Redis越来越线程化。 既然redis的瓶颈不是cpu,那么在单线程可以实现的情况下,自然就使用单线程了。 自己的解读 我们知道redis是基于内存的。那么我们接下来要了解一个问题多线程cpu和内存直接操作差多少? 多线程操作就是使用多个cpu模拟多个线程,对redis进行操作。这样会造成一个巨大的问题,就是cpu的上下文切换问题。cpu的上下文切换的效率比直接在内存中进行读取差的很多。redis使用单个cpu绑定一个内存,针对内存的处理就是单线程的,这样避免了上下文的切换,所以非常的快。

redis基础-redis事务

帅比萌擦擦* 提交于 2020-04-28 06:58:29
学习总结 原文:https://juejin.im/post/5d29ac845188252cc75e2d5c redis事务: redis是否有事务? redis是有事务的。命令如下: Redis事务从开始到结束通常会通过三个阶段: 1.事务开始 2.命令入队 3.事务执行 数据库事务正确执行的四个基本要素ACID: 即:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。 那么,redis事务是否具备这四个要素? 原子性:要么全部执行,要么全部不执行。 redis里面,事务以multi开始,exec执行前面的所有操作: 例子: 1. 127.0.0.1:6379> multi OK 127.0.0.1:6379> set zhangyuzhen 1 QUEUED 127.0.0.1:6379> set zhangyuzhen1 2 QUEUED 127.0.0.1:6379> getzhangyuzhen (error) ERR unknown command 'getzhangyuzhen' 127.0.0.1:6379> get zhangyuzhen QUEUED 127.0.0.1:6379> exec (error) EXECABORT Transaction discarded because

缓存、队列(Memcached、redis、RabbitMQ)

六月ゝ 毕业季﹏ 提交于 2020-04-27 22:45:11
本章内容: Memcached   简介、安装、使用   Python 操作 Memcached   天生支持集群 redis   简介、安装、使用、实例   Python 操作 Redis   String、Hash、List、Set、Sort Set 操作   管道   发布订阅 RabbitMQ   简介、安装、使用   使用 API 操作 RabbitMQ   消息不丢失   发布订阅   关键字发送   模糊匹配 一、Memcached 1、简介、安装、使用   Memcached 是一个高性能的分布式内存对象缓存系统,用于动态 Web 应用以减轻数据库负载压力。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached 基于一个存储键/值对的 hashmap 。其 守护进程 (daemon )是用 C 写的,但是客户端可以用任何语言来编写,并通过 memcached 协议与守护进程通信。 Memcached 内存管理机制: Menceched 通过预分配指定的内存空间来存取数据,所有的数据都保存在 memcached 内置的内存中。   利用 Slab Allocation 机制来分配和管理内存。按照预先规定的大小,将分配的内存分割成特定长度的内存块,再把尺寸相同的内存块分成组,这些内存块不会释放,可以重复利用。  

初学Reids(二)--安装Redis

狂风中的少年 提交于 2020-04-26 23:20:04
1. 下载 redis官网支持Linux版本,微软维护windows版本 redis官网,可以下载linux版本 https://redis.io/ windows版本 https://github.com/MicrosoftArchive/redis/releases 百度网盘有已经下载好的。可视化工具也在里面 链接:https://pan.baidu.com/s/152zzZDo9EFCQNBRaeuMxwg 提取码:2ip1 2. 安装 将 “redis-2.8.9.zip” 解压到指定位置即可,我在虚拟机上弄的,根据自己的来。 3. 目录结构 目录或文件 作用 redis-benchmark 性能检测工具 redis-check-aof AOF文件修复工具 redis-check-dump RDB文件检查工具(快照持久化文件) redis-cli 命令行客户端 redis-server redis服务器启动命令 redis.windows.conf redis核心配置文件 4. 启动redis服务 双击redis-server即可,默认端口号:6379 5. 客户端连接redis 双击redis-cli即可。然后指定ping命令,返回PONG,表示redis已经连同 6. 注册成window服务 双击 redis-server.exe 文件打开黑窗口,表示服务运行中。

【死磕 Redis】—– 持久化

穿精又带淫゛_ 提交于 2020-04-26 18:20:39
原文出处: Java 技术驿站 『 chenssy 』 我们知道 Redis 的数据全部都存储在内存中,如果 Redis 服务器突然宕机,则会导致数据全部丢失,所以必须要有一种机制来保证 Redis 的数据不丢失或者丢失很少一部分,这种机制就是 Redis 的持久化机制。 Redis 的持久化则是将内存中的数据持久备份到硬盘中,在服务重启时可以恢复 。Redis 目前提供了两种持久化方式: RDB,即 Redis DataBase:把 Redis 服务器中内存的数据保存到一个 dump 文件中,数据的集合 AOF,即 Append-only file:把所有对 Redis 服务器进行修改的命令保存到一个 aof 文件中,命令的集合 下面就这两种方式来做详细说明。 RDB RDB,即 Redis 的内存快照,它是在某一个时间点将 Redis 的内存数据 全量 写入一个临时文件,当写入完成后,用该临时文件替换上一次持久化生成的文件,这样就完成了一次持久化过程。 RDB 相关配置 #dbfilename:持久化数据存储在本地的文件 dbfilename dump.rdb #dir:持久化数据存储在本地的路径,如果是在/redis/src下启动的redis-cli,则数据会存储在当前src目录下 dir ./ ##snapshot触发的时机,save <seconds> <changes>

sharding-jdbc之——分库分表实例

倾然丶 夕夏残阳落幕 提交于 2020-04-26 13:56:22
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/79368021 一、概述 之前,我们介绍了利用Mycat进行分库分表操作,Mycat分表操作是利用分库来进行的,单个库中的分表操作可结合MySQL的分区进行,这也是Mycat官方提倡的方式。那么,如何利用Mycat真正实现数据库的分库分表,可以私信我。今天,我们来看看sharding-jdbc,sharding-jdbc也是一款分库分表的“中间件”,不过,它并不向Mycat那样作为一个真正的中间件,它是一款以jar包的形式整合到业务中的插件,这就决定了它是轻量级的,用法也是十分简单的。 二、分库分表实战 接下来,我们就利用sharding-jdbc进行数据库的分库分表操作。 1、创建数据库 首先我们创建相应的数据库 create database sharding_0; create database sharding_1;    这样我们就创建了两个数据库sharding_0和sharding_1; 接下来我们在两个库中创建相应的数据表,在两个库中分别进行如下SQL: SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for t_student_00 -- ---