How to Speed up WordPress with Redis Caching | Redis Optimizador

How to Speed up WordPress with Redis Caching

ANH TRANDECEMBER 28, 2018GUIDEHome / Blog / Guide / How to Speed up WordPress with Redis Caching

How to speed up WordPress using Redis cache is such a simple thing. Redis is an in-memory database which can be used as a data store or cache. Redis presents itself as an ideal solution to speeding up WordPress and any other software which supports Redis cache. In this article, we’re going to show you how to set up a WordPress caching with Redis on a Linux VPS.

How to Speed up WordPress with Redis Caching

1. Installing Redis on Linux VPS

We suppose that WordPress has been installed already on your system, so this step will be skipped.

It’s simple to install Redis. If you’re using a Ubuntu VPS, run this command to install Redis:

apt-get install redis-server

If you’re using a CentOS VPS, you can use the following command to install Redis:

yum install redis

Make sure you activated repo EPEL (Extra Packages for Enterprise Linux) on your server.

Start and activate Redis on system boot.

systemctl start redis.service
systemctl enable redis.service

2. Installing Redis PHP Extension on Linux VPS

In order to use Redis as an object cache for your WordPress site, you need to install Redis PHP extension. It will allow WordPress to contact the Redis key-value store.

Run this command on Ubuntu:

apt-get install php-redis

On CentOS, run the following command:

yum install php-pecl-redis

3. Installing Redis Caching Plugin in WordPress

Log in to your WordPress dashboard and navigate to Plugins → Add new. Search for Redis and install Redis Object Cache plugin from the list. When the installation finishes, navigate to Plugins and activate the Redis Object Cache.Redis Object Cache

Author(s): Till Krüss

Current Version: 1.4.3

Last Updated: May 7, 2019

redis-cache.1.4.3.zip92%Ratings50,000+InstallsWP 3.3+Requires

Then navigate to Settings → Redis and click on Enable Object Cache to enable the object caching in WordPress. The default configurations should work out of the box with the default Redis listening address being and the default listening port being 6379.

4. Verify Redis Caching on WordPress

To check whether the WordPress caching works properly with Redis, you can connect to your server via SSH and run the following command:

redis-cli monitor

By using the Redis monitor, you will be likely to see all the requests processed by the Redis server which will enable you to understand what is happening to the database. The output should be similar to the following:

# redis-cli monitor
1510415208.863435 [0] "PING"
1510415208.865491 [0] "GET" "wp_:default:is_blog_installed"
1510415208.870259 [0] "GET" "wp_:options:notoptions"
1510415208.870433 [0] "GET" "wp_:options:alloptions"
1510415208.871197 [0] "GET" "wp_:site-options:1:notoptions"
1510415208.875126 [0] "GET" "wp_:options:uninstall_plugins"
1510415208.882241 [0] "GET" "wp_:wordfence:alloptions"
1510415208.913368 [0] "GET" "wp_:site-options:1:notoptions"
1510415208.913547 [0] "GET" "wp_:site-options:1:notoptions"
1510415208.916283 [0] "GET" "wp_:site-options:1:notoptions"
1510415208.916434 [0] "GET" "wp_:site-options:1:notoptions"
1510415208.947299 [0] "GET" "wp_:site-options:1:notoptions"
1510415208.947480 [0] "GET" "wp_:options:can_compress_scripts"
1510415208.947637 [0] "GET" "wp_:site-options:1:notoptions"
1510415208.954565 [0] "GET" "wp_:posts:last_changed"

That means Redis is working for your WordPress website. From now on, whenever you get option or post meta, WordPress will check from the Redis cache first. If it doesn’t find what it needs, then it will make a database call. So it reduces the load on your database quite a lot.

Cambio de password de Administrador por RDP de un Window Server 2012 RD

Changing a server’s root or Administrator password

How Do I change my server’s root and admin passwords?

Your server operating system will have a main user that has access to all administrative functions on the server. These passwords can be changed at any time. Depending on the operating system, the process is slightly different.

Step 1

Use Remote desktop to log into your server with the username of Administrator and your Administrator Operating System Password.


Step 2

Once you are connected to your server and logged in as Administrator, click [Control]+[Alt]+[End] on your keyboard to open your security pop up box.

Step 3

Click the button marked Change Password.

