A method of similarity-based deduplication, comprising the steps of: receiving an input data block; computing discrete wavelet transform, DWT, coefficients being a sequence of S real values based on the input data block; extracting feature-related DWT data being a sequence of M real values with largest absolute values from the computed DWT coefficients, wherein M < S; applying quantization to the extracted feature-related DWT data to obtain keys as results of the quantization; constructing a locality-sensitive fingerprint of the input data block based on the keys; computing a similarity degree between the locality-sensitive fingerprint of the input data block and a locality-sensitive fingerprint of each data block of a plurality of data blocks in a cache memory; selecting, based on the computed similarity degrees, an optimal reference data block as the data block which has the biggest similarity degree with the input data block among all data blocks in the cache memory; determining whether a differential compression is required to be applied based on the similarity degree between the input data block and the optimal reference data block; if the differential compression is required, applying the differential compression to the input data block and the optimal reference data block; and wherein computing the similarity degree between locality-sensitive fingerprints comprises: reconstructing DWT coefficients from the locality-sensitive fingerprints; computing a distance between series of the reconstructed DWT coefficients, wherein each series of the reconstructed DWT coefficients corresponds to a data block and is represented by a vector; and determining the similarity degree as an inverse of the computed distance. receiving an input data block; computing discrete wavelet transform, DWT, coefficients being a sequence of S real values based on the input data block; extracting feature-related DWT data being a sequence of M real values with largest absolute values from the computed DWT coefficients, wherein M < S; applying quantization to the extracted feature-related DWT data to obtain keys as results of the quantization; constructing a locality-sensitive fingerprint of the input data block based on the keys; computing a similarity degree between the locality-sensitive fingerprint of the input data block and a locality-sensitive fingerprint of each data block of a plurality of data blocks in a cache memory; selecting, based on the computed similarity degrees, an optimal reference data block as the data block which has the biggest similarity degree with the input data block among all data blocks in the cache memory; determining whether a differential compression is required to be applied based on the similarity degree between the input data block and the optimal reference data block; if the differential compression is required, applying the differential compression to the input data block and the optimal reference data block; and reconstructing DWT coefficients from the locality-sensitive fingerprints; computing a distance between series of the reconstructed DWT coefficients, wherein each series of the reconstructed DWT coefficients corresponds to a data block and is represented by a vector; and determining the similarity degree as an inverse of the computed distance.