Different keys for clients but 1 key on server
Simple solution (with symmetric encryption):


Assign each device an ID (probably already present)
Store a master key on the server
Use a KDF on the master key and the device ID to generate the key for the device. Then you only need the device ID on the device, and the server can re-create that key as required with the master key and the device ID. Of course the device ID has to be transmitting at the connection phase.
If you want to change keys for the devices, you will also need some random input to the KDF, which also has to be stored for each device ID.


That way each device has its own key, and the server can reconstruct all keys just from his one master key. However, this way the devices have no shared keys and cannot communicate with each other. For that you would either need some sort of public key infrastructure, or you could apply an IBE scheme to your devices, where the server holds the master key. However, public key encryption is quite a bit less efficient than symmetric encryption and hashing, so that you have to check the limitations of your devices.