Change Password

Step 4

Enter your current password, then enter and confirm your new password in the text boxes provided.

Click on the arrow button to confirm the change.

New Password

Step 5

API WordPress URL con Jetpack

Sitios en WordPress con Jetpack que estén dentro de un directorio se debe obtener los posts del API con la siguiente URL:

donde /subdirectorio/post se reemplaza por ::subdirectorio/post

HOW TO INSTALL PURE-FTPD ON CENTOS 6.4 | Instalar Pure-FTP en Centos6


This article teaches you how to install free ftp server Pure-FTPd on CentOS 6 and how to configure and use it so you can access your server via ftp connection using your favorite ftp client (e.g:FileZilla). The main reason why I post this article is because a friend of mine asked me why couldn’t he access his server using FileZilla. The answer is simple, that’s because he didn’t install any ftp server on his VPS. FileZilla is an ftp server installed in client computer while the VPS is not accessible via FTP without any FTP server installed. Yet, CentOS is not coming with FTP server installed by default and even if by any chance you found it installed, you still have to configure it.


Pure-FTPd is a free (BSD), secure, production-quality and standard-conformant FTP server. It doesn’t provide useless bells and whistles, but focuses on efficiency and ease of use. It provides simple answers to common needs, plus unique useful features for personal users as well as hosting providers.

Why Pure-FTPd?

Because it is actively supported, and it was always designed with security in mind, and the code is always re-audited as new kind of vulnerabilities are discussed.

Are there any other alternatives?

Yes there are. Try Pro-FTPd and vsftpd (how to install vsftpd).


The guide is below. But first, read some prerequisites:


  1. A Linux server running CentOS 6. In this guide I use CentOS 6.4 x64 by DigitalOcean.
  2. You better firstly setup LAMP or LNMP on it.
  3. You’ll also need an FTP client like FileZilla installed on your computer. This is for testing purpose (and you’ll really need this once you build your site)
  4. A skill to use SSH and basic Unix commands (I’m sure you have this already).
  5. About 15 minutes of your time


Step 1 – Login to your server and follow my previous guide about Basic setup for CentOS before you build a live web server. You may and may not follow that tutorial but if you followed, it will give you some basic security tweak to your server.

Before you proceed to the next steps, it is better to explain that all commands in this tutorial are written without the “sudo” prefix. However if you disabled root login and you logged in using another username with root privilege, you can add the “sudo” prefix all by your self. Alternatively you can simply type su, hit Enter and type in your password twice to switch login as root.


You may also need to type this command to go to the root directory:

cd ~

Step 2 – Pure-FTPd is not available by default in CentOS and you have to grab it from another repository. You have to enable the RPMforge and EPEL repositories on our CentOS. So go ahead add the repo:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*


rpm --import


cd /tmp
rpm -ivh rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

However If the above link doesn’t work anymore, you can find the current version of rpmforge-release here:

This repo will also give you more benefit:

rpm --import


rpm -ivh epel-release-6-8.noarch.rpm

next, update yum:

yum update

Each time yum asks you to confirm, simply type Y then hit Enter.

Step 3 – Now install Pure-FTPd via yum using this command:

yum install pure-ftpd


yum install pureftpd


Step 1 – Go to Pure-FTPd config folder:

cd /etc/pure-ftpd/

Step 2 – Next, edit the config file "pure-ftpd.conf": (in this example I use Nano editor).

nano -w pure-ftpd.conf

Step 3 – Once Nano editor appears with pure-ftpd.conf file ready for editing, now make adjustment to several lines as below:

3.1. Look for #UnixAuthentication and uncomment that line (remove the # symbol):


3.2. Then change No in VerboseLog to yes.


3.3. Uncomment the PureDB line:


3.4. Uncomment the CreateHomeDir line


Step 4 – Now create ftp user or aka virtual user used to login to your server. And the command syntax is:

pure-pw useradd ftpuser -u user -g group -d /var/www/


  1. ftpuser is username you can use it to login to your server via ftp.
  2. user is a Unix user. If you didn’t created one yet, you can also use root.
  3. group is a Unix group. If you didn’t created one yet, you can also use root.
  4. /var/www/ is default document root folder of your site. This is where the ftp user will have access to once logged in.

Obviously you have to change those parts to suite your own. In my example is:

