Provided by: varnish-redis_15.1-1_amd64 bug

NAME

       vmod_redis - Redis VMOD

SYNOPSIS

          import redis [as name] [from "path"]

          VOID subnets(STRING masks)

          VOID sentinels(STRING locations, INT period, INT connection_timeout, INT command_timeout, ENUM protocol, BOOL tls, STRING tls_cafile, STRING tls_capath, STRING tls_certfile, STRING tls_keyfile, STRING tls_sni, STRING password)

          VOID use(STRING db)

          VOID add_server(STRING location, ENUM type, STRING db)

          VOID command(STRING name, STRING db)

          VOID timeout(INT command_timeout, STRING db)

          VOID retries(INT max_command_retries, STRING db)

          VOID push(STRING arg, STRING db)

          VOID execute(BOOL master, STRING db)

          BOOL replied(STRING db)

          BOOL reply_is_error(STRING db)

          BOOL reply_is_nil(STRING db)

          BOOL reply_is_status(STRING db)

          BOOL reply_is_integer(STRING db)

          BOOL reply_is_boolean(STRING db)

          BOOL reply_is_double(STRING db)

          BOOL reply_is_string(STRING db)

          BOOL reply_is_array(STRING db)

          STRING get_reply(STRING db)

          STRING get_error_reply(STRING db)

          STRING get_status_reply(STRING db)

          INT get_integer_reply(STRING db)

          BOOL get_boolean_reply(STRING db)

          REAL get_double_reply(STRING db)

          STRING get_string_reply(STRING db)

          INT get_array_reply_length(STRING db)

          BOOL array_reply_is_error(INT index, STRING db)

          BOOL array_reply_is_nil(INT index, STRING db)

          BOOL array_reply_is_status(INT index, STRING db)

          BOOL array_reply_is_integer(INT index, STRING db)

          BOOL array_reply_is_boolean(INT index, STRING db)

          BOOL array_reply_is_double(INT index, STRING db)

          BOOL array_reply_is_string(INT index, STRING db)

          BOOL array_reply_is_array(INT index, STRING db)

          STRING get_array_reply_value(INT index, STRING db)

          VOID free(STRING db)

          STRING stats(ENUM format, BOOL stream, STRING prometheus_name_prefix, BOOL prometheus_default_labels, STRING prometheus_extra_labels, STRING db)

          INT counter(STRING name, STRING db)

          new xdb = redis.db(STRING location, ENUM type, INT connection_timeout, INT connection_ttl, INT command_timeout, INT max_command_retries, BOOL shared_connections, INT max_connections, ENUM protocol, BOOL tls, STRING tls_cafile, STRING tls_capath, STRING tls_certfile, STRING tls_keyfile, STRING tls_sni, STRING user, STRING password, INT sickness_ttl, BOOL ignore_slaves, INT max_cluster_hops)

              VOID xdb.add_server(STRING location, ENUM type)

              VOID xdb.command(STRING name)

              VOID xdb.timeout(INT command_timeout)

              VOID xdb.retries(INT max_command_retries)

              VOID xdb.push(STRING arg)

              VOID xdb.execute(BOOL master)

              BOOL xdb.replied()

              BOOL xdb.reply_is_error()

              BOOL xdb.reply_is_nil()

              BOOL xdb.reply_is_status()

              BOOL xdb.reply_is_integer()

              BOOL xdb.reply_is_boolean()

              BOOL xdb.reply_is_double()

              BOOL xdb.reply_is_string()

              BOOL xdb.reply_is_array()

              STRING xdb.get_reply()

              STRING xdb.get_error_reply()

              STRING xdb.get_status_reply()

              INT xdb.get_integer_reply()

              BOOL xdb.get_boolean_reply()

              REAL xdb.get_double_reply()

              STRING xdb.get_string_reply()

              INT xdb.get_array_reply_length()

              BOOL xdb.array_reply_is_error(INT index)

              BOOL xdb.array_reply_is_nil(INT index)

              BOOL xdb.array_reply_is_status(INT index)

              BOOL xdb.array_reply_is_integer(INT index)

              BOOL xdb.array_reply_is_boolean(INT index)

              BOOL xdb.array_reply_is_double(INT index)

              BOOL xdb.array_reply_is_string(INT index)

              BOOL xdb.array_reply_is_array(INT index)

              STRING xdb.get_array_reply_value(INT index)

              VOID xdb.free()

              STRING xdb.stats(ENUM format, BOOL stream, STRING prometheus_name_prefix, BOOL prometheus_default_labels, STRING prometheus_extra_labels)

              INT xdb.counter(STRING name)

