rdb

Redis入门(7)

女生的网名这么多〃 提交于 2020-08-12 04:53:16
持久化 RDB方式 Redis实现快照的过程 AOF方式 操作系统缓存 RDB与AOF 复制 主从数据库 主从复制的意义 安全 持久化 Redis通过将数据存储在内存中而获得了极快的速度,但为了保证Redis在重启后数据不丢失,需要将数据从内存持久化到硬盘中。 持久化的方式有两种,二者可以只用一种,也可以组合使用: RDB方式 AOF方式 RDB方式 RDB是Redis默认采用的持久化方式,当符合一定条件时Redis会自动将内存中的所有数据进行快照(snapshotting)并存储在硬盘上。进行快照的条件可以由用户在配置文件中自定义,配置由两个参数构成:时间和改动的键的个数。当在指定的时间内被更改的键的个数大于指定的数值时就会进行快照。在配置文件redis.conf中已经预置了3个条件: save 900 1 save 300 10 save 60 10000 这些条件直接是“或”的关系。如果需要禁用自动快照,可以将所有的save配置删除。 除了自动快照,还可以手动发送SAVE或BGSAVE命令让Redis执行快照,SAVE命令是由主进程进行快照操作,会阻塞住其他请求,而BGSAVE命令则会通过fork子进程进行快照操作。 Redis默认会将快照文件存储在当前目录的dump.rdb文件中,可以通过配置dir和dbfilename两个参数分别指定快照文件的存储路径和文件名。

Redis相关学习心得

半世苍凉 提交于 2020-08-12 04:20:20
** Redis ** NoSQL,即Not Only SQL ,一种开源的非关系型数据库。数据都存在内存中,可以支持数据的持久化。支持简单的key-value模式。 支持的类型包括: string字符串 redis内部存储默认就是一个字符串,被redisObject引用. list链表 简单的字符串列表,按照插入顺序进行排序,从头部和或者尾部添加 set集合 set集合是String类型的无序集合,集合成员唯一,不能出现重复的数据,通过哈希表实现的,所以添加,删除,查找的时间复杂度都为O(1)。 zset有序集合 有序的set集合,每个元素会关联一个double类型的分数,根据分数成员从小到大排序,不允许成员重复,添加,删除,查找的时间复杂度都为O(1)。 hash哈希类型 命令:hget,hset 适合存储对象 Redis使用单线程+多路IO复用的技术 多路复用:阻塞IO(串行),非阻塞IO,IO多路复用 IO复用包括:select,poll,epoll redis事务是一个单独的隔离操作,事务中的所有命令都会序列化,按顺序的执行,事务在执行的过程中,不会被其他客户端的命令和请求打断 操作事务的三个指令: Multi 开始事务 Exec 执行事务 discard 中断事务 悲观锁和乐观锁 悲观锁 : 悲观锁每次去拿数据的时候都认为别人会修改,所以每次拿数据的时候都会上锁

Redis学习笔记(九) AOF持久化

好久不见. 提交于 2020-08-12 01:08:44
Redis学习笔记(九) AOF持久化 除了RDB持久化功能之外,Redis还提供了AOF持久化功能。与RDB持久化通过保存数据库中的键值对来记录数据库状态不同,AOF持久化是通过保存Redis服务器所执行的写命令来记录数据库状态的。 服务器在启动时,可以通过载入和执行AOF文件中保存的命令来还原服务器关闭前的数据库状态。 AOF持久化功能的实现可以分为命令追加append、文件写入、文件同步sync三个步骤。 1、服务器在执行完一个写命令后,会议协议格式将被执行的写命令追加到服务器状态的aof_buf缓冲区末尾。 2、Redis的服务器进程是一个时间循环,这个循环中的文件事件负责接收客户端的命令请求,以及回复,而时间事件则负责执行定时运行的函数,所以服务器每次结束一个事件循环之前他都会调用flushAppendOnlyFile函数,考虑(appendfsync配置)是否将aof_buf缓冲区的内容写入和保存到AOF文件中。 appendfsync值:always(每个事件循环都要同步将aof_buf中的内容写入AOF文件)、everysec (每秒)、no(每个事件循环都要写,但是时写入系统缓冲区) AOF数据还原: 1、创建一个不带网络的伪客户端(redis只能在客户端中执行) 2、从APF文件中分析并读出一条写命令3、使用伪客户端执行被读出的写命令4、重复2、3步骤

Redis学习笔记

