数据持久化

Redis从入门到精通(3):正确停掉redis服务

假如想象 提交于 2020-02-06 19:21:32
redis的数据都保存在内存中,只有在上篇讲到的特定条件达成时以及正常退出时才会触发持久化操作,错误地停掉服务就会导致内存中的数据丢失。这一篇我们就来对比四种停掉redis服务的方法,看看该如何正确停掉redis服务。 我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。 文章目录 准备条件 systemd停掉服务 客户端shutdown kill pid kill -9 pid 总结 准备条件 紧接上一篇按照特定配置启动后往下,并且用 redis-cli 连接到redis。我事先在redis中创建了3个已经持久化的key做为参照 127.0.0.1:6379> keys * 1) "age" 2) "name" 3) "hobby" 如上一篇所说,在不退出redis服务情况下的持久化设置为默认设置 save 900 1 save 300 10 save 60 10000 也就是说我只是增加一个key的情况,需要过900秒,也就是15分钟才会自动触发持久化。如果新添加的key被持久化了只可能是正常停掉服务而触发的。 下面开始进行4种不同方法的验证。 systemd停掉服务 在 redis-cli 中新添加一个key如下 127.0.0.1:6379> set test1 test1 OK

Android开发数据持久化存储,sharePreference(偏好选择)的练习

泄露秘密 提交于 2020-02-05 22:51:04
一、目标 以编写手机设置界面为例子,学习sharePreference的使用 二、具体内容 sharePreference主要用于储存用户的偏好设置,例如在安装未知应用的时候是否提醒等等,一般是那种选择的按钮。 储存其步骤共有4步:(假设layout界面的switch id为is_allow_unkown_apps_switch) //第一步、拿到sharePreference   sharedPreferences = this.getSharedPreferences("set_info_true", MODE_PRIVATE); //第二步、进入编辑模式   SharedPreferences.Editor edit = sharedPreferences.edit(); //第三步、保存数据   edit.putBoolean("state",isChecked); //第四步、保存编辑器    edit.commit(); //实现回写 boolean state = sharedPreferences.getBoolean("state", false);//用state来接受存好的数据,默认为false isAllowUnkownSouce.setChecked(state);//回写 三、源代码 package com.example.qq_logindemo;

Spark控制算子

混江龙づ霸主 提交于 2020-02-05 01:37:57
概念: 控制算子有三种,cache,persist,checkpoint,以上算子都可以将RDD持久化,持久化的单位是partition。cache和persist都是懒执行的。必须有一个action类算子触发执行。checkpoint算子不仅能将RDD持久化到磁盘,还能切断RDD之间的依赖关系。 cache 默认将RDD的数据持久化到内存中。cache是懒执行。 注意:cache () = persist()=persist(StorageLevel.Memory_Only) 测试代码: SparkConf conf = new SparkConf(); conf.setMaster("local").setAppName("CacheTest"); JavaSparkContext jsc = new JavaSparkContext(conf); JavaRDD<String> lines = jsc.textFile("./NASA_access_log_Aug95"); lines = lines.cache(); long startTime = System.currentTimeMillis(); long count = lines.count(); long endTime = System.currentTimeMillis(); System.out

1 Spring持久化详解(开篇)

≯℡__Kan透↙ 提交于 2020-02-04 15:05:14
1 Spring在持久化中的应用 多年以来, 关系型数据库 一直是企业级应用中的统治者。在博客“Spring持久化详解(Spring+JDBC)”中,我们将会看到如何使用Spring的JDBC抽象来查询关系型数据库,这要比原生的JDBC简单得多。 如果你不喜欢JDBC风格的话,在博客“Spring持久化详解(Spring+ORM)”中,将会展现Spring如何与 对象关系映射 (ORM)框架进行集成,这些框架包括Hibernate以及其他的Java持久化API(Java Persistence API,JPA)实现。除此之外,还将会看到如何发挥Spring Data JPA的魔力,在运行时自动生成Repository实现。 关系型数据库不一定是所有场景下的最佳选择,因此,博客“Spring持久化详解(Spring+非关系型数据库)”将会研究其他的Spring Data项目,它们能够持久化各种 非关系型数据库 中的数据,包括MongoDB、Neo4j和Redis。 博客“Spring持久化详解( 缓存数据 )”为上述的持久化章提供了一个缓存层,如果数据已经可用的话,它会避免数据库操作,从而提升应用的性能。 与前端类似,安全性在后端也是一个很重要的方面。在博客“Spring持久化详解( 保护方法应用 )”中,将会把Spring Security应用于后端

