<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="https://umn0mtkzgkj46tygt32g.julianrbryant.com/2005/Atom">
  <channel>
    <title>Redis reference on Docs</title>
    <link>https://un5pn9hmggug.julianrbryant.com/docs/latest/develop/reference/</link>
    <description>Recent content in Redis reference on Docs</description>
    <generator>Hugo</generator>
    <language>en</language>
    <atom:link href="https://un5pn9hmggug.julianrbryant.com/docs/latest/develop/reference/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Redis command tips</title>
      <link>https://un5pn9hmggug.julianrbryant.com/docs/latest/develop/reference/command-tips/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://un5pn9hmggug.julianrbryant.com/docs/latest/develop/reference/command-tips/</guid>
      <description>&lt;p&gt;Command tips are an array of strings.&#xA;These provide Redis clients with additional information about the command.&#xA;The information can instruct Redis Cluster clients as to how the command should be executed and its output processed in a clustered deployment.&lt;/p&gt;&#xA;&lt;p&gt;Unlike the command&#39;s flags (see the 3rd element of &lt;a href=&#34;https://un5pn9hmggug.julianrbryant.com/docs/latest/commands/command/&#34;&gt;&lt;code&gt;COMMAND&lt;/code&gt;&lt;/a&gt;&#39;s reply), which are strictly internal to the server&#39;s operation, tips don&#39;t serve any purpose other than being reported to clients.&lt;/p&gt;&#xA;&lt;p&gt;Command tips are arbitrary strings.&#xA;However, the following sections describe proposed tips and demonstrate the conventions they are likely to adhere to.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Client-side caching reference</title>
      <link>https://un5pn9hmggug.julianrbryant.com/docs/latest/develop/reference/client-side-caching/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://un5pn9hmggug.julianrbryant.com/docs/latest/develop/reference/client-side-caching/</guid>
      <description>&lt;div class=&#34;alert p-3 relative flex flex-row flex-wrap items-center text-base bg-redis-pencil-200 rounded-md&#34;&gt;&#xA;  &lt;div class=&#34;p-2 pr-5&#34;&gt;&lt;svg width=&#34;21&#34; height=&#34;21&#34; viewBox=&#34;0 0 21 21&#34; fill=&#34;none&#34; xmlns=&#34;https://umn0mtkzgkj46tygt32g.julianrbryant.com/2000/svg&#34;&gt;&#xA;  &lt;circle cx=&#34;10.5&#34; cy=&#34;10.5&#34; r=&#34;9.75&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;1.5&#34;/&gt;&#xA;  &lt;path d=&#34;M10.5 14V16&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34;/&gt;&#xA;  &lt;path d=&#34;M10.5 5V12&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34;/&gt;&#xA;&lt;/svg&gt;&#xA;  &lt;/div&gt;&#xA;  &lt;div class=&#34;p-1 pl-4 sm:pl-6 border-l border-l-redis-ink-900 border-opacity-50 flex-1&#34;&gt;&#xA;  &#xA;  &lt;div class=&#34;font-medium&#34;&gt;Note:&lt;/div&gt;&#xA;  This document is intended as an in-depth reference for&#xA;client-side caching. See&#xA;&lt;a href=&#34;https://un5pn9hmggug.julianrbryant.com/docs/latest/develop/clients/client-side-caching/&#34;&gt;Client-side caching introduction&lt;/a&gt;&#xA;for general usage guidelines.&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;Client-side caching is a technique used to create high performance services.&#xA;It exploits the memory available on application servers, servers that are&#xA;usually distinct computers compared to the database nodes, to store some subset&#xA;of the database information directly in the application side.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sentinel client spec</title>
      <link>https://un5pn9hmggug.julianrbryant.com/docs/latest/develop/reference/sentinel-clients/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://un5pn9hmggug.julianrbryant.com/docs/latest/develop/reference/sentinel-clients/</guid>
      <description>&lt;p&gt;Redis Sentinel is a monitoring solution for Redis instances that handles&#xA;automatic failover of Redis masters and service discovery (who is the current&#xA;master for a given group of instances?). Since Sentinel is both responsible&#xA;for reconfiguring instances during failovers, and providing configurations to&#xA;clients connecting to Redis masters or replicas, clients are required to have&#xA;explicit support for Redis Sentinel.&lt;/p&gt;&#xA;&lt;p&gt;This document is targeted at Redis clients developers that want to support Sentinel in their clients implementation with the following goals:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Command key specifications</title>
      <link>https://un5pn9hmggug.julianrbryant.com/docs/latest/develop/reference/key-specs/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://un5pn9hmggug.julianrbryant.com/docs/latest/develop/reference/key-specs/</guid>
      <description>&lt;p&gt;Many of the commands in Redis accept key names as input arguments.&#xA;The 9th element in the reply of &lt;a href=&#34;https://un5pn9hmggug.julianrbryant.com/docs/latest/commands/command/&#34;&gt;&lt;code&gt;COMMAND&lt;/code&gt;&lt;/a&gt; (and &lt;a href=&#34;https://un5pn9hmggug.julianrbryant.com/docs/latest/commands/command-info/&#34;&gt;&lt;code&gt;COMMAND INFO&lt;/code&gt;&lt;/a&gt;) is an array that consists of the command&#39;s key specifications.&lt;/p&gt;&#xA;&lt;p&gt;A &lt;em&gt;key specification&lt;/em&gt; describes a rule for extracting the names of one or more keys from the arguments of a given command.&#xA;Key specifications provide a robust and flexible mechanism, compared to the &lt;em&gt;first key&lt;/em&gt;, &lt;em&gt;last key&lt;/em&gt; and &lt;em&gt;step&lt;/em&gt; scheme employed until Redis 7.0.&#xA;Before introducing these specifications, Redis clients had no trivial programmatic means to extract key names for all commands.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Redis serialization protocol specification</title>
      <link>https://un5pn9hmggug.julianrbryant.com/docs/latest/develop/reference/protocol-spec/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://un5pn9hmggug.julianrbryant.com/docs/latest/develop/reference/protocol-spec/</guid>
      <description>&lt;p&gt;To communicate with the Redis server, Redis clients use a protocol called Redis Serialization Protocol (RESP).&#xA;While the protocol was designed specifically for Redis, you can use it for other client-server software projects.&lt;/p&gt;&#xA;&lt;p&gt;RESP is a compromise among the following considerations:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Simple to implement.&lt;/li&gt;&#xA;&lt;li&gt;Fast to parse.&lt;/li&gt;&#xA;&lt;li&gt;Human readable.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;RESP can serialize different data types including integers, strings, and arrays.&#xA;It also features an error-specific type.&#xA;A client sends a request to the Redis server as an array of strings.&#xA;The array&#39;s contents are the command and its arguments that the server should execute.&#xA;The server&#39;s reply type is command-specific.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Redis client handling</title>
      <link>https://un5pn9hmggug.julianrbryant.com/docs/latest/develop/reference/clients/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://un5pn9hmggug.julianrbryant.com/docs/latest/develop/reference/clients/</guid>
      <description>&lt;p&gt;This document provides information about how Redis handles clients at the network layer level: connections, timeouts, buffers, and other similar topics are covered here.&lt;/p&gt;&#xA;&lt;p&gt;The information contained in this document is &lt;strong&gt;only applicable to Redis version 2.6 or greater&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;accepting-client-connections&#34; class=&#34;group relative&#34;&gt;&#xA;  Accepting Client Connections&#xA;  &lt;a href=&#34;#accepting-client-connections&#34; class=&#34;header-link opacity-0 group-hover:opacity-100 transition-opacity duration-200 ml-1 align-baseline&#34; aria-label=&#34;Link to this section&#34; title=&#34;Copy link to clipboard&#34;&gt;&#xA;    &lt;svg class=&#34;inline-block w-4 h-4 align-baseline&#34; fill=&#34;currentColor&#34; viewBox=&#34;0 0 20 20&#34; xmlns=&#34;https://umn0mtkzgkj46tygt32g.julianrbryant.com/2000/svg&#34;&gt;&#xA;      &lt;path fill-rule=&#34;evenodd&#34; d=&#34;M12.586 4.586a2 2 0 112.828 2.828l-3 3a2 2 0 01-2.828 0 1 1 0 00-1.414 1.414 4 4 0 005.656 0l3-3a4 4 0 00-5.656-5.656l-1.5 1.5a1 1 0 101.414 1.414l1.5-1.5zm-5 5a2 2 0 012.828 0 1 1 0 101.414-1.414 4 4 0 00-5.656 0l-3 3a4 4 0 105.656 5.656l1.5-1.5a1 1 0 10-1.414-1.414l-1.5 1.5a2 2 0 11-2.828-2.828l3-3z&#34; clip-rule=&#34;evenodd&#34;&gt;&lt;/path&gt;&#xA;    &lt;/svg&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Redis accepts clients connections on the configured TCP port and on the Unix socket if enabled. When a new client connection is accepted the following operations are performed:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Key eviction</title>
      <link>https://un5pn9hmggug.julianrbryant.com/docs/latest/develop/reference/eviction/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://un5pn9hmggug.julianrbryant.com/docs/latest/develop/reference/eviction/</guid>
      <description>&lt;p&gt;Redis is commonly used as a cache to speed up read accesses to a slower server&#xA;or database. Since cache entries are copies of persistently-stored data, it&#xA;is usually safe to evict them when the cache runs out of memory (they can be&#xA;cached again in the future if necessary).&lt;/p&gt;&#xA;&lt;p&gt;Redis lets you specify an eviction policy to evict keys automatically&#xA;when the size of the cache exceeds a set memory limit. Whenever a client&#xA;runs a new command that adds more data to the cache, Redis checks the memory usage.&#xA;If it is greater than the limit, Redis evicts keys according to the chosen&#xA;eviction policy until the total memory used is back below the limit.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Redis command arguments</title>
      <link>https://un5pn9hmggug.julianrbryant.com/docs/latest/develop/reference/command-arguments/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://un5pn9hmggug.julianrbryant.com/docs/latest/develop/reference/command-arguments/</guid>
      <description>&lt;p&gt;The &lt;a href=&#34;https://un5pn9hmggug.julianrbryant.com/docs/latest/commands/command-docs/&#34;&gt;&lt;code&gt;COMMAND DOCS&lt;/code&gt;&lt;/a&gt; command returns documentation-focused information about available Redis commands.&#xA;The map reply that the command returns includes the &lt;em&gt;arguments&lt;/em&gt; key.&#xA;This key stores an array that describes the command&#39;s arguments.&lt;/p&gt;&#xA;&lt;p&gt;Every element in the &lt;em&gt;arguments&lt;/em&gt; array is a map with the following fields:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;name:&lt;/strong&gt; the argument&#39;s name, always present.&#xA;The name of an argument is given for identification purposes alone.&#xA;It isn&#39;t displayed during the command&#39;s syntax rendering.&#xA;The same name can appear more than once in the entire argument tree, but it is unique compared to other sibling arguments&#39; names.&#xA;This allows obtaining a unique identifier for each argument (the concatenation of all names in the path from the root to any argument).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;display_text:&lt;/strong&gt; the argument&#39;s display string, present in arguments that have a displayable representation (all arguments that aren&#39;t oneof/block).&#xA;This is the string used in the command&#39;s syntax rendering.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;type:&lt;/strong&gt; the argument&#39;s type, always present.&#xA;An argument must have one of the following types:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;string:&lt;/strong&gt; a string argument.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;integer:&lt;/strong&gt; an integer argument.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;double:&lt;/strong&gt; a double-precision argument.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;key:&lt;/strong&gt; a string that represents the name of a key.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;pattern:&lt;/strong&gt; a string that represents a glob-like pattern.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;unix-time:&lt;/strong&gt; an integer that represents a Unix timestamp.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;pure-token:&lt;/strong&gt; an argument is a token, meaning a reserved keyword, which may or may not be provided.&#xA;Not to be confused with free-text user input.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;oneof&lt;/strong&gt;: the argument is a container for nested arguments.&#xA;This type enables choice among several nested arguments (see the &lt;a href=&#34;https://un5pn9hmggug.julianrbryant.com/docs/latest/commands/xadd/&#34;&gt;&lt;code&gt;XADD&lt;/code&gt;&lt;/a&gt; example below).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;block:&lt;/strong&gt; the argument is a container for nested arguments.&#xA;This type enables grouping arguments and applying a property (such as &lt;em&gt;optional&lt;/em&gt;) to all (see the &lt;a href=&#34;https://un5pn9hmggug.julianrbryant.com/docs/latest/commands/xadd/&#34;&gt;&lt;code&gt;XADD&lt;/code&gt;&lt;/a&gt; example below).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;key_spec_index:&lt;/strong&gt; this value is available for every argument of the &lt;em&gt;key&lt;/em&gt; type.&#xA;It is a 0-based index of the specification in the command&#39;s &lt;a href=&#34;https://un5pn9hmggug.julianrbryant.com/docs/latest/develop/reference/key-specs.md&#34;&gt;key specifications&lt;/a&gt; that corresponds to the argument.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;token&lt;/strong&gt;: a constant literal that precedes the argument (user input) itself.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;summary:&lt;/strong&gt; a short description of the argument.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;since:&lt;/strong&gt; the debut Redis version of the argument (or for module commands, the module version).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;deprecated_since:&lt;/strong&gt; the Redis version that deprecated the command (or for module commands, the module version).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;flags:&lt;/strong&gt; an array of argument flags.&#xA;Possible flags are:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;optional&lt;/strong&gt;: denotes that the argument is optional (for example, the &lt;em&gt;GET&lt;/em&gt; clause of the  &lt;a href=&#34;https://un5pn9hmggug.julianrbryant.com/docs/latest/commands/set/&#34;&gt;&lt;code&gt;SET&lt;/code&gt;&lt;/a&gt; command).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;multiple&lt;/strong&gt;: denotes that the argument may be repeated (such as the &lt;em&gt;key&lt;/em&gt; argument of &lt;a href=&#34;https://un5pn9hmggug.julianrbryant.com/docs/latest/commands/del/&#34;&gt;&lt;code&gt;DEL&lt;/code&gt;&lt;/a&gt;).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;multiple-token:&lt;/strong&gt; denotes the possible repetition of the argument with its preceding token (see &lt;a href=&#34;https://un5pn9hmggug.julianrbryant.com/docs/latest/commands/sort/&#34;&gt;&lt;code&gt;SORT&lt;/code&gt;&lt;/a&gt;&#39;s &lt;code&gt;GET pattern&lt;/code&gt; clause).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;value:&lt;/strong&gt; the argument&#39;s value.&#xA;For arguments types other than &lt;em&gt;oneof&lt;/em&gt; and &lt;em&gt;block&lt;/em&gt;, this is a string that describes the value in the command&#39;s syntax.&#xA;For the &lt;em&gt;oneof&lt;/em&gt; and &lt;em&gt;block&lt;/em&gt; types, this is an array of nested arguments, each being a map as described in this section.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;example&#34; class=&#34;group relative&#34;&gt;&#xA;  Example&#xA;  &lt;a href=&#34;#example&#34; class=&#34;header-link opacity-0 group-hover:opacity-100 transition-opacity duration-200 ml-1 align-baseline&#34; aria-label=&#34;Link to this section&#34; title=&#34;Copy link to clipboard&#34;&gt;&#xA;    &lt;svg class=&#34;inline-block w-4 h-4 align-baseline&#34; fill=&#34;currentColor&#34; viewBox=&#34;0 0 20 20&#34; xmlns=&#34;https://umn0mtkzgkj46tygt32g.julianrbryant.com/2000/svg&#34;&gt;&#xA;      &lt;path fill-rule=&#34;evenodd&#34; d=&#34;M12.586 4.586a2 2 0 112.828 2.828l-3 3a2 2 0 01-2.828 0 1 1 0 00-1.414 1.414 4 4 0 005.656 0l3-3a4 4 0 00-5.656-5.656l-1.5 1.5a1 1 0 101.414 1.414l1.5-1.5zm-5 5a2 2 0 012.828 0 1 1 0 101.414-1.414 4 4 0 00-5.656 0l-3 3a4 4 0 105.656 5.656l1.5-1.5a1 1 0 10-1.414-1.414l-1.5 1.5a2 2 0 11-2.828-2.828l3-3z&#34; clip-rule=&#34;evenodd&#34;&gt;&lt;/path&gt;&#xA;    &lt;/svg&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The trimming clause of &lt;a href=&#34;https://un5pn9hmggug.julianrbryant.com/docs/latest/commands/xadd/&#34;&gt;&lt;code&gt;XADD&lt;/code&gt;&lt;/a&gt;, i.e., &lt;code&gt;[MAXLEN|MINID [=|~] threshold [LIMIT count]]&lt;/code&gt;, is represented at the top-level as &lt;em&gt;block&lt;/em&gt;-typed argument.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Redis and the Gopher protocol</title>
      <link>https://un5pn9hmggug.julianrbryant.com/docs/latest/develop/reference/gopher/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://un5pn9hmggug.julianrbryant.com/docs/latest/develop/reference/gopher/</guid>
      <description>&lt;p&gt;** Note: Support for Gopher was removed in Redis 7.0 **&lt;/p&gt;&#xA;&lt;p&gt;Redis contains an implementation of the Gopher protocol, as specified in&#xA;the &lt;a href=&#34;https://un5gmtkzgjpvynwjhkae4.julianrbryant.com/rfc/rfc1436.txt&#34;&gt;RFC 1436&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The Gopher protocol was very popular in the late &#39;90s. It is an alternative&#xA;to the web, and the implementation both server and client side is so simple&#xA;that the Redis server has just 100 lines of code in order to implement this&#xA;support.&lt;/p&gt;&#xA;&lt;p&gt;What do you do with Gopher nowadays? Well Gopher never &lt;em&gt;really&lt;/em&gt; died, and&#xA;lately there is a movement in order for the Gopher more hierarchical content&#xA;composed of just plain text documents to be resurrected. Some want a simpler&#xA;internet, others believe that the mainstream internet became too much&#xA;controlled, and it&#39;s cool to create an alternative space for people that&#xA;want a bit of fresh air.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