偶尔善良 提交于 2020-08-11 23:25:02
教学视频 Redis官网 Redis中文网 本文用到的Java源码 - - - 01.NoSQL入门概述-上 02.NoSQL入门概述-下 03.当下NoSQL应用场景简介 04.NoSQL数据模型简介 05.NoSQL数据库的四大分类 06.分布式数据库CAP原理 07.安装 08.HelloWorld 09.启动后杂项基础知识 10.常用五大数据类型简介 11.Key关键字 12.String 13.List 14.Set 15.Hash 16.ZSet 17.配置文件介绍 18.持久化之RDB 19.持久化之AOF 20.事务 21.消息订阅发布简介 22&23.主从复制 24.Jedis_测试联通 25.Jedis_常用API 26.Jedis_事务 27.Jedis_主从复制 28.Jedis_JedisPool 29.待学 - - 01.NoSQL入门概述-上 1.互联网时代背景下大机遇,为什么用NoSQL 1.单机MySQL的美好年代 在90年代,一个网站的浏览量一般都不大,用单个数据库完全可以轻松应付。 在那个时候,更多的都是静态网页,动态交互类型的网站不多。 DAL:Data Access Layer 上述架构下,我们来看看数据存储的瓶颈是什么? 数据量的总大小一个机器放不下时 数据的索引(B+ Tree)一个机器的内存放不下时 浏览量(读写混合)一个实例不能承受

用存储过程和 JAVA 写报表数据源有什么弊端?

蓝咒 提交于 2020-08-11 15:06:18
我们在报表开发中经常会使用存储过程准备数据,存储过程支持分步计算,可以实现非常复杂的计算逻辑,为报表开发带来便利。所以,报表开发中这样的存储过程并不少见: 3008 行,141KB 的存储过程,会给报表开发带来什么不好的影响? 1. 编辑调试性 存储过程难以编辑调试,这样几千行存储过程的开发周期往往要以周或月计,这样会严重影响报表的开发效率,而业务提的报表需求似乎都“很急”。 2. 维护性 相对开发的一次性,维护的工作可能要经常做。实际业务中报表经常会修改,这种现象叫做报表业务的稳定性差。报表的数据准备逻辑变化,修改上千行的存储过程对绝大多数报表开发人员来说都是噩梦。 有时这样的报表会分两拨人来做,DBA 或专业程序员负责编写存储过程给前端报表开发人员做报表,这样就避免了报表开发人员写存储过程。但这样报表修改的流程会变长,修改一张报表涉及多个人员之间沟通(还包括业务人员),如果负责报表前后端的两拨人隶属不同的团队就更麻烦了。 3. 知识传承 从维护性可以直接引出另一个“知识传承”的问题。还是拿上面的报表为例,如果一个新人要改上面的报表,你觉得他要多久能看懂存储过程,改完报表? 当然,这个问题还涉及很多管理方面的手段,单纯从技术本身来看,这样的报表想要很好地传承知识是很难的。 4. 安全性 对存储过程的修改需要较高的数据库权限,而报表经常要改就要经常操作数据库

Redis持久化

淺唱寂寞╮ 提交于 2020-08-11 13:16:01
RDB:将当前进程数据生成快照保存到硬盘的过程。 两种方式: save:阻塞当前Redis服务器知道RDB过程完成。 bgsave:Redis进程fork子进程,完成后自动结束,Redis阻塞只发生在fork阶段。 执行shutdown命令时在没有开启AOF时会自动执行bgsave。 Redis会对采用LZF算法对RDB文件进行压缩处理 RDB优点 RDB是一个紧凑的二进制文件,代表某个时间点上的数据快照,适用于备份、全量复制等场景 RDB的数据恢复速度远快于AOF模式 RDB缺点 RDB无法做到实时持久化,且每次都需要fork子进程,执行成本高 RDB文件存在多个格式,新老版本无法兼容 AOF:通过日志记录每次写命令,重启时再重新执行AOF文件中的命令打到数据恢复的目的,解决了数据持久化的实时性问题。 文件同步: always:每次写入aof_buf后都需要调用fsync进行同步到AOF的操作。 everysec:每次写入aof_buf后调用write操作,fsync操作由专门线程每秒执行一次。 no:每次写入aof_buf后调用write操作,同步周期不可控,通常最长30秒 AOF重写机制:减少了文件的占用空间,且更小的AOF文件能更快被Redis加载。 超时数据不再写入文件 删除旧AOF文件中的无效命令 多条写操作合并为一条

Redis简介与部署