DESCRIPTION

       VMOD using the synchronous hiredis library API to access Redis servers from VCL.

   VOID subnets(STRING masks="")
       Arguments

              subnets:
                     Comma-delimited  list of weights + subnet masks used to select among servers
                     associated to  a  database  instance  when  executing  commands.   Order  is
                     relevant.  Only  IPv4 addresses are supported. If not provided, value in the
                     VMOD_REDIS_SUBNETS environment variable will be used.

                     This is useful in setups using Redis instances deployed across multiple data
                     centers or availability zones.

       Description
              Using  this  function  is not mandatory. If used, it must be called during vcl_init
              before creating any database instance. If a  database  instance  has  already  been
              created calls to this function are silently ignored.

   VOID sentinels(STRING locations, INT period, INT connection_timeout, INT command_timeout, ENUM
       protocol, BOOL tls, STRING tls_cafile,  STRING  tls_capath,  STRING  tls_certfile,  STRING
       tls_keyfile, STRING tls_sni, STRING password)
          VOID sentinels(
             STRING locations="",
             INT period=60,
             INT connection_timeout=500,
             INT command_timeout=0,
             ENUM {RESP2, RESP3, default} protocol=default,
             BOOL tls=0,
             STRING tls_cafile="",
             STRING tls_capath="",
             STRING tls_certfile="",
             STRING tls_keyfile="",
             STRING tls_sni="",
             STRING password=""
          )

       Arguments

              locations:
                     Comma-delimited list of Redis Sentinel servers. Only host (IP or DNS name) +
                     port format is allowed. If not provided, value in  the  VMOD_REDIS_SENTINELS
                     environment variable will be used.

                     This is useful in setups using non-clustered Redis instances in order to (1)
                     keep roles (i.e. master / slave)  updated;  and  (2)  decrease  priority  of
                     unreachable  servers when creating execution plans. This is not designed for
                     auto-discovery of Redis Servers.

              period: how frequently (seconds) Redis Sentinel periodical checks are  executed  (0
              means  disabling  periodical checks). Beware (1) proactive checks are also executed
              anytime the VCL state is changed to warm;  and  (2)  Sentinel  Pub/Sub  events  are
              listened and processed even when periodical checks are disabled.

              connection_timeout:  connection  timeout  (milliseconds; 0 means no timeout) to the
              Redis Sentinel servers.

              command_timeout: command timeout (milliseconds; 0 means no timeout) when  executing
              Redis Sentinel commands.

              protocol:  protocol  to  be  used  when  talking  to Redis Sentinel servers. Beware
              switching from RESP2 to RESP3 is only possible since  Redis  6.0  and  it  uses  an
              additional  HELLO  command when creating new Redis Sentinel connections. Be careful
              RESP3 support is only available since hiredis 0.15.0.

              tsl: if enabled, TLS will be used when establishing connections.

              tls_cafile: if not empty, this CA certificate file  will  be  used  to  verify  TLS
              connections.

              tls_capath:   if  not  empty,  this  will  be  the  directory  storing  trusted  CA
              certificates used to verify TLS connections. If neither tls_cafile  nor  tls_capath
              are specified, the default system-wide trusted root certs configuration will apply.

              tls_certfile:  if not empty, this certificate file will be used to authenticate TLS
              connections.

              tls_keyfile: if not empty, this private key file will be used to  authenticate  TLS
              connections.

              tls_sni:  if  not  empty,  this server name indication (i.e. SNI) will be used when
              establishing TLS connections.

              password: if not empty, requests for authentication using the AUTH command will  be
              submitted when creating new Redis Sentinel connections.  This password will be used
              for all Redis Sentinel servers.

       Description
              Using this function is not mandatory.

   VOID use(STRING db)
       Arguments
              db: VCL name of the database instance.

       Description
              Sets the current database instance to be  used  by  proxied  methods  (if  none  is
              specified with their db argument).

   VOID add_server(STRING location, ENUM type, STRING db)
          VOID add_server(
             STRING location,
             ENUM {master, slave, auto, cluster} type,
             STRING db=""
          )

       Description
              Proxied version of .add_server().

   VOID command(STRING name, STRING db="")
       Description
              Proxied version of .command().

   VOID timeout(INT command_timeout, STRING db="")
       Description
              Proxied version of .timeout().

   VOID retries(INT max_command_retries, STRING db="")
       Description
              Proxied version of .retries().

   VOID push(STRING arg, STRING db="")
       Description
              Proxied version of .push().

   VOID execute(BOOL master=1, STRING db="")
       Description
              Proxied version of .execute().

   BOOL replied(STRING db="")
       Description
              Proxied version of .replied().

   BOOL reply_is_error(STRING db="")
       Description
              Proxied version of .reply_is_error().

   BOOL reply_is_nil(STRING db="")
       Description
              Proxied version of .reply_is_nil().

   BOOL reply_is_status(STRING db="")
       Description
              Proxied version of .reply_is_status().

   BOOL reply_is_integer(STRING db="")
       Description
              Proxied version of .reply_is_integer().

   BOOL reply_is_boolean(STRING db="")
       Description
              Proxied version of .reply_is_boolean().

   BOOL reply_is_double(STRING db="")
       Description
              Proxied version of .reply_is_double().

   BOOL reply_is_string(STRING db="")
       Description
              Proxied version of .reply_is_string().

   BOOL reply_is_array(STRING db="")
       Description
              Proxied version of .reply_is_array().

   STRING get_reply(STRING db="")
       Description
              Proxied version of .get_reply().

   STRING get_error_reply(STRING db="")
       Description
              Proxied version of .get_error_reply().

   STRING get_status_reply(STRING db="")
       Description
              Proxied version of .get_status_reply().

   INT get_integer_reply(STRING db="")
       Description
              Proxied version of .get_integer_reply().

   BOOL get_boolean_reply(STRING db="")
       Description
              Proxied version of .get_boolean_reply().

   REAL get_double_reply(STRING db="")
       Description
              Proxied version of .get_double_reply().

   STRING get_string_reply(STRING db="")
       Description
              Proxied version of .get_string_reply().

   INT get_array_reply_length(STRING db="")
       Description
              Proxied version of .get_array_reply_length().

   BOOL array_reply_is_error(INT index, STRING db="")
       Description
              Proxied version of .array_reply_is_error().

   BOOL array_reply_is_nil(INT index, STRING db="")
       Description
              Proxied version of .array_reply_is_nil().

   BOOL array_reply_is_status(INT index, STRING db="")
       Description
              Proxied version of .array_reply_is_status().

   BOOL array_reply_is_integer(INT index, STRING db="")
       Description
              Proxied version of .array_reply_is_integer().

   BOOL array_reply_is_boolean(INT index, STRING db="")
       Description
              Proxied version of .array_reply_is_boolean().

   BOOL array_reply_is_double(INT index, STRING db="")
       Description
              Proxied version of .array_reply_is_double().

   BOOL array_reply_is_string(INT index, STRING db="")
       Description
              Proxied version of .array_reply_is_string().

   BOOL array_reply_is_array(INT index, STRING db="")
       Description
              Proxied version of .array_reply_is_array().

   STRING get_array_reply_value(INT index, STRING db="")
       Description
              Proxied version of .get_array_reply_value().

   VOID free(STRING db="")
       Description
              Proxied version of .free().

   STRING    stats(ENUM    format,    BOOL    stream,    STRING    prometheus_name_prefix,   BOOL
       prometheus_default_labels, STRING prometheus_extra_labels, STRING db)
          STRING stats(
             ENUM {json, prometheus} format=json,
             BOOL stream=0,
             STRING prometheus_name_prefix="vmod_redis_",
             BOOL prometheus_default_labels=1,
             STRING prometheus_extra_labels="",
             STRING db=""
          )

       Description
              Proxied version of .stats().

   INT counter(STRING name, STRING db="")
       Description
              Proxied version of .counter().

   new xdb = redis.db(STRING location, ENUM type, INT connection_timeout, INT connection_ttl, INT
       command_timeout,  INT  max_command_retries,  BOOL shared_connections, INT max_connections,
       ENUM protocol, BOOL tls, STRING tls_cafile, STRING tls_capath, STRING tls_certfile, STRING
       tls_keyfile,  STRING  tls_sni,  STRING  user,  STRING  password,  INT  sickness_ttl,  BOOL
       ignore_slaves, INT max_cluster_hops)
          new xdb = redis.db(
             STRING location="",
             ENUM {master, slave, auto, cluster} type=auto,
             INT connection_timeout=1000,
             INT connection_ttl=0,
             INT command_timeout=0,
             INT max_command_retries=0,
             BOOL shared_connections=1,
             INT max_connections=128,
             ENUM {RESP2, RESP3, default} protocol=default,
             BOOL tls=0,
             STRING tls_cafile="",
             STRING tls_capath="",
             STRING tls_certfile="",
             STRING tls_keyfile="",
             STRING tls_sni="",
             STRING user="",
             STRING password="",
             INT sickness_ttl=60,
             BOOL ignore_slaves=0,
             INT max_cluster_hops=32
          )

       Arguments
              location: Redis connection string. Both host (IP or  DNS  name)  +  port  and  UNIX
              sockets  are  supported.  Only  the  IP + port format is allowed when Redis Cluster
              support is enabled. Do not use DNS names in combination with ``redis.subnets()`` or
              ``redis.sentinels()``.

              type: type of the Redis server referenced by location:

              • The  auto value  enables automatic discovery of the current role of the server on
                bootstrap time using the ROLE command.

              • The cluster value enables Redis Cluster support, automatically discovering  other
                servers in the cluster and their roles on demand using the CLUSTER SLOTS command.

              connection_timeout:  connection  timeout  (milliseconds; 0 means no timeout) to the
              Redis server.

              connection_ttl: TTL (seconds) of Redis connections (0 means no TTL). Once  the  TTL
              of a connection is consumed, the module transparently reestablishes it. See "Client
              timeouts" in http://redis.io/topics/clients for extra information.

              command_timeout: command timeout (milliseconds; 0 means no timeout) when  executing
              a Redis command. It can be overridden during command execution with .timeout().

              max_command_retries:  number  of  retries  to  be  executed  after a failed command
              execution. It can be overridden during command execution with .retries().

              shared_connections: if enabled, Redis connections are not local to  Varnish  worker
              threads, but shared by all threads using one or more pools.

              max_connections:
                     When  shared_connections  is  enabled,  the  VMOD  creates one pool of Redis
                     connections per location and database instance. This option sets the maximum
                     number  of  connections  in  each pool. All Varnish worker threads using the
                     same database instance will share connections in these pools. Pools are  not
                     shared between database instances.

                     Note  that when Redis Cluster support is enabled for a database, each server
                     is the cluster is internally labeled by the VMOD with  its  location  (IP  +
                     port).

                     When  shared_connections  is  disabled,  Redis connections are local to each
                     Varnish worker  thread.  This  option  sets  the  maximum  number  of  Redis
                     connections  per  Varnish  worker  thread.  Each  thread  keeps  up  to  one
                     connection per location and database instance. If more than  one  (database,
                     location)  pair  is  available,  incrementing this limit allows recycling of
                     Redis connections.

                     WARNING: when creating multiple database  instances,  always  use  the  same
                     value  in  all  instances  using  private  connections.  Otherwise  you  may
                     experience inconsistent behavior.

              protocol: protocol to  be  used  when  talking  to  Redis  Server  servers.  Beware
              switching  from  RESP2  to RESP3 is only possible since Redis 6.0 and it affects to
              type conversion rules. Be careful RESP3 support is  only  available  since  hiredis
              0.15.0.

              tsl: if enabled, TLS will be used when establishing connections.

              tls_cafile:  if  not  empty,  this  CA  certificate file will be used to verify TLS
              connections.

              tls_capath:  if  not  empty,  this  will  be  the  directory  storing  trusted   CA
              certificates  used  to verify TLS connections. If neither tls_cafile nor tls_capath
              are specified, the default system-wide trusted root certs configuration will apply.

              tls_certfile: if not empty, this certificate file will be used to authenticate  TLS
              connections.

              tls_keyfile:  if  not empty, this private key file will be used to authenticate TLS
              connections.

              tls_sni: if not empty, this server name indication (i.e. SNI)  will  be  used  when
              establishing TLS connections.

              user:  if  not  empty and a password is provided, requests for authentication using
              the AUTH or HELLO command will include both the user name and  its  password.  That
              enables usage of the Redis ACL system, available since Redis 6.0.

              password: if not empty, requests for authentication using the AUTH or HELLO command
              will be submitted when creating new Redis connections.  This password will be  used
              for  all  Redis servers, including discovered servers when Redis Cluster support is
              enabled.

              sickness_ttl: TTL (seconds) of the  sickness  flag  (0  means  no  sickness  flags)
              associated  to  a Redis server. Once a server is flagged as sick and while the flag
              is not expired the module will lazily drop existing connections to that server  and
              it will try to avoid it as much as possible when creating execution plans. This TTL
              is overridden  when  Redis  Sentinel  servers  are  configured  and  some  Sentinel
              discovers an unreachable server.

              ignore_slaves:  if  enabled,  slave  servers  are  not  considered  when  executing
              commands. In other words, enabling this option implicitly  forces  master  ==  true
              when using the .execute() method.

              max_cluster_hops:  maximum number of redirections (0 means no limit) when executing
              a command and Redis Cluster support has been enabled.

       Description
              Creates a new database instance.

   VOID xdb.add_server(STRING location, ENUM type)
          VOID xdb.add_server(
                STRING location,
                ENUM {master, slave, auto, cluster} type
          )

       Arguments
              location: Redis connection string. Both host (IP or  DNS  name)  +  port  and  UNIX
              sockets are supported. If Redis Cluster support has been enabled only the IP + port
              format is allowed. Do not use DNS names in combination with ``redis.subnets()``  or
              ``redis.sentinels()``.

              type: type of the Redis server referenced by location:

              • The  auto value  enables automatic discovery of the current role of the server on
                bootstrap time using the ROLE command.

              • If Redis Cluster support has been enabled cluster is the only allowed value.

       Description
              Adds an extra Redis server.

              If Redis Cluster support has been enabled other servers in the  cluster  and  their
              roles  are automatically discovered by the VMOD using the CLUSTER SLOTS command. In
              any case, knowing more cluster servers during  startup  increases  the  chances  of
              discover the cluster topology if some server is failing.

   VOID xdb.command(STRING name)
       Arguments
              name: name of the Redis command to be executed.

       Description
              Enqueues  a  Redis  command  (only  the name of the command) for further execution.
              Arguments should be enqueued separately calling one or more times  to  the  .push()
              method.

              On  execution time, EVAL commands are internally replace by EVALSHA commands, which
              fallback to the original EVAL command if the Redis server returns a NOSCRIPT  error
              (see http://redis.io/commands/eval).

   VOID xdb.timeout(INT command_timeout)
       Arguments
              command_timeout: command timeout (milliseconds; 0 means no timeout) to be used when
              executing a specific Redis command.

       Description
              Allows overriding the default command timeout provided when calling .db().

   VOID xdb.retries(INT max_command_retries)
       Arguments
              max_command_retries: number of retries  to  be  executed  after  a  failed  command
              execution.

       Description
              Allows overriding the default number of retries provided when calling .db().

   VOID xdb.push(STRING arg)
       Arguments
              arg: argument of a previously enqueued Redis command.

       Description
              Provides an argument to a previously enqueued Redis command.

   VOID xdb.execute(BOOL master=1)
       Arguments
              master: when enabled slave servers are not considered for execution.

       Return value
              VOID

       Description
              Executes a previously enqueued Redis command.

              When  more  than  one Redis server is available, the destination server is selected
              according with master and with the list of weights +  subnet  masks  provided  when
              calling redis.subnets().

              WARNING:  allowing  execution  of  commands in slave servers (i.e. master == false)
              must be carefully used:

              • When Redis Cluster support  is  disabled,  sending  a  read-write  command  to  a
                read-only slave server will result in an error reply.

              • It's  safe  to  send  read-only  LUA  scripts using EVAL or EVALSHA commands to a
                read-only slave server when Redis Cluster support is disabled. Being a  read-only
                slave server does not block writes in the script cache.

              • When  Redis  Cluster  support is enabled, sending a read-write command to a slave
                server will result in a redirection to the right master  server.   This  kind  of
                redirections  trigger an internal rediscovery of the cluster topology. The client
                side won't notice the redirection, but triggering such an expensive operation  on
                every command is a terrible idea.

              • It's  not  safe  to  send  read-only  LUA  scripts  using ``EVAL`` or ``EVALSHA``
                commands to a slave server when Redis Cluster support is enabled.  Redis  Cluster
                handles  EVAL and EVALSHA1 command as write operations that must be redirected to
                a master server. Therefore, this would result on a  rediscovery  of  the  cluster
                topology  on  every  command execution. The VMOD internally forces master == true
                when Redis Cluster support is enabled and EVAL or EVALSHA command  are  submitted
                in order to avoid this counterintuitive scenario.

   BOOL xdb.replied()
       Return value
              TRUE  if  a  previously executed Redis command using .execute() returned any reply.
              Not returning a reply usually means a failed connection, a connection timeout, etc.

   BOOL xdb.reply_is_error()
       Return value
              TRUE if a previously executed Redis command  using  .execute()  returned  an  error
              reply.

   BOOL xdb.reply_is_nil()
       Return value
              TRUE if a previously executed Redis command using .execute() returned a nil reply.

   BOOL xdb.reply_is_status()
       Return value
              TRUE  if  a  previously  executed  Redis command using .execute() returned a status
              reply.

   BOOL xdb.reply_is_integer()
       Return value
              TRUE if a previously executed Redis command .execute() returned an integer reply.

   BOOL xdb.reply_is_boolean()
       Return value
              TRUE if a previously executed Redis command .execute() returned an boolean reply.

   BOOL xdb.reply_is_double()
       Return value
              TRUE if a previously executed Redis command .execute() returned an double reply.

   BOOL xdb.reply_is_string()
       Return value
              TRUE if a previously  executed  Redis  command  .execute()  returned  a  string  or
              verbatim reply.

   BOOL xdb.reply_is_array()
       Return value
              TRUE if a previously executed Redis command using .execute() returned an array, map
              or set reply.

   STRING xdb.get_reply()
       Return value
              A string representation of the reply of a previously executed Redis  command  using
              .execute().

       Description
              Do not use this function to access to array, map or set replies.

   STRING xdb.get_error_reply()
       Return value
              If  a  previously  executed Redis command using .execute() returned an error reply,
              this function returns a string representation of that reply.

   STRING xdb.get_status_reply()
       Return value
              If a previously executed Redis command using .execute() returned  a  status  reply,
              this function returns a string representation of that reply.

   INT xdb.get_integer_reply()
       Return value
              If  a previously executed Redis command using .execute() returned an integer reply,
              this function returns an integer representation of that reply.

   BOOL xdb.get_boolean_reply()
       Return value
              If a previously executed Redis command using .execute() returned an boolean  reply,
              this function returns an boolean representation of that reply.

   REAL xdb.get_double_reply()
       Return value
              If  a  previously executed Redis command using .execute() returned an double reply,
              this function returns an double representation of that reply.

   STRING xdb.get_string_reply()
       Return value
              If a previously executed Redis  command  using  .execute()  returned  a  string  or
              verbatim reply, this function returns a string representation of that reply.

   INT xdb.get_array_reply_length()
       Return value
              If  a  previously executed Redis command using .execute() returned an array, map or
              set reply, this function returns the number of elements in that reply.

   BOOL xdb.array_reply_is_error(INT index)
       Arguments
              index: index in the array reply.

       Return value
              If a previously executed Redis command using .execute() returned an array,  map  or
              set  reply, this function returns TRUE if the nth element in that reply is an error
              reply (nested responses are not supported).

   BOOL xdb.array_reply_is_nil(INT index)
       Arguments
              index: index in the array reply.

       Return value
              If a previously executed Redis command using .execute() returned an array,  map  or
              set  reply,  this  function  returns TRUE if the nth element in that reply is a nil
              reply (nested responses are not supported).

   BOOL xdb.array_reply_is_status(INT index)
       Arguments
              index: index in the array reply.

       Return value
              If a previously executed Redis command using .execute() returned an array,  map  or
              set  reply, this function returns TRUE if the nth element in that reply is a status
              reply (nested responses are not supported).

   BOOL xdb.array_reply_is_integer(INT index)
       Arguments
              index: index in the array reply.

       Return value
              If a previously executed Redis command using .execute() returned an array,  map  or
              set  reply,  this  function  returns  TRUE  if  the nth element in that reply is an
              integer reply (nested responses are not supported).

   BOOL xdb.array_reply_is_boolean(INT index)
       Arguments
              index: index in the array reply.

       Return value
              If a previously executed Redis command using .execute() returned an array,  map  or
              set  reply,  this  function  returns  TRUE  if  the nth element in that reply is an
              boolean reply (nested responses are not supported).

   BOOL xdb.array_reply_is_double(INT index)
       Arguments
              index: index in the array reply.

       Return value
              If a previously executed Redis command using .execute() returned an array,  map  or
              set reply, this function returns TRUE if the nth element in that reply is an double
              reply (nested responses are not supported).

   BOOL xdb.array_reply_is_string(INT index)
       Arguments
              index: index in the array reply.

       Return value
              If a previously executed Redis command using .execute() returned an array,  map  or
              set  reply, this function returns TRUE if the nth element in that reply is a string
              or verbatim reply (nested responses are not supported).

   BOOL xdb.array_reply_is_array(INT index)
       Arguments
              index: index in the array reply.

       Return value
              If a previously executed Redis command using .execute() returned an array,  map  or
              set reply, this function returns TRUE if the nth element in that reply is an array,
              map or set reply (nested responses are not supported).

   STRING xdb.get_array_reply_value(INT index)
       Arguments
              index: index in the array reply.

       Return value
              If a previously executed Redis command using .execute() returned an array,  map  or
              set reply, this function returns a string representation of the nth element in that
              reply (nested responses are not supported).

   VOID xdb.free()
       Description
              Frees memory internally used by Redis commands an replies. It's recommended to  use
              this function, but if not called this will be handled automatically during the next
              call to .command() using the same object.

   STRING   xdb.stats(ENUM   format,   BOOL   stream,   STRING    prometheus_name_prefix,    BOOL
       prometheus_default_labels, STRING prometheus_extra_labels)
          STRING xdb.stats(
                ENUM {json, prometheus} format=json,
                BOOL stream=0,
                STRING prometheus_name_prefix="vmod_redis_",
                BOOL prometheus_default_labels=1,
                STRING prometheus_extra_labels=""
          )

       Arguments
              format: format of the output string.

              stream: if enabled, the response object will be streamed as a synthetic response.

              prometheus_name_prefix:  prefix  to  be  used in all Prometheus metric names.  It's
              used as a raw value; no validations or transformations at all.

              prometheus_default_labels: if enabled, some default Prometheus labels will be added
              to all stats.

              prometheus_extra_labels:  extra  Prometheus  labels to be added to all stats.  It's
              used as a raw value; no validations or transformations at all.

       Description
              Returns internal stats represented as a string.

              If called during vcl_synth or vcl_backend_error with the stream  argument  enabled,
              this function will return an empty string and behave as a call to the synthetic VCL
              function with the response object as input.  This  highly  reduces  the  amount  of
              required workspace memory.

   INT xdb.counter(STRING name)
       Arguments
              name: name of the counter.

       Description
              Returns internal counter.

COPYRIGHT

          Copyright (c) 2014-2022 Carlos Abalde <carlos.abalde@gmail.com>

          You're free to use and distribute this under terms in the
          LICENSE file.

                                                                                    VMOD_REDIS(3)