<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tutorial de Redis &#8211; FoxDevelop</title>
	<atom:link href="https://www.foxdevelop.com/es/category/c-es/bliblioteca-de-c/tutorial-de-redis/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.foxdevelop.com</link>
	<description>Estudio Independiente de Desarrollo de Software</description>
	<lastBuildDate>Fri, 14 Aug 2026 09:49:47 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.4</generator>

<image>
	<url>https://www.foxdevelop.com/wp-content/uploads/2026/05/fox-svgrepo-com-1.png</url>
	<title>Tutorial de Redis &#8211; FoxDevelop</title>
	<link>https://www.foxdevelop.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Escribir valor</title>
		<link>https://www.foxdevelop.com/es/2026/08/14/escribir-valor/</link>
					<comments>https://www.foxdevelop.com/es/2026/08/14/escribir-valor/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Fri, 14 Aug 2026 09:49:47 +0000</pubDate>
				<category><![CDATA[Tutorial de Redis]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=8617</guid>

					<description><![CDATA[StackExchange.Redis Set/Get genéricos para configurar y leer valores Espacios de nombres requeridos El siguiente ejemplo usa Set, recibe una clave, un arreglo de bytes y el tiempo de expiración. Notas ...]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">StackExchange.Redis Set/Get genéricos para configurar y leer valores</p>



<ol class="wp-block-list">
<li>La llamada interna <code>IDatabase.StringSet()</code> escribe datos de tipo cadena en Redis</li>



<li><strong>Lógica de serialización</strong>: objeto arbitrario → cadena JSON → arreglo de bytes UTF‑8 almacenado en Redis</li>



<li><strong>Lógica de deserialización</strong>: lectura del arreglo de bytes → cadena JSON → objeto genérico destino</li>



<li>Valor devuelto: <code>true</code> = configuración exitosa, <code>false</code> = configuración fallida</li>
</ol>



<p class="wp-block-paragraph">Espacios de nombres requeridos</p>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-tag">using</span> <span class="hljs-selector-tag">StackExchange</span><span class="hljs-selector-class">.Redis</span>;
<span class="hljs-selector-tag">using</span> <span class="hljs-selector-tag">Newtonsoft</span><span class="hljs-selector-class">.Json</span>;
<span class="hljs-selector-tag">using</span> <span class="hljs-selector-tag">System</span><span class="hljs-selector-class">.Text</span>;</code></span></pre>


<p class="wp-block-paragraph">El siguiente ejemplo usa Set, recibe una clave, un arreglo de bytes y el tiempo de expiración.</p>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment">/// &lt;summary&gt;</span>
<span class="hljs-comment">/// Escribir caché en Redis</span>
<span class="hljs-comment">/// &lt;/summary&gt;</span>
<span class="hljs-comment">/// &lt;param name="key"&gt;Clave de caché&lt;/param&gt;</span>
<span class="hljs-comment">/// &lt;param name="data"&gt;Cualquier objeto&lt;/param&gt;</span>
<span class="hljs-comment">/// &lt;param name="cacheTime"&gt;Duración de expiración 【minutos】&lt;/param&gt;</span>
<span class="hljs-comment">/// &lt;returns&gt;true éxito / false fallo&lt;/returns&gt;</span>
<span class="hljs-keyword">private</span> bool Set(string key, object data, int cacheTime)
{
    <span class="hljs-keyword">if</span> (data == <span class="hljs-keyword">null</span>)
    {
        <span class="hljs-keyword">return</span> <span class="hljs-keyword">false</span>;
    }
    byte&#91;] entryBytes = Serialize(data);
    TimeSpan expiresIn = TimeSpan.FromMinutes(cacheTime);
    <span class="hljs-keyword">return</span> db.StringSet(key, entryBytes, expiresIn);
}

<span class="hljs-comment">/// &lt;summary&gt;</span>
<span class="hljs-comment">/// Serialización de objeto: object → byte&#91;]</span>
<span class="hljs-comment">/// &lt;/summary&gt;</span>
<span class="hljs-keyword">private</span> byte&#91;] Serialize(object data)
{
    string json = JsonConvert.SerializeObject(data);
    <span class="hljs-keyword">return</span> Encoding.UTF8.GetBytes(json);
}

<span class="hljs-comment">/// &lt;summary&gt;</span>
<span class="hljs-comment">/// Leer caché por clave</span>
<span class="hljs-comment">/// &lt;/summary&gt;</span>
<span class="hljs-comment">/// &lt;typeparam name="T"&gt;Tipo objetivo&lt;/typeparam&gt;</span>
<span class="hljs-comment">/// &lt;param name="key"&gt;Clave de caché&lt;/param&gt;</span>
<span class="hljs-comment">/// &lt;returns&gt;devuelve default(T) si el caché no existe&lt;/returns&gt;</span>
<span class="hljs-keyword">public</span> T Get&lt;T&gt;(string key)
{
    RedisValue rValue = db.StringGet(key);
    <span class="hljs-keyword">if</span> (!rValue.HasValue)
    {
        <span class="hljs-keyword">return</span> <span class="hljs-keyword">default</span>(T);
    }
    T result = Deserialize&lt;T&gt;(rValue);
    <span class="hljs-keyword">return</span> result;
}

<span class="hljs-comment">/// &lt;summary&gt;</span>
<span class="hljs-comment">/// Deserialización: byte&#91;] → objeto T</span>
<span class="hljs-comment">/// &lt;/summary&gt;</span>
<span class="hljs-keyword">private</span> T Deserialize&lt;T&gt;(byte&#91;] serializedObject)
{
    <span class="hljs-keyword">if</span> (serializedObject == <span class="hljs-keyword">null</span>)
    {
        <span class="hljs-keyword">return</span> <span class="hljs-keyword">default</span>(T);
    }
    string json = Encoding.UTF8.GetString(serializedObject);
    <span class="hljs-keyword">return</span> JsonConvert.DeserializeObject&lt;T&gt;(json);
}</code></span></pre>


<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h4 class="wp-block-heading">Notas</h4>



<ol class="wp-block-list">
<li><strong>Unidad de tiempo</strong><br>En el código <code>TimeSpan.FromMinutes(cacheTime)</code> significa <strong>el valor ingresado representa 【minutos】</strong><br>Si llamas desde un formulario con <code>Set(key,val,1000)</code>, el caché expirará en <strong>1000 minutos</strong>, no en segundos!</li>
</ol>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">El código anterior del formulario usaba el valor <code>1000</code>, es un error muy común.<br>Si necesitas usar <strong>segundos</strong>, cámbialo por <code>TimeSpan.FromSeconds(cacheTime)</code></p>
</blockquote>



<ol start="2" class="wp-block-list">
<li><strong>Instalación de dependencias</strong><br>Debes instalar ambos paquetes en NuGet:</li>
</ol>



<ul class="wp-block-list">
<li><code>StackExchange.Redis</code></li>



<li><code>Newtonsoft.Json</code></li>
</ul>



<ol start="2" class="wp-block-list">
<li>Formato de almacenamiento<br>Todos los objetos se serializan a binario JSON y se guardan en Redis; lo que ves en el cliente Redis es texto JSON estándar.</li>



<li>Compatibilidad con <code>RedisValue</code><br><code>db.StringGet(key)</code> devuelve <code>RedisValue</code>, admite conversión implícita a <code>byte[]</code>, por lo que se puede pasar directamente a <code>Deserialize&lt;T&gt;</code>.</li>



<li>Recomendación de seguridad para hilos<br><code>IConnectionMultiplexer</code> debe ser un singleton global, no crees una nueva conexión en cada lectura o escritura de Redis.</li>
</ol>



<h4 class="wp-block-heading">Ejemplo de uso</h4>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-comment">// Escribir (expira en 30 minutos)</span>
bool ok = <span class="hljs-built_in">Set</span>(<span class="hljs-string">"user:1001"</span>, <span class="hljs-keyword">new</span> {Id = <span class="hljs-number">1001</span>, Name = <span class="hljs-string">"test"</span>}, <span class="hljs-number">30</span>);

<span class="hljs-comment">// Leer</span>
<span class="hljs-keyword">var</span> user = Get&lt;dynamic&gt;(<span class="hljs-string">"user:1001"</span>);

<span class="hljs-comment">// Ejemplo de lectura de clase de entidad</span>
<span class="hljs-comment">// var model = Get&lt;UserInfo&gt;("user:1001");</span></code></span></pre>


<h4 class="wp-block-heading">Recomendaciones</h4>



<p class="wp-block-paragraph">Extrae estos métodos junto con el código de conexión Redis a una clase helper estática independiente <code>RedisHelper.cs</code>. No los dejes dentro del código del formulario Form para lograr un desacoplamiento de lógica de negocio.<br></p>



<p class="wp-block-paragraph">Escribir valor</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/es/2026/08/14/escribir-valor/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Conectarse a Redis</title>
		<link>https://www.foxdevelop.com/es/2026/08/14/conectarse-a-redis/</link>
					<comments>https://www.foxdevelop.com/es/2026/08/14/conectarse-a-redis/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Fri, 14 Aug 2026 09:42:15 +0000</pubDate>
				<category><![CDATA[Tutorial de Redis]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=8600</guid>

					<description><![CDATA[En esta lección practicamos operaciones sobre Redis desde WinForms. La lógica es similar en otros proyectos, WinForms solo sirve como entorno de demostración. Después de instalar Redis, se ejecuta como ...]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">En esta lección practicamos operaciones sobre Redis desde WinForms. La lógica es similar en otros proyectos, WinForms solo sirve como entorno de demostración.</p>



<p class="wp-block-paragraph">Después de instalar Redis, se ejecuta como un servicio independiente. Para usarlo desde C# WinForms debemos establecer una conexión, igual que con cualquier base de datos.</p>



<p class="wp-block-paragraph">La cadena de conexión que se muestra a continuación se coloca dentro de app.config</p>



<h4 class="wp-block-heading">1. Configuración en App.config</h4>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-meta">&lt;?xml version="1.0" encoding="utf-8"?&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">configuration</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">connectionStrings</span>&gt;</span>
    <span class="hljs-comment">&lt;!-- Cadena de conexión Redis --&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">add</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"RedisConnectionString"</span> <span class="hljs-attr">connectionString</span>=<span class="hljs-string">"127.0.0.1:6379"</span>/&gt;</span>
    <span class="hljs-comment">&lt;!-- Forma abreviada connectionString="localhost" puerto por defecto 6379 --&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">connectionStrings</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">startup</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">supportedRuntime</span> <span class="hljs-attr">version</span>=<span class="hljs-string">"v4.0"</span> <span class="hljs-attr">sku</span>=<span class="hljs-string">".NETFramework,Version=v4.5"</span> /&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">startup</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">configuration</span>&gt;</span></code></span></pre>


<p class="wp-block-paragraph">Explicación de la cadena de conexión</p>



<ul class="wp-block-list">
<li><code>localhost</code> / <code>127.0.0.1</code>：Servicio Redis local</li>



<li>Puerto por defecto <strong>6379</strong>；Para otro puerto：<code>127.0.0.1:6380</code></li>



<li>Si Redis tiene contraseña：<code>127.0.0.1:6379,password=tucontraseña</code></li>
</ul>



<h4 class="wp-block-heading">2. Código principal Form1.cs</h4>



<p class="wp-block-paragraph">Paquete NuGet necesario</p>



<p class="wp-block-paragraph"><code>StackExchange.Redis</code></p>



<p class="wp-block-paragraph">Espacios de nombres que debes importar</p>


<pre class="wp-block-code"><span><code class="hljs language-cs"><span class="hljs-keyword">using</span> StackExchange.Redis;
<span class="hljs-keyword">using</span> System.Configuration;</code></span></pre>

<pre class="wp-block-code"><span><code class="hljs language-cs"><span class="hljs-keyword">public</span> <span class="hljs-keyword">partial</span> <span class="hljs-keyword">class</span> <span class="hljs-title">Form1</span> : <span class="hljs-title">Form</span>
{
    <span class="hljs-comment">// Objeto para operar la base de datos Redis</span>
    <span class="hljs-keyword">private</span> IDatabase db;
    <span class="hljs-comment">// Leer cadena de conexión desde el archivo de configuración</span>
    <span class="hljs-keyword">private</span> <span class="hljs-keyword">string</span> ConnectionString = ConfigurationManager.ConnectionStrings&#91;<span class="hljs-string">"RedisConnectionString"</span>].ConnectionString;
    <span class="hljs-comment">// Conexión multiplexada (singleton recomendado oficialmente, volatile para seguridad de hilos)</span>
    <span class="hljs-keyword">private</span> <span class="hljs-keyword">volatile</span> IConnectionMultiplexer connection;

    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">Form1</span>(<span class="hljs-params"></span>)</span>
    {
        InitializeComponent();
        <span class="hljs-comment">// Establecer conexión</span>
        connection = ConnectionMultiplexer.Connect(ConnectionString);
        <span class="hljs-comment">// Obtener base de datos número 0 por defecto</span>
        db = connection.GetDatabase();
    }

    <span class="hljs-function"><span class="hljs-keyword">private</span> <span class="hljs-keyword">void</span> <span class="hljs-title">button1_Click</span>(<span class="hljs-params"><span class="hljs-keyword">object</span> sender, EventArgs e</span>)</span>
    {
        <span class="hljs-comment">// Método Set: escribir caché (clave, valor, segundos de expiración)</span>
        <span class="hljs-keyword">bool</span> res = Set(<span class="hljs-keyword">this</span>.textBox1.Text, <span class="hljs-keyword">this</span>.textBox2.Text, <span class="hljs-number">1000</span>);
        <span class="hljs-keyword">if</span> (res)
        {
            MessageBox.Show(<span class="hljs-string">"Guardado correctamente"</span>);
        }
        <span class="hljs-keyword">else</span>
        {
            MessageBox.Show(<span class="hljs-string">"Error al guardar"</span>);
        }
    }

    <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag">&lt;summary&gt;</span></span>
    <span class="hljs-comment"><span class="hljs-doctag">///</span> Guardar par clave‑valor de texto en Redis (wrapper simple)</span>
    <span class="hljs-comment"><span class="hljs-doctag">///</span> <span class="hljs-doctag">&lt;/summary&gt;</span></span>
    <span class="hljs-function"><span class="hljs-keyword">bool</span> <span class="hljs-title">Set</span>(<span class="hljs-params"><span class="hljs-keyword">string</span> key, <span class="hljs-keyword">object</span> data, <span class="hljs-keyword">int</span> cacheTime</span>)</span>
    {
        <span class="hljs-keyword">if</span> (<span class="hljs-keyword">string</span>.IsNullOrEmpty(key)) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
        <span class="hljs-comment">// Definir tiempo de expiración</span>
        <span class="hljs-keyword">var</span> expire = TimeSpan.FromSeconds(cacheTime);
        <span class="hljs-keyword">return</span> db.StringSet(key, data.ToString(), expire);
    }
}</code></span></pre>


<p class="wp-block-paragraph">Conectarse a Redis</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/es/2026/08/14/conectarse-a-redis/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Ejemplo práctico de Redis con WinForms</title>
		<link>https://www.foxdevelop.com/es/2026/08/14/ejemplo-practico-de-redis-con-winforms/</link>
					<comments>https://www.foxdevelop.com/es/2026/08/14/ejemplo-practico-de-redis-con-winforms/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Fri, 14 Aug 2026 09:31:11 +0000</pubDate>
				<category><![CDATA[Tutorial de Redis]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=8584</guid>

					<description><![CDATA[En esta sección usaremos un wrapper de caché Redis en C# WinForms basado en StackExchange.Redis Abre Visual Studio, crea un proyecto WinForms e instala los paquetes de dependencia mediante NuGet ...]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">En esta sección usaremos <strong>un wrapper de caché Redis en C# WinForms basado en StackExchange.Redis</strong> </p>



<p class="wp-block-paragraph">Abre Visual Studio, crea un proyecto WinForms e instala los paquetes de dependencia mediante NuGet</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="449" height="151" src="https://www.foxdevelop.com/wp-content/uploads/2026/08/image-21.png" alt="" class="wp-image-7218" srcset="https://www.foxdevelop.com/wp-content/uploads/2026/08/image-21.png 449w, https://www.foxdevelop.com/wp-content/uploads/2026/08/image-21-300x101.png 300w" sizes="(max-width: 449px) 100vw, 449px" /></figure>



<h4 class="wp-block-heading">Instalar dependencias</h4>



<ol class="wp-block-list">
<li><strong>StackExchange.Redis</strong><br>El cliente open‑source para Redis más usado en el ecosistema .NET, se encarga de la comunicación con el servidor Redis.<br>Repositorio Github：<a href="https://github.com/StackExchange/StackExchange/StackExchange.Redis">https://github.com/StackExchange/StackExchange/StackExchange.Redis</a><br>Redis trabaja sobre protocolo TCP. Teóricamente se podrían escribir sockets manuales, pero en desarrollo productivo se usan librerías de terceros consolidadas.</li>



<li><strong>Newtonsoft.Json（Json.NET）</strong><br>Realiza la serialización de objetos: convierte objetos a cadenas JSON y matrices de bytes para guardar en Redis; hace la deserialización al leer.<br>Hay que instalarlo por NuGet. El código <code>JsonConvert.SerializeObject</code> pertenece a esta librería.</li>
</ol>



<h4 class="wp-block-heading">Métodos del wrapper Redis</h4>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment">// Escribir caché: guardar objeto, definir caducidad en minutos</span>
<span class="hljs-keyword">private</span> bool Set(string key, object data, int cacheTime)
{
    <span class="hljs-keyword">if</span> (data == <span class="hljs-keyword">null</span>)
    {
        <span class="hljs-keyword">return</span> <span class="hljs-keyword">false</span>;
    }
    <span class="hljs-keyword">var</span> entryBytes = Serialize(data);
    <span class="hljs-keyword">var</span> expiresIn = TimeSpan.FromMinutes(cacheTime);
    <span class="hljs-keyword">return</span> db.StringSet(key, entryBytes, expiresIn);
}

<span class="hljs-comment">// Serialización de objeto: entidad → matriz de bytes UTF8</span>
<span class="hljs-keyword">private</span> byte&#91;] Serialize(object data)
{
    <span class="hljs-keyword">var</span> json = JsonConvert.SerializeObject(data);
    <span class="hljs-keyword">return</span> Encoding.UTF8.GetBytes(json);
}</code></span></pre>


<p class="wp-block-paragraph">Ejemplo práctico de Redis con WinForms</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/es/2026/08/14/ejemplo-practico-de-redis-con-winforms/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Instalación</title>
		<link>https://www.foxdevelop.com/es/2026/08/14/instalacion-2/</link>
					<comments>https://www.foxdevelop.com/es/2026/08/14/instalacion-2/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Fri, 14 Aug 2026 06:57:34 +0000</pubDate>
				<category><![CDATA[Tutorial de Redis]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=8568</guid>

					<description><![CDATA[Instalación e inicio de Redis 3.2.100 en Windows Enlaces de descarga Archivos principales después de descomprimir Archivo Función redis‑server.exe Programa del servidor Redis redis‑cli.exe Herramienta de consola del cliente Redis ...]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Instalación e inicio de Redis 3.2.100 en Windows</p>



<h4 class="wp-block-heading">Enlaces de descarga</h4>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Actualmente (2026), el proyecto oficial de Redis solo ofrece paquetes de instalación para Linux. La versión para Windows está archivada y mantenida por Microsoft, y ya no recibe actualizaciones.</p>



<ol class="wp-block-list">
<li>Sitio oficial (versión Linux): http://redis.io/download</li>



<li>Repositorio Github de la versión Windows: https://github.com/MSOpenTech/redis/tags</li>



<li>Versión de ejemplo (win‑3.2.100):<br>https://github.com/MicrosoftArchive/redis/releases/tag/win-3.2.100</li>
</ol>
</blockquote>



<h4 class="wp-block-heading">Archivos principales después de descomprimir</h4>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Archivo</th><th>Función</th></tr></thead><tbody><tr><td>redis‑server.exe</td><td>Programa del servidor Redis</td></tr><tr><td>redis‑cli.exe</td><td>Herramienta de consola del cliente Redis</td></tr><tr><td>redis.windows.conf</td><td>Archivo de configuración predeterminado</td></tr><tr><td>redis.windows‑service.conf</td><td>Configuración especial para instalarlo como servicio de Windows</td></tr><tr><td>redis‑benchmark.exe</td><td>Herramienta de prueba de rendimiento de Redis</td></tr><tr><td>dump.rdb</td><td>Archivo de datos persistentes de Redis</td></tr></tbody></table></figure>



<h4 class="wp-block-heading">Iniciar el servidor Redis desde CMD</h4>



<ol class="wp-block-list">
<li>Abre CMD y navega hasta la carpeta donde descomprimiste Redis</li>
</ol>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-tag">cd</span> <span class="hljs-selector-tag">D</span>:\<span class="hljs-selector-tag">Redis</span>\<span class="hljs-selector-tag">Redis-x64-3</span><span class="hljs-selector-class">.2</span><span class="hljs-selector-class">.100</span></code></span></pre>


<ol start="2" class="wp-block-list">
<li>Comando de inicio (carga el archivo de configuración)</li>
</ol>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-tag">redis-server</span> <span class="hljs-selector-tag">redis</span><span class="hljs-selector-class">.windows</span><span class="hljs-selector-class">.conf</span></code></span></pre>


<p class="wp-block-paragraph">Señales de arranque correcto:</p>



<ul class="wp-block-list">
<li>Modo de ejecución: <code>Running in standalone mode</code> (modo independiente)</li>



<li>Puerto por defecto: <strong>6379</strong></li>
</ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Desventaja: al arrancar de esta forma, <strong>si cierras la ventana de CMD, el servicio Redis se detiene inmediatamente</strong></p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h4 class="wp-block-heading">Instalar como servicio del sistema Windows</h4>



<p class="wp-block-paragraph">El arranque normal desde CMD no se ejecuta en segundo plano. Puedes instalarlo como servicio para que se inicie automáticamente con el sistema.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Para la demostración del curso solo usamos un arranque temporal, este paso es solo de referencia.</p>
</blockquote>



<h4 class="wp-block-heading">Conexión a Redis y prueba de comandos básicos</h4>



<h5 class="wp-block-heading">1. Comando de conexión del cliente</h5>



<p class="wp-block-paragraph">Abre otra ventana de CMD, entra en la carpeta de Redis y ejecuta:</p>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-tag">redis-cli</span><span class="hljs-selector-class">.exe</span> <span class="hljs-selector-tag">-h</span> 127<span class="hljs-selector-class">.0</span><span class="hljs-selector-class">.0</span><span class="hljs-selector-class">.1</span> <span class="hljs-selector-tag">-p</span> 6379</code></span></pre>


<ul class="wp-block-list">
<li><code>-h</code>: especifica la IP del servidor Redis (puedes indicar la IP de otro equipo de la red local para conectarte de forma remota)</li>



<li><code>-p</code>: indica el número de puerto</li>
</ul>



<h5 class="wp-block-heading">2. Ejemplo de comandos básicos</h5>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment"># Establecer par clave‑valor</span>
set key1 value1
<span class="hljs-comment"># Obtener el valor asociado a una clave</span>
get key1

<span class="hljs-comment"># Al consultar una clave inexistente devuelve (nil)</span>
get kkkk

set ddd <span class="hljs-number">123</span>
get ddd</code></span></pre>


<p class="wp-block-paragraph">Reglas:</p>



<ul class="wp-block-list">
<li><code>set</code> requiere los dos parámetros【key】y【value】, si faltan parámetros se producirá un error</li>



<li>Si consultas una clave que no existe, obtendrás <code>(nil)</code></li>
</ul>



<h4 class="wp-block-heading">Observaciones</h4>



<ol class="wp-block-list">
<li>La versión Windows Redis 3.2 es muy antigua. En entornos de producción <strong>no se recomienda usar Redis para Windows</strong>, es mejor desplegarlo en Linux;</li>



<li>Para conexiones remotas debes configurar el firewall y modificar el archivo de configuración para permitir accesos desde IP externas;</li>



<li>La ventana CMD del servidor debe permanecer abierta para que los clientes puedan conectarse correctamente.</li>
</ol>



<p class="wp-block-paragraph">Instalación</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/es/2026/08/14/instalacion-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Introducción</title>
		<link>https://www.foxdevelop.com/es/2026/08/14/introduccion-5/</link>
					<comments>https://www.foxdevelop.com/es/2026/08/14/introduccion-5/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Fri, 14 Aug 2026 06:47:58 +0000</pubDate>
				<category><![CDATA[Tutorial de Redis]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=8552</guid>

					<description><![CDATA[Definición básica de Redis Redis es un software de código abierto escrito en ANSI C, un sistema de almacenamiento / base de datos clave‑valor accesible por red, con almacenamiento en ...]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"></p>



<h4 class="wp-block-heading">Definición básica de Redis</h4>



<p class="wp-block-paragraph">Redis es un <strong>software de código abierto escrito en ANSI C</strong>, un sistema de almacenamiento / base de datos clave‑valor accesible por red, con almacenamiento en memoria y persistencia de datos. Ofrece APIs de cliente para múltiples lenguajes de programación.</p>



<ol class="wp-block-list">
<li>Pertenece a las bases de datos NoSQL no relacionales;</li>



<li>Es similar a Memcached pero con más funcionalidades, cubriendo muchas de sus limitaciones;</li>



<li>Se usa frecuentemente como solución de caché complementaria para bases de datos relacionales como MySQL.</li>
</ol>



<h4 class="wp-block-heading">Tipos de datos admitidos</h4>



<ul class="wp-block-list">
<li><code>String</code>：Tipo cadena de texto</li>



<li><code>List</code>：Lista doblemente enlazada</li>



<li><code>Set</code>：Colección desordenada</li>



<li><code>zset(sorted set)</code>：Colección ordenada</li>



<li><code>Hash</code>：Estructura hash (similar a Map)</li>
</ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Memcached solo admite cadenas de texto, esta es una de las diferencias más representativas entre ambos.</p>
</blockquote>



<h4 class="wp-block-heading">Características</h4>



<ol class="wp-block-list">
<li><strong>Soporte de clientes multi‑idioma</strong><br>Cuenta con SDK oficial para Java, C/C++, C#, PHP, JavaScript, Python, Ruby, Perl y muchos lenguajes más, facilitando la integración en desarrollos.</li>



<li><strong>Sincronización maestro‑esclavo</strong><br>Admite replicación maestro‑esclavo para realizar copias de seguridad remotas y separación de lectura‑escritura, mejorando la disponibilidad del servicio.</li>



<li><strong>Alto rendimiento</strong><br>Los datos residen principalmente en memoria, las lecturas y escrituras son muy veloces, se usa ampliamente como caché distribuido.</li>



<li><strong>Capacidad de persistencia</strong><br>Los datos en memoria se pueden guardar en disco, no se pierden totalmente tras reiniciar (Memcached no tiene persistencia por defecto).</li>
</ol>



<h4 class="wp-block-heading">Contexto</h4>



<p class="wp-block-paragraph">El proyecto inicial de Redis fue financiado, desarrollado y mantenido por VMware.</p>



<p class="wp-block-paragraph">Usaremos un <strong>ejemplo sencillo de cliente Redis en WinForm(C#)</strong> para mostrar su funcionamiento, es un programa introductorio que muestra la conexión desde C# hacia Redis.</p>



<ul class="wp-block-list">
<li>Establecer pares clave‑valor</li>



<li>Obtener valor mediante clave<br></li>
</ul>



<p class="wp-block-paragraph"><strong>Comparación breve Redis vs Memcached</strong></p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Característica</th><th>Redis</th><th>Memcached</th></tr></thead><tbody><tr><td>Tipos de datos</td><td>5 estructuras básicas</td><td>Solo cadena String</td></tr><tr><td>Persistencia</td><td>Admite RDB/AOF</td><td>Sin persistencia</td></tr><tr><td>Replicación maestro‑esclavo</td><td>Admitido</td><td>Sin soporte nativo</td></tr><tr><td>Política de expulsión memoria</td><td>Múltiples políticas</td><td>Expulsión LRU</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Introducción</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/es/2026/08/14/introduccion-5/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