我与影子孤独终老i 提交于 2020-08-11 10:26:12
  一、简介   Redis是什么?redis是一款基于BSD协议,开源的非关系型数据库(nosql数据库),作者是意大利开发者Salvatore Sanfilippo在2009年发布,使用C语言编写;redis是基于内存存储,而且是目前比较流行的键值数据库(key-value database),它提供将内存通过网络远程共享的一种服务,提供类似功能的还有memcache,但相比 memcache,redis 还提供了易扩展、高性能、具备数据持久性等功能。主要的应用场景有session共享,常用于web集群中的tomcat或PHP中多web服务器的session共享;消息队列,ELK的日志缓存,部分业务的订阅发布系统;计数器,常用于访问排行榜,商品浏览数等和次数相关的数值统计场景;缓存,常用于数据查询、电商网站商品信息、新闻内容等;相对memcache,redis支持数据的持久化,可以将内存的数据保存在磁盘中,重启redis服务或者服务器之后可以从备份文件中恢复数据到内存继续使用;支持string(字符串)、hashes(关联数组)、list(列表)、set(集合)、sorted set(有序集合)、空间索引等数据结构的数据;支持数据的备份,可以实现类似于mysql中的主从模式的数据备份,支持使用快照和AOF(append only file)的数据持久化

Redis 主从复制全剖析

冷暖自知 提交于 2020-08-11 08:52:35
Redis的主从复制是如何工作的?如何在同步数据的同时,还保持着高性能,你了解吗? https://redis.io/topics/replication 注意以下基于 redis 5 最新版本, slave 名词和配置项已经被官方改为 replica ,其实是一个东西,都指从节点。 主从复制的基本流程 # Master-Replica replication. Use replicaof to make a Redis instance a copy of # another Redis server. A few things to understand ASAP about Redis replication. # # +------------------+ +---------------+ # | Master | ---> | Replica | # | (receive writes) | | (exact copy) | # +------------------+ +---------------+ # # 1) Redis replication is asynchronous, but you can configure a master to # stop accepting writes if it appears to be not connected

Redis学习笔记(九) AOF持久化

会有一股神秘感。 提交于 2020-08-11 08:49:19
除了RDB持久化功能之外,Redis还提供了AOF持久化功能。与RDB持久化通过保存数据库中的键值对来记录数据库状态不同,AOF持久化是通过保存Redis服务器所执行的写命令来记录数据库状态的。 服务器在启动时,可以通过载入和执行AOF文件中保存的命令来还原服务器关闭前的数据库状态。 AOF持久化功能的实现可以分为命令追加append、文件写入、文件同步sync三个步骤。 1、服务器在执行完一个写命令后,会议协议格式将被执行的写命令追加到服务器状态的aof_buf缓冲区末尾。 2、Redis的服务器进程是一个时间循环,这个循环中的文件事件负责接收客户端的命令请求,以及回复,而时间事件则负责执行定时运行的函数,所以服务器每次结束一个事件循环之前他都会调用flushAppendOnlyFile函数,考虑(appendfsync配置)是否将aof_buf缓冲区的内容写入和保存到AOF文件中。 appendfsync值:always(每个事件循环都要同步将aof_buf中的内容写入AOF文件)、everysec (每秒)、no(每个事件循环都要写,但是时写入系统缓冲区) AOF数据还原 : 1、创建一个不带网络的伪客户端(redis只能在客户端中执行) 2、从APF文件中分析并读出一条写命令3、使用伪客户端执行被读出的写命令4、重复2、3步骤 直到全部处理完成。 AOF重写

Linux安装redis和部署

谁都会走 提交于 2020-08-11 04:44:47
第一步:下载安装包 访问https://redis.io/download 到官网进行下载。这里下载最新的4.0版本. 第二步:安装 1.通过远程管理工具,将压缩包拷贝到Linux服务器中,执行解压操作 tar -zxf redis-4.0.9.tar.gz 2.进入解压文件目录使用make对解压的Redis文件进行编译 图示:这里因为我redis的安装目录在 /usr/locat/ 目录下,因此会有如下操作 注:如果在编译过程中出现问题,有可能是安装包下载的有误,这里可以尝试的用别人下载的安装包或者直接用 wget http://download.redis.io/releases/redis-4.0.9.tar.gz 如果发现上述读不能解决问题,请参照该链接:https://www.cnblogs.com/liu2-/p/6914159.html 编译完成之后,可以看到解压文件redis-3.0.7 中会有对应的src、conf等文件夹 3.编译成功后,进入src文件夹,执行make install进行Redis安装。 如下图示安装完成,界面如下: 第三步:部署 1.为了方便管理,将Redis文件中的conf配置文件和常用命令移动到统一文件中 1)、创建bin和etc文件 如图示: 2)、回到刚刚安装目录,找到redis.conf,将其复制移动到 /usr/local