数据持久化

redis数据库

二次信任 提交于 2019-12-05 17:26:02
redis数据库 musql 关系型数据库 非关系型数据库redis mongodb nosql不仅仅是 redis-cli ping pong NoSQL 学名(not only sql)特点:存储结构与mysql这一种关系型数据库完全不同,nosql存储的是KV形式nosql有很多产品,都有自己的api和语法,以及业务场景产品种类:MongodbredisHbase hadoop Nosql和sql的区别 应用场景不同,sql支持关系复杂的数据查询,nosql反之sql支持事务性,nosql不支持 redis优势 性能高,读取速度10万次每秒写入速度8万次每秒所有操作支持原子性​用作缓存数据库,数据放在内存中替代某些场景下的mysql,如社交类app大型系统中,可以存储session信息,购物车订单 redis缺点 缺点是:断电释放内存数据,redis数据丢失,redis进程挂掉,数据丢失,redis提供了持久化机制 yum安装redis 1.yum安装 #前提得配置好阿里云yum源,epel源#查看是否有redis包yum list redis#安装redisyum install redis -y#安装好,启动redissystemctl start redis 2.检测redis是否工作 redis-cli #redis 客户端工具#进入交互式环境后,执行ping

持久化

▼魔方 西西 提交于 2019-12-05 17:19:30
持久化 为了避免重启后用户数据丢失,所以要把数据放到硬盘上,但是因为硬盘很慢,所以不能替代内存将对象直接放在硬盘上 可以使用序列化、数据库等手段 序列化 将内存中的重要数据适时序列化到硬盘上,然后下次上电后反序列化回内存中 效率低 关系型数据库 强大的理论基础 - 关系代数、关系演算 支持大规模的数据存储和查询 支持事务操作 高度抽象的SQL,屏蔽了数据库的不同和实现细节 O/R Mapping 为了将Java对象和关系型数据库对应起来 JDBC(Java Database Connectivity) Java定义接口,各个数据库去实现 是非常“低级”的接口,使用复杂,细节太多,比如要打开Connection,创建Statement,执行SQL,遍历ResultSet,关闭Connection避免资源泄露。 中间件(Middleware) 把通用的、复杂的服务交给中间件提供商去搞定,开发人员只关注于业务逻辑的开发 EJB标准 最早出现,但还是有点复杂,而且要和企业级应用服务器等一起卖,贵。 EJB 3.0 Hibernate的创始人加入后推出,参考Hibernate也使用了注解的方式,极大的简化了开发,但开发人员已经爱上了轻量级开发,仍没有成功。 不过遗留下一个副产品 - JPA(Java Persistence API),成为了一个标准。 轻量级框架 Hibernate

【转】Redis相关

China☆狼群 提交于 2019-12-05 16:27:16
1. 什么是redis? Redis 是一个使用 C 语言写成的,开源的基于内存的高性能key-value数据库。 Redis的值可以是由string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、Bitmaps(位图)等多种数据结构组成。 回到顶部 2. Redis的特性 速度快 速度快的原因: - Redis所有数据都放在内存中 - Redis是C语言实现 - Redis使用了单线程的架构,预防了多线程可能产生的竞争问题 基于键值对的数据结构服务器 Redis中的值不仅可以是字符串,Redis的值可以是由string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、Bitmaps(位图)等多种数据结构组成,便于许多应用场景的开发并且提高了开发效率。 丰富的共鞥 提供了键过期功能,可以用来实现缓存 提供了发布/订阅功能,可以用来实现消息系统 支持Lua脚本功能,可以利用Lua创造出新的Redis命令 提供了简单的事务功能,能在一定程度上保证事务特性 提供了流水线(Pipeline)功能,减少了网络开销 简单稳定 客户端语言多 持久化 RDB(快照) AOF(日志的形式) 4.0版本开始支持RDB和AOF混用的方式聊进行持久化 主从复制 高可用和分布式 高可用实现:Redis Sentinel 分布式实现

【转】Redis面试题

