code: async def rename(self, src, dst):
          
          if src == dst:
              raise ResponseError("source and destination objects are the same")
  
          data = await self.dump(src)
  
          if data is None:
              raise ResponseError("no such key")
  
          ttl = await self.pttl(src)
  
          if ttl is None or ttl < 1:
              ttl = 0
  
          await self.delete(dst)
          await self.restore(dst, ttl, data)
          await self.delete(src)
  
          return True
docs: Rename key ``src`` to ``dst``
  
          Cluster impl:
              This operation is no longer atomic because each key must be querried
              then set in separate calls because they maybe will change cluster node