Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

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 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	 func-
	      tion 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  pro-
		     vided,  value  in	the  VMOD_REDIS_SENTINELS  environment
		     variable will be used.

		     This is useful in setups using  non-clustered  Redis  in-
		     stances  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).  Be-
	      ware  (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 time-
	      out) 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  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 nei-
	      ther tls_cafile nor tls_capath are specified, the	 default  sys-
	      tem-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().

   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 sick-
       ness_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.sen-
	      tinels()``.

	      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 time-
	      out) 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 in-
		     stance. This option sets the maximum  number  of  connec-
		     tions  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  la-
		     beled 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	(data-
		     base, location)  pair  is	available,  incrementing  this
		     limit allows recycling of Redis connections.

		     WARNING:  when  creating multiple database	instances, al-
		     ways 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 nei-
	      ther tls_cafile nor tls_capath are specified, the	 default  sys-
	      tem-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 au-
	      thentication 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 en-
	      abled.

	      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 implic-
	      itly 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	 ``re-
	      dis.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 clus-
	      ter 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 fur-
	      ther execution. Arguments	should be enqueued separately  calling
	      one or more times	to the .push() method.

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

   VOID	xdb.timeout(INT	command_timeout)
       Arguments
	      command_timeout: command timeout (milliseconds; 0	means no time-
	      out) 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	execu-
	      tion.

       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 sup-
		port 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 in-
		ternal	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 sup-
		port  is enabled. Redis	Cluster	handles	EVAL and EVALSHA1 com-
		mand 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	inter-
		nally  forces master ==	true when Redis	Cluster	support	is en-
		abled and EVAL or EVALSHA command are submitted	 in  order  to
		avoid this counterintuitive 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	 argu-
	      ments,  optionally ending	with timeout (as passed	to .timeout())
	      and/or retries (as passed	to .retries())	and/or	master	(.exe-
	      cute()).	 For  example:	db.easy_command("set", "foo", "hello",
	      retries=3, master=true);

       Return value
	      VOID

       Description
	      Equivalent to calling, .command(),  .push()  (possibly  multiple
	      times),  .timeout(),  .retries() then finally .execute() using a
	      single 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
	      connection, 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  representa-
	      tion 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 representa-
	      tion 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 rep-
	      resentation 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 rep-
	      resentation 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 met-
	      ric  names.   It's used as a raw value; no validations or	trans-
	      formations 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	trans-
	      formations 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)	Carlos Abalde <carlos.abalde@gmail.com>

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

								 VMOD_REDIS(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=vmod_redis&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help