pure-pw useradd servermom -u sawiyati -g sawiyati -d /var/www/

Once hit Enter, you’ll then be asked to define new password for the user. Enter it twice for confirmation.

Step 5 – Finally, issue this command:

pure-pw mkdb

screenshot for step 4 and 5:



Step 1 – Once you’ve done making some adjustments to pure-ftpd configuration, now you better firstly restart the ftp service:

service pure-ftpd restart


restart ftp

Don’t panic if you see [FAILED] message in when the system tried to stop pure-ftpd. It happens because pure-ftpd service is not yet started. The point here is the [OK] message when starting.

Step 2 – Now open up your favorite ftp client like FileZilla then enter the detail:

  • Host : Enter your server’s IP or hostname (if you’ve added A record to it in your DNS).
  • Username : Use what you defined in step 4 section B above.
  • Password : Use what you defined in step 5 section B above.
  • Port : use Port 21

Once done hit the Connect button. screenshot:

using filezilla

Step 3 – You’ll finally see the “Status:Directory listing successful” message indicating you are now logged in.

filezilla ftp

That’s it. I’m sure you knew what you have to do from here. Enjoy..


Issue this command to make sure pure-ftpd service will be automatically started every time your server reboot:

chkconfig --levels 235 pure-ftpd on

Also, if you created other virtual users (and passwords) – see section B step 4 – make sure you issue this command:

pure-pw mkdb

You have to issue that command every time you add a virtual user.

Usar Let’s Encrypt con CPanel WHM

Para añadir la funcionalidad de SSL gratuito que ofrece Let’s Encrypt a través de CPanel WHM se debe hacer lo siguiente:


To install the plugin, perform the following steps:

  1. Log in to the command line via SSH as the root user.
  2. Run the following command:

To disable and uninstall the Let’s Encrypt plugin, run the /usr/local/cpanel/scripts/uninstall_lets_encrypt_autossl_provider command.

Luego, dentro del panel del WHM en AutoSSL se activa «Let’s Encrypt» y así cada cuenta nueva creada tendrá su certificado SSL en forma gratuita.


Icecast 2 con SSL

Primero que nada:

# yum groupinstall «Development Tools»
# yum install -y curl-devel libtheora-devel libvorbis-devel libxslt-devel speex-devel libxslt

Bajar ultima version
# wget

# tar xf icecast-2.3.3.tar.gz
# cd icecast-2.3.3


# ./configure –prefix=/opt/icecast/2.3.3  # editar a gusto el destino
# make
# make install

Configuracion: icecast.xml

<!– location and admin are two arbitrary strings that are e.g. visible
on the server info page of the icecast web interface
(server_version.xsl). –>

Especially for inexperienced users:
Start out by ONLY changing all passwords and restarting Icecast.
For detailed setup instructions please refer to the documentation.
It’s also available here:

<!– If enabled, this will provide a burst of data when a client
first connects, thereby significantly reducing the startup
time for listeners that do substantial buffering. However,
it also significantly increases latency between the source
client and listening client. For low-latency setups, you
might want to disable this. –>
<!– same as burst-on-connect, but this allows for being more
specific on how much to burst. Most people won’t need to
change from the default 64k. Applies to all mountpoints –>

<!– Sources log in with username ‘source’ –>
<!– Relays log in with username ‘relay’ –>

<!– Admin logs in with the username given below –>

<!– set the mountpoint for a shoutcast source to use, the default if not
specified is /stream but you can change it here if an alternative is
wanted or an extension is required

<!– Uncomment this if you want directory listings –>

<!– This is the hostname other people will use to connect to your server.
It affects mainly the urls generated by Icecast for playlists and yp
listings. You MUST configure it properly for YP listings to work!

<!– You may have multiple <listener> elements –>
<!– <bind-address></bind-address> –>
<!– <shoutcast-mount>/stream</shoutcast-mount> –>


<!– Global header settings
Headers defined here will be returned for every HTTP request to Icecast.

The ACAO header makes Icecast public content/API by default
This will make streams easier embeddable (some HTML5 functionality needs it).
Also it allows direct access to e.g. /status-json.xsl from other sites.
If you don’t want this, comment out the following line or read up on CORS.
<header name=»Access-Control-Allow-Origin» value=»*» />