余生长醉 提交于 2019-12-05 16:26:44
1、谈谈Redis的主从复制流程 有几个重点: 主节点负责写,从节点负责读,slave node 主要用来进行横向扩容,做读写分离,扩容的 slave node 可以提高读的吞吐量。 必须开启 master node 的持久化,不建议用 slave node 作为 master node 的数据热备,因为那样的话,如果你关掉 master 的持久化,可能在 master 宕机重启的时候数据是空的,然后可能一经过复制, slave node 的数据也丢了。 当启动一个 slave node 的时候,它会发送一个 PSYNC 命令给 master node。 slave node 初次连接到 master node,那么会触发一次 full resynchronization 全量复制。此时 master 会启动一个后台线程,开始生成一份 RDB 快照文件,同时还会将从客户端 client 新收到的所有写命令缓存在内存中。 断点续传是通过offset机制。 如果 master node 重启或者数据出现了变化,那么 slave node 应该根据不同的 run id 区分。 更详细见:https://github.com/doocs/advanced-java/blob/master/docs/high-concurrency/redis-master-slave.md 2

iOS 数据持久化

邮差的信 提交于 2019-12-05 15:38:37
iOS 数据持久化 在iOS中,常用的数据持久化操作有四种:plist文件,NSUserdefaults,SQLite3,CoreData. Plist文件:也就是我们常说的属性列表,它是一种明文的轻量级存储方式,存储的格式有很多种,最常规的是XML格式.Plist文件只能用数组或者字典进行读取. 优点: 用来存储少量的数据,响应速度快 其赋值方式简单 缺点: 1.正如优点一样,只能存储少量数据,不能存储大文件数据 2.明文存储,所以其安全性欠缺 NSUserdefaults : 适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名、密码之类的. 其优点与plist文件差不多.但是在使用NSUserdefaults的时候,特别需要注意,因为它不是即时将数据写入文件的,为了防止数据丢失,我们通常需要在后面就手动将其写入文件. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject:@"name" forKey:@"name"]; [defaults synchronize]; SQLite3 : 是一个轻量级,跨平台的小型数据库,其拥有可移植性高、有着和MySql几乎相同的数据库语句以及无需服务器即可使用的优点: 1.可以存储大量的数据,存储和检索的速度非常快

redis持久化RDB与AOF

这一生的挚爱 提交于 2019-12-05 15:18:13
redis持久化 Redis 是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题, Redis 提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失。 RDB持久化 redis 提供了 RDB持久化 的功能,这个功能可以将 redis 在内存中的的状态保存到硬盘中,它可以 手动执行。 也可以再 redis.conf 中配置, 定期执行 。 RDB持久化产生的RDB文件是一个 经过压缩 的 二进制文件 ,这个文件被保存在硬盘中,redis可以通过这个文件还原数据库当时的状态。 RDB(持久化) 内存数据保存到磁盘 在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot) 优点:速度快,适合做备份,主从复制就是基于RDB持久化功能实现 rdb通过再redis中使用save命令触发 rdb rdb配置参数: dir /data/6379/ dbfilename dbmp.rdb 每过900秒 有1个操作就进行持久化 save 900秒 1个修改类的操作 save 300秒 10个操作 save 60秒 10000个操作 save 900 1 save 300 10 save 60 10000 redis持久化之RDB实践 1.启动redis服务端,准备配置文件 daemonize yes port 6379

Streams:深入理解Redis5.0新特性

混江龙づ霸主 提交于 2019-12-05 15:17:41
概述 相较于Redis4.0,Redis5.0增加了很多新的特性,而streams是其中最重要的特性之一。streams是redis 的一种基本数据结构,它是一个新的强大的支持多播的可持久化的消息队列,在设计上借鉴了kafaka。streams的数据类型本身非常简单,有点类似于hash结构,但是它的额外特性异常强大且复杂: 支持持久化。streams能持久化存储数据,不同于 pub/sub 机制和 list 消息被消费后就会被删除,streams消费过的数据会被持久化的保存在历史中。 支持多播。 这一点跟 pub/sub 有些类似。 支持消费者组。streams 允许同一消费组内的消费者竞争消息,并提供了一系列机制允许消费者查看自己的历史消费消息。并允许监控streams的消费者组信息,消费者组内消费者信息,也可以监控streams内消息的状态。 基础内容 数据 ID streams 提供了默认的id模式用来唯一标识streams中的每一条数据,由两部分组成: <millisecondsTime>-<sequenceNumber> millisecondsTime是redis服务所在机器的时间,sequenceNumber用于同一毫秒创建的数据。需要注意的一点是streams的id总是单调增长的,即使redis服务所在的服务器时间异常。如果当前的毫秒数小于以前的毫秒数

