A data reading method, comprising: determining whether a preset cache area has cached data that a read target address points to when receiving a read instruction that comprises the read target address; and finding a cache address corresponding to the read target address according to a first mapping relationship if the preset cache area has cached the data that the read target address points to, and reading, from the preset cache area, data that the cache address points to, wherein the first mapping relationship is used to record a correspondence between the read target address and the cache address; or reading, from non-volatile storage space, the data that the read target address points to if the preset cache area has not cached the data that the read target address points to; characterised in that the method further comprises: when receiving a write instruction, determining whether a write target address in the write instruction belongs to a most significant bit page MSB page in the non-volatile storage space, wherein the write instruction comprises to be written data and the write target address; and if the write target address does not belong to an MSB page in the non-volatile storage space, storing, in the preset cache area and the non-volatile storage space that is corresponding to the write target address, the to be written data, and establishing the first mapping relationship between the cache address and the write target address, wherein the storing in the preset cache area is a backup; or if the write target address belongs to an MSB page in the non-volatile storage space, storing, in the non-volatile storage space corresponding to the write target address, the to be written data. determining whether a preset cache area has cached data that a read target address points to when receiving a read instruction that comprises the read target address; and finding a cache address corresponding to the read target address according to a first mapping relationship if the preset cache area has cached the data that the read target address points to, and reading, from the preset cache area, data that the cache address points to, wherein the first mapping relationship is used to record a correspondence between the read target address and the cache address; or reading, from non-volatile storage space, the data that the read target address points to if the preset cache area has not cached the data that the read target address points to; characterised in that the method further comprises: when receiving a write instruction, determining whether a write target address in the write instruction belongs to a most significant bit page MSB page in the non-volatile storage space, wherein the write instruction comprises to be written data and the write target address; and if the write target address does not belong to an MSB page in the non-volatile storage space, storing, in the preset cache area and the non-volatile storage space that is corresponding to the write target address, the to be written data, and establishing the first mapping relationship between the cache address and the write target address, wherein the storing in the preset cache area is a backup; or if the write target address belongs to an MSB page in the non-volatile storage space, storing, in the non-volatile storage space corresponding to the write target address, the to be written data.