<!– Relaying
You don’t need this if you only have one server.
Please refer to the config for a detailed explanation.

<!– setting this makes all relays on-demand unless overridden, this is
useful for master relays which do not have <relay> definitions here.
The default is 0 –>



<!– Mountpoints
Only define <mount> sections if you want to use advanced options,
like alternative usernames or passwords

<!– Default settings for all mounts that don’t have a specific <mount type=»normal»>.
<mount type=»default»>
<authentication type=»url»>
<option name=»mount_add» value=»»/>
<header name=»foo» value=»bar» />

<!– Normal mounts –>
<mount type=»normal»>


<authentication type=»htpasswd»>
<option name=»filename» value=»myauth»/>
<option name=»allow_duplicate_users» value=»0″/>
<header name=»Access-Control-Allow-Origin» value=»» />
<header name=»baz» value=»quux» />

<mount type=»normal»>
<authentication type=»url»>
<option name=»mount_add» value=»»/>
<option name=»mount_remove» value=»»/>
<option name=»listener_add» value=»»/>
<option name=»listener_remove» value=»»/>
<option name=»headers» value=»x-pragma,x-token»/>
<option name=»header_prefix» value=»ClientHeader.»/>


<!– basedir is only used if chroot is enabled –>

<!– Note that if <chroot> is turned on below, these paths must both
be relative to the new root, not the original root –>
<!– <pidfile>/home/arcast/icecast/share/icecast/</pidfile> –>

<!– Aliases: treat requests for ‘source’ path as being for ‘dest’ path
May be made specific to a port or bound address using the «port»
and «bind-address» attributes.
<alias source=»/foo» destination=»/bar»/>
<!– Aliases: can also be used for simple redirections as well,
this example will redirect all requests for http://server:port/ to
the status page
<alias source=»/» destination=»/status.xsl»/>
<!– The certificate file needs to contain both public and private part.
Both should be PEM encoded.–>


<!– <playlistlog>playlist.log</playlistlog> –>
<loglevel>3</loglevel> <!– 4 Debug, 3 Info, 2 Warn, 1 Error –>
<logsize>10000</logsize> <!– Max size of a logfile –>
<!– If logarchive is enabled (1), then when logsize is reached
the logfile will be moved to [error|access|playlist].log.DATESTAMP,
otherwise it will be moved to [error|access|playlist].log.old.
Default is non-archive mode (i.e. overwrite)
<!– <logarchive>1</logarchive> –>


Dentro del config, está la sección de SSL, donde le indivamos donde va a estar el certificado.
Se debe incluir, la KEY y el CERT para que pueda validarlo.

Por otro lado, otro detalle a prestar atencion, es a que los directorios que seleccionemos dentro de la configuración deben existir todos y estar creados. (importante)

Otra particularidad es que se selecciona un puerto para el HTTP y otro para el HTTPs

Ejecutamos con:
# ./icecast -b -c /ruta/al/icecast.xml






Comandos MUY UTILES para la consola

Empecé a editar este artículo hace varios meses. Finalmente me aburrí de recopilar comandos y lo publico tal como está. Si recuerdo algunos que se me hayan pasado por alto, o descubro nuevos, los iré agregando. Seguramente falten muchos que uso periódicamente y no me dí cuenta de agregar.

Quisiera compartir una lista de comandos útiles que suelo utilizar día a día, sin una organización u orden aparente. Son muchos de los comandos que todo SysAdmin conoce o está familiarizado. Tal vez muchos resulten básicos (por no usar otro adjetivo) para un SysAdmin, sin embargo pueden no serlo para alguien que recién comienza a interactuar con una shell.


  • Borrar el contenido de un archivo
  • Volver al directorio anterior
  • Cambiar rápidamente al directorio $HOME
  • Ver un log «en vivo y en directo»
  • Listar todos los puertos TDP y UDP abiertos
  • Listar todos los sockets Unix abiertos
  • Ejecutar un comando sin que quede registrado en el historial de Bash
  • Ejecutar un comando sólo si el anterior finaliza correctamente
  • Indicarle a un utilitario que deje de interpretar opciones
  • Crear varios niveles de directorio en un único comando
  • Crear y editar un archivo con cat
  • Listar todos los archivos abiertos
  • Omitir a grep en la salida de ps
  • Listar los archivos modificados en las últimas 24 horas
  • Listar sólo las conexiones establecidas
  • Identificar el proceso asociado a una conexión establecida
  • Obtener estadísticas de red
  • Remover la ruta en un nombre de archivo
  • Mandar un proceso a segundo plano
  • Terminar un proceso en segundo plano
  • Cómo saber el pid de la sesión actual
  • Contar filas repetidas
  • Buscar archivos por contenido
  • Buscar archivos por nombre
  • Conocer el formato de un filesystem
  • Invertir el orden de las líneas de un archivo
  • Invertir un string
  • Buscar ayuda
  • Imprimir un árbol de procesos
  • Volcar un archivo binario por salida estándar
  • Responder «yes» a cualquier comando interactivo
  • Realizar cálculos matemáticos por línea de comandos
  • Obtener rápidamente nuestro id de usuario
  • Matar procesos por nombre
  • Conectar con un pipe la stderr