面试还搞不懂redis,快看看这40道面试题(含答案和思维导图)

时间秒杀一切 提交于 2019-12-05 14:55:30
Redis 面试题 1、什么是 Redis?. 2、Redis 的数据类型? 3、使用 Redis 有哪些好处? 4、Redis 相比 Memcached 有哪些优势? 5、Memcache 与 Redis 的区别都有哪些? 6、Redis 是单进程单线程的? 7、一个字符串类型的值能存储最大容量是多少? 8、Redis 的持久化机制是什么?各自的优缺点? 9、Redis 常见性能问题和解决方案: 10、redis 过期键的删除策略? 11、Redis 的回收策略(淘汰策略)? 12、为什么 edis 需要把所有数据放到内存中? 13、Redis 的同步机制了解么? 14、Pipeline 有什么好处,为什么要用 pipeline? 15、是否使用过 Redis 集群,集群的原理是什么? 16、Redis 集群方案什么情况下会导致整个集群不可用? 17、Redis 支持的 Java 客户端都有哪些?官方推荐用哪个? 18、Jedis 与 Redisson 对比有什么优缺点? 19、Redis 如何设置密码及验证密码? 20、说说 Redis 哈希槽的概念? 21、Redis 集群的主从复制模型是怎样的? 22、Redis 集群会有写操作丢失吗?为什么? 23、Redis 集群之间是如何复制的? 24、Redis 集群最大节点个数是多少? 25、Redis 集群如何选择数据库? 26

什么是数据持久化

隐身守侯 提交于 2019-12-05 13:47:59
1.什么是持久化?   狭义的理解:“持久化”仅仅指把域对象永久保存到数据库中;   广义的理解,“持久化”包括和数据库相关的各种操作。     ● 保存:把域对象永久保存到数据库。     ● 更新:更新数据库中域对象的状态。     ● 删除:从数据库中删除一个域对象。     ● 加载:根据特定的OID,把一个域对象从数据库加载到内存。     ● 查询:根据特定的查询条件,把符合查询条件的一个或多个域对象从数据库加载内在存中。 2.为什么要持久化?   持久化技术封装了数据访问细节,为大部分业务逻辑提供面向对象的API。     ● 通过持久化技术可以减少访问数据库数据次数,增加应用程序执行速度;     ● 代码重用性高,能够完成大部分数据库操作;     ● 松散耦合,使持久化不依赖于底层数据库和上层业务逻辑实现,更换数据库时只需修改配置文件而不用修改代码。 来源: https://www.cnblogs.com/jiazhutao/p/11926138.html

Redis持久化存储详解

ⅰ亾dé卋堺 提交于 2019-12-05 13:43:56
为什么要做持久化存储? 持久化存储是将 Redis 存储在内存中的数据存储在硬盘中,实现数据的永久保存。我们都知道 Redis 是一个基于内存的 nosql 数据库,内存存储很容易造成数据的丢失,因为当服务器关机等一些异常情况都会导致存储在内存中的数据丢失。 持久化存储分类 在 Redis 中,持久化存储分为两种。一种是 aof 日志追加的方式,另外一种是 rdb 数据快照的方式。 RDB持久化存储 什么是RDB持久化存储 RDB持久化存储即是将redis存在内存中的数据以快照的形式保存在本地磁盘中。 .RDB持久化存储分为自动备份和手动备份 1.手动备份通过 save 命令和 bgsave 命令。save是同步阻塞,而 bgsave 是非阻塞(阻塞实际发生在 fork 的子进程中)。因此,在我们实际过程中大多是使用bgsave命令实现备份. redis> SAVE OK redis> BGSAVE Background saving started 2.自动备份 a.修改配置项 save m n即表示在 m 秒内执行了 n 次命令则进行备份. b.当Redis 从服务器项主服务器发送复制请求时,主服务器则会使用 bgsave命令生成 rbd 文件,然后传输给从服务器. c.当执行 debug reload 命令时也会使用 save 命令生成rdb文件. d.当使用