home | help
VMOD_REDIS(3)		    Library Functions Manual		   VMOD_REDIS(3)

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)

	VOID easy_execute(STRING command, [STRING cmd_arg1], [STRING cmd_arg2], [STRING cmd_arg3], [STRING cmd_arg4], [STRING cmd_arg5], [STRING cmd_arg6], [STRING cmd_arg7], [STRING cmd_arg8], [STRING cmd_arg9], [STRING cmd_arg10], [STRING cmd_arg11], [STRING cmd_arg12], [STRING cmd_arg13], [STRING cmd_arg14], [STRING cmd_arg15], [STRING cmd_arg16], [INT timeout], [INT retries], 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)

	    VOID xdb.easy_execute(STRING command, [STRING cmd_arg1], [STRING cmd_arg2], [STRING cmd_arg3], [STRING cmd_arg4], [STRING cmd_arg5], [STRING cmd_arg6], [STRING cmd_arg7], [STRING cmd_arg8], [STRING cmd_arg9], [STRING cmd_arg10], [STRING cmd_arg11], [STRING cmd_arg12], [STRING cmd_arg13], [STRING cmd_arg14], [STRING cmd_arg15], [STRING cmd_arg16], [INT timeout], [INT retries], 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 execut-
		   ing 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 com-
     mand_timeout,  ENUM  protocol, BOOL tls, STRING tls_cafile, STRING tls_cap-
     ath, STRING tls_certfile, STRING tls_keyfile, STRING tls_sni, STRING  pass-
     word)
	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 avail-
	    able 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 au-
	    thenticate 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  connec-
	    tions.  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().

   VOID  easy_execute(STRING  command,	[STRING  cmd_arg1],  [STRING  cmd_arg2],
     [STRING cmd_arg3], [STRING cmd_arg4], [STRING cmd_arg5], [STRING cmd_arg6],
     [STRING  cmd_arg7],   [STRING   cmd_arg8],   [STRING   cmd_arg9],	 [STRING
     cmd_arg10],  [STRING  cmd_arg11],	[STRING  cmd_arg12], [STRING cmd_arg13],
     [STRING cmd_arg14], [STRING cmd_arg15], [STRING cmd_arg16], [INT  timeout],
     [INT retries], BOOL master, STRING db)
	VOID easy_execute(
	   STRING command,
	   [STRING cmd_arg1],
	   [STRING cmd_arg2],
	   [STRING cmd_arg3],
	   [STRING cmd_arg4],
	   [STRING cmd_arg5],
	   [STRING cmd_arg6],
	   [STRING cmd_arg7],
	   [STRING cmd_arg8],
	   [STRING cmd_arg9],
	   [STRING cmd_arg10],
	   [STRING cmd_arg11],
	   [STRING cmd_arg12],
	   [STRING cmd_arg13],
	   [STRING cmd_arg14],
	   [STRING cmd_arg15],
	   [STRING cmd_arg16],
	   [INT timeout],
	   [INT retries],
	   BOOL master=1,
	   STRING db=""
	)

     Description
	    Proxied version of .easy_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  ig-
     nore_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 com-
	    bination 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/top-
	    ics/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  data-
		   base, 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  connec-
		   tions. 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 sup-
	    port 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 au-
	    thenticate 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 authen-
	    tication 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 connec-
	    tions.  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 sick-
	    ness 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 over-
	    ridden when Redis Sentinel servers are configured and some	Sentinel
	    discovers an unreachable server.

	    ignore_slaves: if enabled, slave servers are not considered when ex-
	    ecuting  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 al-
	      lowed value.

     Description
	    Adds an extra Redis server.

	    If Redis Cluster support has been enabled other servers in the clus-
	    ter 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 topol-
	    ogy 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/com-
	    mands/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 call-
	    ing .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. mas-
	    ter == false) must be carefully used:

	    * When Redis Cluster support is disabled, sending a read-write  com-
	      mand 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 com-
	      mands  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 com-
	      mand to a slave server will result in a redirection to  the  right
	      master  server.  This kind of redirections trigger an internal re-
	      discovery 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 counterintu-
	      itive scenario.

   VOID xdb.easy_execute(STRING command, [STRING cmd_arg1],  [STRING  cmd_arg2],
     [STRING cmd_arg3], [STRING cmd_arg4], [STRING cmd_arg5], [STRING cmd_arg6],
     [STRING   cmd_arg7],   [STRING   cmd_arg8],   [STRING   cmd_arg9],  [STRING
     cmd_arg10], [STRING cmd_arg11],  [STRING  cmd_arg12],  [STRING  cmd_arg13],
     [STRING  cmd_arg14], [STRING cmd_arg15], [STRING cmd_arg16], [INT timeout],
     [INT retries], BOOL master)
	VOID xdb.easy_execute(
	      STRING command,
	      [STRING cmd_arg1],
	      [STRING cmd_arg2],
	      [STRING cmd_arg3],
	      [STRING cmd_arg4],
	      [STRING cmd_arg5],
	      [STRING cmd_arg6],
	      [STRING cmd_arg7],
	      [STRING cmd_arg8],
	      [STRING cmd_arg9],
	      [STRING cmd_arg10],
	      [STRING cmd_arg11],
	      [STRING cmd_arg12],
	      [STRING cmd_arg13],
	      [STRING cmd_arg14],
	      [STRING cmd_arg15],
	      [STRING cmd_arg16],
	      [INT timeout],
	      [INT retries],
	      BOOL master=1
	)

     Arguments
	    The command argument is mandatory, followed with up to 16 arguments,
	    optionally ending with timeout (as passed to .timeout()) and/or  re-
	    tries (as passed to .retries()) and/or master (.execute()).  For ex-
	    ample:   db.easy_command("set",   "foo",  "hello",	retries=3,  mas-
	    ter=true);

     Return value
	    VOID

     Description
	    Equivalent	to  calling,  .command(),  .push()  (possibly	multiple
	    times),  .timeout(), .retries() then finally .execute() using a sin-
	    gle command.

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

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

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

   BOOL xdb.reply_is_status()
     Return value
	    TRUE if a previously executed Redis  command  using  .execute()  re-
	    turned 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() re-
	    turned 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 representa-
	    tion 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  ele-
	    ments 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  ele-
	    ment  in that reply is an error reply (nested responses are not sup-
	    ported).

   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 ele-
	    ment in that reply is a nil reply (nested  responses  are  not  sup-
	    ported).

   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  ele-
	    ment  in that reply is a status reply (nested responses are not sup-
	    ported).

   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 ele-
	    ment 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  ele-
	    ment  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 ele-
	    ment in that reply is an double reply (nested responses are not sup-
	    ported).

   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 ele-
	    ment 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  ele-
	    ment  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 representa-
	    tion of the nth element in that reply (nested responses are not sup-
	    ported).

   VOID xdb.free()
     Description
	    Frees memory internally used by Redis commands an replies. It's rec-
	    ommended to use this function, but if not called this will	be  han-
	    dled 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  syn-
	    thetic 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 la-
	    bels 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  ar-
	    gument 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) Carlos Abalde <carlos.abalde@gmail.com>

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

								   VMOD_REDIS(3)

home | help