RabbitMQ集成及使用

╄→гoц情女王★ 提交于 2020-02-03 16:18:51
一、下载并配置RabbitMQ https://www.cnblogs.com/vipstone/p/9275256.html 二、使用 1、在POM中添加依赖 <!-- https://mvnrepository.com/artifact/com.rabbitmq/amqp-client --> <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.6.0</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.25</version> <scope>compile</scope> </dependency> 2、RabbitUtil package RabbitMQ实现.RabbitUtil; import java.io.IOException; import java.util.concurrent.TimeoutException; import com.rabbitmq.client.*; /* * author: hubz * datetime: 2020/2/2

Redis持久化

我们两清 提交于 2020-02-03 07:07:22
一、 文档介绍 redis作为一个内存数据库,读写快,效率高,但是也会有宕机丢失数据的风险,于是就需要持久化操 Q&A: 数据量大于内存大小时应该怎么做? 增加内存or采用内存淘汰策略orRedis集群 持久化会辅助扩大Redis的存储空间么? 不会,持久化的主要作用是数据备份,保证数据不会因进程退出而丢失 (在dump的基础上开始准备Restore的实现,dump操作的第一步就是将aof文件内的记录同步到redis内,故了解一下aof文件) 二、RDB与AOF持久化的原理 2.1 RDB RDB可以认为是Snapshot文件,当恢复时,通过加载RDB文件。把数据从磁盘加载读取到Redis中。 RDB产生:(考虑快照时的操作) SAVE方式:阻塞请求 BGSAVE:fork一个子进程,子进程将快照写到一个临时的RDB文件,写完之后替换旧的RDB文件 RDB的加载: Redis持久化可以禁用,此时数据仅存在于服务器的运行时间内 Redis持久化也可以共存,当同时存在的时候,Redis重启是会先加载AOF文件 2.2 AOF AOF可以认为是日志文件,Append only File,每次对数据的变更或者操作都会先记录打AOF内,当服务启动的时候就会先读取这些文件,重新执行一遍来恢复原始数据。 AOF提供三种同步(写aof文件与操作数据的同步)的方式: always

Redis持久化方式

ぐ巨炮叔叔 提交于 2020-02-03 07:06:56
RDB 和 AOF 持久化不同点: 数据库状态:我们将服务器中的非空数据库以及它们的键值对统称为数据库状态。 *RDB 持久化方式: RDB 持久化功能可以将 Redis 在内存中的数据库状态保存到磁盘里面,避免数据意外丢失,该功能可以将某个时间点的数据库状态保存到一个 RDB 文件中,这个文件是经过压缩的二进制文件,由多个部分组成。 RDB 文件用于保存和还原 Redis 服务器所有数据库中的所有键值对数据。RDB是 Redis 默认的持久化方案。在指定的时间间隔内,执行指定次数的写操作,则会将内存中的数据写入到磁盘中。即在指定目录下生成一个dump.rdb文件。Redis 重启会通过加载dump.rdb文件恢复数据。 *SAVE 和 BGSAVE 区别: SAVE 命令由服务器进程直接执行保存操作,所以该命令会阻塞服务器, BGSAVE 命令由子进程执行保存操作,不会阻塞服务器。对于不同类型的键值对, RDB 文件会使用不同的方式来保存它们。 RDB 的优缺点 优点: 1 适合大规模的数据恢复。 2 如果业务对数据完整性和一致性要求不高,RDB是很好的选择。 缺点: 1 数据的完整性和一致性不高,因为RDB可能在最后一次备份时宕机了。 2 备份时占用内存,因为Redis 在备份时会独立创建一个子进程,将数据写入到一个临时文件(此时内存中的数据是原来的两倍)

