概念
- 是直接在移动设备中运行的数据库
- 它并没有基于任何现成的数据库,他是一个重零开始研发的数据库
- 不需要sql语句就可以操控它。直接把一个对象存储在磁盘中,所以它能非常快的从内存到磁盘操作对象。Realm是一个直接存储的对象,它不需要把数据再转化为对象操作,所以他也不需要去使用om框架,因为它本身就可以执行类似于om的操作
- 同时支持Java,Object-C,swift,JavaScript等,支持IOS,Android,JavaScript等平台
Realm数据模型
- 一个模型表示一张表,模型中的每个字段就是表示表中的每个列
- 每个数据模型都要继承RealmObject类,没有继承的就不会被当成Realm的数据模型
- 模型实时自动更新(不是指模型结构会自动发生改变,而是指我们的模型类,也就是继承自RealmObject的类,它会自动更新到底层数据的映射视图,对于数据的改动,会及时的反映到相关的对象或查询结果之中)
Realm 事务
- 所有会使数据发生变化的操作必须在事务中进行。保证数据安全,数据一致性
- 事务分为同步事物和异步事务两种,两种事务共有三种写法
引用计数
内存管理机制,系统将资源(对象,内存,磁盘空间)的被引用次数保存起来,当被引用次数为0时,系统会将这块资源的内存进行释放的一个过程
Realm就是使用了一个引用计数的方式去管理内存:每调用一次realm的getInstance()来获取Realm实例的时候,Realm引用数就会去加1,当我们使用实例的close方法时,引用数就会减1,所以为了保证Realm占用内存可以被及时的释放,应该在每次去使用完Realm之后及时close