A data caching method, comprising: storing cells, based on an input port number of the cells, to a corresponding First-In-First-Out, FIFO, queue; and in a current Kth cycle, when it is determined that the cell waiting for dequeue can be dequeued, performing the following: scheduling a cell waiting for dequeue to be dequeued; acquiring an actual value of a number of concatenation units occupied by the cell waiting for dequeue; and storing the cell waiting for dequeue, through cell concatenation, into a register with a bit width same as a bit width of a bus; wherein it is determined that the cell waiting for dequeue can be dequeued when a first back pressure count value in a (K-1)th cycle is less than or equal to a first preset threshold, wherein the first back pressure count value in the (K-1)th cycle is calculated based on an estimate value of a number of concatenation units occupied by a previous dequeued cell, a number of concatenation units transmittable by the bus per cycle, and the first back pressure count value in a (K-2)th cycle, where the K is a positive integer; wherein storing the cell waiting for dequeue through the cell concatenation into the register with the bit width as same as the bit width of the bus comprises: looking for a write pointer; storing the cell waiting for dequeue into a register corresponding to the write pointer, based on the actual value of the number of the concatenation units occupied by the cell waiting for dequeue; when the register contains one or more valid cells, concatenating the cell waiting for dequeue with the one or more valid cells in units of concatenation units; and recording cell concatenation information, and updating the write pointer. storing cells, based on an input port number of the cells, to a corresponding First-In-First-Out, FIFO, queue; and in a current Kth cycle, when it is determined that the cell waiting for dequeue can be dequeued, performing the following: scheduling a cell waiting for dequeue to be dequeued; acquiring an actual value of a number of concatenation units occupied by the cell waiting for dequeue; and storing the cell waiting for dequeue, through cell concatenation, into a register with a bit width same as a bit width of a bus; scheduling a cell waiting for dequeue to be dequeued; acquiring an actual value of a number of concatenation units occupied by the cell waiting for dequeue; and storing the cell waiting for dequeue, through cell concatenation, into a register with a bit width same as a bit width of a bus; wherein it is determined that the cell waiting for dequeue can be dequeued when a first back pressure count value in a (K-1)th cycle is less than or equal to a first preset threshold, wherein the first back pressure count value in the (K-1)th cycle is calculated based on an estimate value of a number of concatenation units occupied by a previous dequeued cell, a number of concatenation units transmittable by the bus per cycle, and the first back pressure count value in a (K-2)th cycle, where the K is a positive integer; wherein storing the cell waiting for dequeue through the cell concatenation into the register with the bit width as same as the bit width of the bus comprises: looking for a write pointer; storing the cell waiting for dequeue into a register corresponding to the write pointer, based on the actual value of the number of the concatenation units occupied by the cell waiting for dequeue; when the register contains one or more valid cells, concatenating the cell waiting for dequeue with the one or more valid cells in units of concatenation units; and recording cell concatenation information, and updating the write pointer. looking for a write pointer; storing the cell waiting for dequeue into a register corresponding to the write pointer, based on the actual value of the number of the concatenation units occupied by the cell waiting for dequeue; when the register contains one or more valid cells, concatenating the cell waiting for dequeue with the one or more valid cells in units of concatenation units; and recording cell concatenation information, and updating the write pointer.