A controller for being located in a storage system with a data de-duplication function, wherein the storage system comprises a flash memory apparatus, and the flash memory apparatus stores a first data block; the controller comprises a processor, a cache, and a communications interface; wherein the communications interface is configured to communicate with the flash memory apparatus; the cache stores information about the first data block, wherein the information about the first data block comprises a reference count of the first data block, or a length of a period of time when the first data block is stored in the flash memory apparatus, or a reference count of the first data block and a length of a period of time when the first data block is stored in the flash memory apparatus, wherein the reference count of the first data block is equal to a quantity of times that the controller references a physical address of the first data block, and wherein the information about the first data block further comprises fingerprint information of the first data block, wherein the fingerprint information of the first data block is obtained by performing computation on the first data block according to a preset hash function; and the processor is configured to: receive the first data block; compute the fingerprint information of the first data block according to the hash function and the first data block; determine that the flash memory apparatus does not comprise a data block whose fingerprint information is the same as the fingerprint information of the first data block; send the first data block to the flash memory apparatus, wherein the reference count of the first data block is equal to an initial value; write the reference count of the first data block into the cache; the processor is further configured to read the information about the first data block from the cache; determine a stability level of the first data block according to the reference count of the first data block, and a mapping relationship between a reference count and a stability level that are of a data block; wherein the stability level is used to indicate stability of the data block; and send a logical address of the first data block and the stability level of the first data block to the flash memory apparatus through the communications interface. receive the first data block; compute the fingerprint information of the first data block according to the hash function and the first data block; determine that the flash memory apparatus does not comprise a data block whose fingerprint information is the same as the fingerprint information of the first data block; send the first data block to the flash memory apparatus, wherein the reference count of the first data block is equal to an initial value; write the reference count of the first data block into the cache; the processor is further configured to read the information about the first data block from the cache; determine a stability level of the first data block according to the reference count of the first data block, and a mapping relationship between a reference count and a stability level that are of a data block; wherein the stability level is used to indicate stability of the data block; and send a logical address of the first data block and the stability level of the first data block to the flash memory apparatus through the communications interface.