redis的持久化和缓存机制

二次信任 提交于 2020-02-03 07:02:05
摘自 https://blog.csdn.net/tr1912/article/details/70197085?foxhandler=RssReadRenderProcessHandler 一、redis的适用环境 首先作为一个nosql的key—value组成的数据库,它们能存储的数据结构必须是简单的,因为有关系的数据即使存储进去之后查询也是很困难的,并且对于海量的数据存储还是关系型数据库比较合适。 举一个把一般数据库数据存储到key-value中的例子: student 学号 姓名 年龄 班级 001 小明 18 2 key value student:001:姓名 小明 student:001:年龄 18 student:001:班级 2 遵从规则为 key 表名:主键值:列名 value 列值 如果加上表关系的话还要复杂好几倍的。 那么什么样的数据适合存储在非关系型数据库中的呢? 1、关系不是很密切的的数据,比如用户信息,班级信息,评论数量等等。 2、量比较大的数据,如访问记录等 3、访问比较频繁的数据,如用户信息,访问数量,最新微博等 二、持久化 那么这么多,这么重要的数据都存储在内存中,如果突然断电,岂不是很糟糕,于是就有了数据的持久化机制,这个其实就是把内存中的数据存储到硬盘中,方便数据的持续存在,也可以减少断电造成的损失。 那么我们怎么持久化数据呢

Redis持久化

白昼怎懂夜的黑 提交于 2020-02-03 02:34:04
RDB redis默认持久化方式为RDB,即快照持久化 在redis.conf中,有触发备份的规则 save 900 1 在900秒内,如果有一次redis操作,就进行备份 save 300 10 在300秒内,如果有10次redis操作,就进行备份 save 60 10000 在60秒内,如果有10000次redis操作,就进行备份 #save "" 如果想禁用rdb,取消注释即可 stop-writes-on-bgsave-error yes 如果备份进程出错,主进程停止写入操作,保持数据一致性 rdbcompression yes 开启压缩配置rdb文件,建议关闭,因为压缩也会消耗cpu的性能,cpu比硬盘更值钱 备份会生成一个dump.rdb文件,此文件是二进制文件 创建RDB文件 save很少使用,因为save指令会在redis的主线程中进行备份,redis是用一个主线程来处理请求的,会阻塞client的请求 通过 lastsave 来获取上次save的时间 可以通过java计时器,调用bgsave指令,来生成备份文件,并添加时间戳存储,作为某个时间的全量数据脚本 move dump.rdb dumo时间戳.rdb 自动触发RDB持久化 根据redis.conf配置的save m n 定时触发(用的是BGSAVE) 主从复制时,主节点自动触发 执行Debug Reload

Redis持久化方案

我的未来我决定 提交于 2020-02-03 00:53:43
Redis持久化方案 Reid是一个内存数据库,为了保证数据库的持久性,它提供两种持久化方案: RDB方式(默认) ADF方式 1.RDB方式 介绍 RDB是Redis默认采用的持久化方式 RDB方式是通过快照(snapshotting)完成的,当符合一定条件时Redis会自动将内存中的数据进行快照并持久化到硬盘。 Redis会在指定的情况下触发快照 1.符合自定义配置的快照规则 2.执行save或者bgsave命令 3.执行flushall命令 4.执行主从复制操作 在redis.conf中设置自定义快照规则 1.2.RDB持久化条件 格式:SAVE<SECONDS><CHANGES> 示例: save 900 1 : 表示15分钟(900秒钟)内至少一个键被更改则进行快照 save 300 10 : 表示5分钟(300秒)内至少10个键被更改则进行快照 save 60 10000:表示1分钟内至少10000个键被更改则进行快 可以配置多个条件(每行配置一个条件),每个条件之间是"或"的关系 1.3.配置dirzhidingrdb快照文件的位置 特别说明: Redis启动后会读取RDB快照文件,将数据从硬盘载入到内存, 根据数据量大小与结构和服务器性能不同,这个时间也不同,通常将记录一千万个字符串类型键,大小为1GB的快照文件载入到内存中需要花费20-30秒钟 1.4