Al grano.

Borrar el contenido de un archivo

Una forma rápida de vaciar un archivo es redirigir una salida nula:

> archivo

Volver al directorio anterior

No confundir con ir al directorio padre cd ... Funciona como la flecha izquierda de los navegadores:

cd -

Cambiar rápidamente al directorio $HOME


Ver un log «en vivo y en directo»

tail -f /var/log/syslog

Listar todos los puertos TDP y UDP abiertos

netstat -tulpn

Listar todos los sockets Unix abiertos

netstat -xlpn

Ejecutar un comando sin que quede registrado en el historial de Bash

Práctico cuando necesitamos incluir una contraseña como parte de un comando, para no divulgarla en el historial. Sólo es necesario dejar un espacio en blanco delante del comando:


Ejecutar un comando sólo si el anterior finaliza correctamente

apt-get update && apt-get upgrade

Indicarle a un utilitario que deje de interpretar opciones

Sólo se deben utilizar dos guiones del medio. Por ejemplo quiero buscar dos guiones del medio consecutivos en cierto contenido utilizando grep:

root@debian:~# history | grep '--'
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.

Aunque utilice comillas, grep interpreta el guión del medio como delimitador de una opción. La forma correcta es:

root@debian:~# history | grep -- --
  167  git commit --amend --reset-author
  508  history | grep '--'

En el primer comando, grep interpreta los guiones como opciones, a pesar de que se utilicen comillas, comillas dobles o escapes. En el segundo ejemplo, primero se indica a grep que deje de interpretar opciones y luego se pasa el parámetro sin inconvenientes.

Crear varios niveles de directorio en un único comando

Utilizar al opción -p de mkdir:

mkdir -p /ruta/a/un/directorio/anidado

Crear y editar un archivo con cat

cat > archivo

Para finalizar, presionar Ctrl+D (atajo de teclado para EOFEnd Of File).

Listar todos los archivos abiertos

Una forma rápida para saber qué archivos de log están siendo utilizados por demonios o servicios:

lsof | grep "\.log"

Omitir a grep en la salida de ps

En el artículo Tip: cómo ocultar el proceso grep en la salida de ps compartí este ingenioso truco.

root@hal9000:/usr/home/emi # ps x | grep "ntpd"
1620  -  Ss     0:00.07 /usr/sbin/ntpd -c /etc/ntp.conf -p /var/run/ -f /var/db/ntpd.drift
1682  2  S+     0:00.00 grep ntpd

Simplemente se debe encerrar cualquier letra del patrón de búsqueda entre corchetes:

root@hal9000:/usr/home/emi # ps x | grep "[n]tpd"
1620  -  Ss     0:00.07 /usr/sbin/ntpd -c /etc/ntp.conf -p /var/run/ -f /var/db/ntpd.drift

Listar los archivos modificados en las últimas 24 horas

Otro interesante comando que compartí previamente en el artículo Listar los archivos modificados en las últimas 24 horas:

find . -type f -mtime -1 -exec ls -gGh --full-time '{}' \; | cut -d ' ' -f 4,5,7

Listar sólo las conexiones establecidas

netstat -tupn | grep EST

Identificar el proceso asociado a una conexión establecida

Información útil que provee netstat:

netstat -tupnee

Obtener estadísticas de red

netstat -s

Remover la ruta en un nombre de archivo

