def METHOD_NAME():
    redis_auth_args = redis_auth_argument_spec()
    module_args = dict(
        key=dict(type='str', required=True, no_log=False),
        increment_int=dict(type='int', required=False),
        increment_float=dict(type='float', required=False),
    )
    module_args.update(redis_auth_args)
    module = AnsibleModule(
        argument_spec=module_args,
        supports_check_mode=True,
        mutually_exclusive=[['increment_int', 'increment_float']],
    )
    fail_imports(module)
    redis = RedisAnsible(module)
    key = module.params['key']
    increment_float = module.params['increment_float']
    increment_int = module.params['increment_int']
    increment = 1
    if increment_float is not None:
        increment = increment_float
    elif increment_int is not None:
        increment = increment_int
    result = {'changed': False}
    if module.check_mode:
        value = 0.0
        try:
            res = redis.connection.get(key)
            if res is not None:
                value = float(res)
        except ValueError as e:
            msg = 'Value: {0} of key: {1} is not incrementable(int or float)'.format(
                res, key)
            result['msg'] = msg
            module.fail_json(**result)
        except Exception as e:
            msg = 'Failed to get value of key: {0} with exception: {1}'.format(
                key, str(e))
            result['msg'] = msg
            module.fail_json(**result)
        msg = 'Incremented key: {0} by {1} to {2}'.format(
            key, increment, value + increment)
        result['msg'] = msg
        result['value'] = float(value + increment)
        module.exit_json(**result)
    if increment_float is not None:
        try:
            value = redis.connection.incrbyfloat(key, increment)
            msg = 'Incremented key: {0} by {1} to {2}'.format(
                key, increment, value)
            result['msg'] = msg
            result['value'] = float(value)
            result['changed'] = True
            module.exit_json(**result)
        except Exception as e:
            msg = 'Failed to increment key: {0} by {1} with exception: {2}'.format(
                key, increment, str(e))
            result['msg'] = msg
            module.fail_json(**result)
    elif increment_int is not None:
        try:
            value = redis.connection.incrby(key, increment)
            msg = 'Incremented key: {0} by {1} to {2}'.format(
                key, increment, value)
            result['msg'] = msg
            result['value'] = float(value)
            result['changed'] = True
            module.exit_json(**result)
        except Exception as e:
            msg = 'Failed to increment key: {0} by {1} with exception: {2}'.format(
                key, increment, str(e))
            result['msg'] = msg
            module.fail_json(**result)
    else:
        try:
            value = redis.connection.incr(key)
            msg = 'Incremented key: {0} to {1}'.format(key, value)
            result['msg'] = msg
            result['value'] = float(value)
            result['changed'] = True
            module.exit_json(**result)
        except Exception as e:
            msg = 'Failed to increment key: {0} with exception: {1}'.format(
                key, str(e))
            result['msg'] = msg
            module.fail_json(**result)