El utilitario basename remueve el directorio y sufijo en un nombre de archivo. Muy útil al momento de crear scripts:

root@linuxito:/usr/local/nginx# pwd
root@linuxito:/usr/local/nginx# basename $(pwd)

Mandar un proceso a segundo plano

Si hemos lanzado un proceso largo en primer plano, y deseamos que continúe ejecutando en segundo plano (como si lo hubiésemos lanzado con &), sólo es necesario presionar Ctrl+Z para suspenderlo y luego bgpara que continúe en background.

emi@hal9000:~ % ping >/dev/null 
emi@hal9000:~ % jobs
[1]  + Suspended                     ping > /dev/null
emi@hal9000:~ % bg 1
[1]    ping > /dev/null &
emi@hal9000:~ % jobs
[1]    Running                       ping > /dev/null

Terminar un proceso en segundo plano

Si hemos lanzado un proceso en segundo plano y deseamos terminarlo abruptamente (kill), no es necesario conocer su PID. Es posible matarlo indicando su número de trabajo:

emi@hal9000:~ % jobs
[1]    Running                       ping > /dev/null
emi@hal9000:~ % kill %1
emi@hal9000:~ % jobs
[1]    Terminated                    ping > /dev/null

Cómo saber el pid de la sesión actual

En Bash, la variable $ expande al PID de la sesión actual (instancia de Bash en ejecución):

echo $$

Contar filas repetidas

Algo como lo que haría un administrador de bases de datos al usar COUNT(*) en conjunto con GROUP BY. Contar la cantidad de repeticiones de una misma fila utilizando sort y uniq:

[COMANDO] | sort | uniq -c | sort -nr

Buscar archivos por contenido

Una vez más grep al rescate, por lejos mi comando favorito:

grep -r 'ssl' /etc/apache2/*

Este comando busca recursivamente la palabra «ssl» dentro del contenido de todos los archivos dentro del directorio /etc/apache2/.

Buscar archivos por nombre

Con la opción -iname se ignoran mayúsculas/minúsculas (case) en los nombres de archivo. Utilizar asteriscos para buscar patrones:

find /etc/apache2/ -iname "*.conf"

Conocer el formato de un filesystem

Pasar el nombre de dispositivo como parámetro a file:

root@devuan:~# file -s /dev/sda1 
/dev/sda1: Linux rev 1.0 ext4 filesystem data, UUID=bed6a1f2-ec59-4913-9af6-0e2f66ac2954, volume name "ROOT" (needs journal recovery) (extents) (large files) (huge files)

Invertir el orden de las líneas de un archivo

El comando tac es cat pero concatena e imprime en orden reverso:

root@devuan:~# cat /etc/shells 
# /etc/shells: valid login shells
root@devuan:~# tac /etc/shells
# /etc/shells: valid login shells

Invertir un string

El comando rev permite invertir un string (transformar «hola» en «aloh»). Opera sobre cada línea de un archivo de manera individual:

root@devuan:~# rev /etc/shells
sllehs nigol dilav :sllehs/cte/ #

Buscar ayuda

Para buscar ayuda en páginas de manual (por ejemplo, si no conocemos la página de manual que debemos consultar) recurrir a apropos:


Imprimir un árbol de procesos

Hay varias formas de hacerlo:

ps -ejH
ps axjf

Volcar un archivo binario por salida estándar

hexdump -C ARCHIVO

Responder «yes» a cualquier comando interactivo



Yes imprime el caracter ‘y’ forever, no como el pájaro de Homero.

Realizar cálculos matemáticos por línea de comandos

La herramienta bc se puede utilizar como calculadora de línea de comandos:

emi@hal9000:~ % echo "1024*1024" | bc

Obtener rápidamente nuestro id de usuario

Y de todos los grupos a los que pertenecemos:

emi@hal9000:~ % id
uid=1001(emi) gid=0(wheel) groups=0(wheel),44(video),920(vboxusers)

Matar procesos por nombre

Matar o enviar cualquier señal por nombre de ejecutable en vez de PID:


Conectar con un pipe la stderr

Si necesitamos conectar tanto la salida estandar (stdout) como la salida de errores (stderr) de un proceso, a la entrada estandar (stdin) de otro, debemos agregar ampersand luego del pipe:


Actualizado: noviembre de 2017.