\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{wilsonsong} \pdfinfo{ /Title (redis.pdf) /Creator (Cheatography) /Author (wilsonsong) /Subject (redis Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{6588A3} \definecolor{LightBackground}{HTML}{F5F7F9} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{redis Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{wilsonsong} via \textcolor{DarkBackground}{\uline{cheatography.com/72444/cs/18328/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}wilsonsong \\ \uline{cheatography.com/wilsonsong} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Not Yet Published.\\ Updated 19th December, 2018.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{tabularx}{17.67cm}{x{8.9411 cm} x{5.9045 cm} x{2.0244 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{17.67cm}}{\bf\textcolor{white}{Keys}} \tn % Row 0 \SetRowColor{LightBackground} DEL {\emph{key}} ... & Delete item(s) & \seqsplit{redis.Int} \tn % Row Count 3 (+ 3) % Row 1 \SetRowColor{white} EXISTS {\emph{key}} & Check for key & \seqsplit{redis.Int} \tn % Row Count 6 (+ 3) % Row 2 \SetRowColor{LightBackground} EXPIRE {\emph{key}} {\emph{seconds}} & Set timeout on item & \seqsplit{redis.Int} \tn % Row Count 9 (+ 3) % Row 3 \SetRowColor{white} EXPIREAT {\emph{key}} {\emph{timestamp}} & Set timeout by timestamp & \seqsplit{redis.Int} \tn % Row Count 12 (+ 3) % Row 4 \SetRowColor{LightBackground} PEXPIRE {\emph{key}} {\emph{milliseconds}} & Set timeout (ms) & \seqsplit{redis.Int} \tn % Row Count 15 (+ 3) % Row 5 \SetRowColor{white} PEXPIREAT {\emph{key}} {\emph{milliseconds-timestamp}} & Set timeout (ms timestamp) & \seqsplit{redis.Int} \tn % Row Count 18 (+ 3) % Row 6 \SetRowColor{LightBackground} PTTL {\emph{key}} & Get item time to live (ms) & \seqsplit{redis.Int} \tn % Row Count 21 (+ 3) % Row 7 \SetRowColor{white} TTL {\emph{key}} & Get item time to live & \seqsplit{redis.Int} \tn % Row Count 24 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}---} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{8.6037 cm} x{5.5671 cm} x{2.6992 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{17.67cm}}{\bf\textcolor{white}{Strings}} \tn % Row 0 \SetRowColor{LightBackground} GET {\emph{key}} & Get value of key & \seqsplit{redis.String} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} INCR {\emph{key}} & Increment integer & \seqsplit{redis.Int} \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} INCRBY {\emph{key}} {\emph{increment}} & Increment integer & \seqsplit{redis.Int} \tn % Row Count 6 (+ 2) % Row 3 \SetRowColor{white} SET {\emph{key}} {\emph{value}} {[}EX {\emph{second}}{]} {[}NX|XX{]} & Set key & \seqsplit{redis.String} \tn % Row Count 8 (+ 2) % Row 4 \SetRowColor{LightBackground} SETEX {\emph{key}} {\bf{{\emph{seconds}}}} {\emph{value}} & Set with expiry (seconds) & \seqsplit{redis.String} \tn % Row Count 10 (+ 2) % Row 5 \SetRowColor{white} SETNX {\emph{key}} {\emph{value}} & Set if doesn't exist & \seqsplit{redis.Int} \tn % Row Count 12 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}---} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{7.0854 cm} x{4.3862 cm} x{5.3984 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{17.67cm}}{\bf\textcolor{white}{Hashes}} \tn % Row 0 \SetRowColor{LightBackground} HDEL {\emph{key}} {\emph{field}} ... & Delete item & redis.Int \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} HEXISTS {\emph{key}} {\emph{field}} & Check for item & redis.Int \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} HGET {\emph{key}} {\emph{field}} & Get item & \seqsplit{redis.String} \tn % Row Count 6 (+ 2) % Row 3 \SetRowColor{white} HGETALL {\emph{key}} & Return all items & \seqsplit{redis.Strings/} redis.StringMap \tn % Row Count 9 (+ 3) % Row 4 \SetRowColor{LightBackground} HINCRBY {\emph{key}} {\emph{field}} {\emph{increment}} & Add to integer value & redis.Int \tn % Row Count 12 (+ 3) % Row 5 \SetRowColor{white} HINCRBYFLOAT {\emph{key}} {\emph{field}} {\emph{increment}} & Add to float value & \seqsplit{redis.Float64} \tn % Row Count 15 (+ 3) % Row 6 \SetRowColor{LightBackground} HKEYS {\emph{key}} & Return all keys & \seqsplit{redis.Strings} \tn % Row Count 17 (+ 2) % Row 7 \SetRowColor{white} HLEN {\emph{key}} & Get number of items & redis.Int \tn % Row Count 19 (+ 2) % Row 8 \SetRowColor{LightBackground} HMGET {\emph{key}} {\emph{field}} ... & Get multiple items & \seqsplit{redis.Strings} \tn % Row Count 21 (+ 2) % Row 9 \SetRowColor{white} HMSET {\emph{key}} {\emph{field}} {\emph{value}} ... & Set multiple items & \seqsplit{redis.Strings/redis.StringMap} \tn % Row Count 24 (+ 3) % Row 10 \SetRowColor{LightBackground} HSET {\emph{key}} {\emph{value}} & Set item & redis.Int \tn % Row Count 26 (+ 2) % Row 11 \SetRowColor{white} HSETNX {\emph{key}} {\emph{value}} & Set item if doesn't exist & redis.Int \tn % Row Count 29 (+ 3) % Row 12 \SetRowColor{LightBackground} HSCAN {\emph{key}} {\emph{cursor}} {[}MATCH {\emph{pattern}}{]} {[}COUNT {\emph{count}}{]} & Iterate items & \seqsplit{redis.MultiBulk} \tn % Row Count 33 (+ 4) \hhline{>{\arrayrulecolor{DarkBackground}}---} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{8.2663 cm} x{5.9045 cm} x{2.6992 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{17.67cm}}{\bf\textcolor{white}{Lists}} \tn % Row 0 \SetRowColor{LightBackground} LINDEX {\emph{key}} {\emph{index}} & Access by index & \seqsplit{redis.String} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} LINSERT {\emph{key}} BEFORE|AFTER {\emph{pivot}} {\emph{value}} & Insert next to & \seqsplit{redis.Int} \tn % Row Count 5 (+ 3) % Row 2 \SetRowColor{LightBackground} LLEN {\emph{key}} & Get length & \seqsplit{redis.Int} \tn % Row Count 7 (+ 2) % Row 3 \SetRowColor{white} LPOP {\emph{key}} & Pop from start & \seqsplit{redis.String} \tn % Row Count 9 (+ 2) % Row 4 \SetRowColor{LightBackground} LPUSH {\emph{key}} {\emph{value}} ... & Push onto start & \seqsplit{redis.Int} \tn % Row Count 11 (+ 2) % Row 5 \SetRowColor{white} LPUSHX {\emph{key}} {\emph{value}} & Push if list exists & \seqsplit{redis.Int} \tn % Row Count 13 (+ 2) % Row 6 \SetRowColor{LightBackground} LRANGE {\emph{key}} {\emph{start}} {\emph{stop}} & Access range & \seqsplit{redis.Strings} \tn % Row Count 16 (+ 3) % Row 7 \SetRowColor{white} LREM {\emph{key}} {\emph{count}} {\emph{value}} & Remove & \seqsplit{redis.Int} \tn % Row Count 18 (+ 2) % Row 8 \SetRowColor{LightBackground} LSET {\emph{key}} {\emph{index}} {\emph{value}} & Set item by index & \seqsplit{redis.String} \tn % Row Count 20 (+ 2) % Row 9 \SetRowColor{white} LTRIM {\emph{key}} {\emph{start}} {\emph{stop}} & Trim to specified range & \seqsplit{redis.String} \tn % Row Count 22 (+ 2) % Row 10 \SetRowColor{LightBackground} RPOP {\emph{key}} & Pop from end & \seqsplit{redis.String} \tn % Row Count 24 (+ 2) % Row 11 \SetRowColor{white} RPUSH {\emph{key}} {\emph{value}} ... & Push onto end & \seqsplit{redis.Int} \tn % Row Count 26 (+ 2) % Row 12 \SetRowColor{LightBackground} RPUSHX {\emph{key}} {\emph{value}} & Push onto end if list exists & \seqsplit{redis.Int} \tn % Row Count 28 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}---} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{9.7846 cm} x{3.5427 cm} x{3.5427 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{17.67cm}}{\bf\textcolor{white}{Sets}} \tn % Row 0 \SetRowColor{LightBackground} SADD {\emph{key}} {\emph{member}} ... & Add item & \seqsplit{redis.Int} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} SCARD {\emph{key}} & Get size & \seqsplit{redis.Int} \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} SISMEMBER {\emph{key}} {\emph{member}} & Check for item & \seqsplit{redis.Int} \tn % Row Count 6 (+ 2) % Row 3 \SetRowColor{white} SPOP {\emph{key}} & Pop random item & \seqsplit{redis.String} \tn % Row Count 8 (+ 2) % Row 4 \SetRowColor{LightBackground} SRANDMEMBER {\emph{key}} {\emph{count}} & Get random item & \seqsplit{redis.Strings} \tn % Row Count 10 (+ 2) % Row 5 \SetRowColor{white} SREM {\emph{key}} {\emph{member}} ... & Remove \seqsplit{matching} & \seqsplit{redis.Int} \tn % Row Count 12 (+ 2) % Row 6 \SetRowColor{LightBackground} SSCAN {\emph{key}} {\emph{cursor}} {[}MATCH {\emph{pattern}}{]} {[}COUNT {\emph{count}}{]} & Iterate items & \seqsplit{redis.MultiBulk} \tn % Row Count 15 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}---} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{6.4106 cm} x{5.5671 cm} x{4.8923 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{17.67cm}}{\bf\textcolor{white}{Sorted Sets}} \tn % Row 0 \SetRowColor{LightBackground} ZADD {\emph{key}} {\emph{score}} {\emph{member}}... & Add item & redis.Int \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} ZCARD {\emph{key}} & Get number of items & redis.Int \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} ZCOUNT {\emph{key}} {\emph{min}} {\emph{max}} & Number of items within score range & redis.Int \tn % Row Count 7 (+ 3) % Row 3 \SetRowColor{white} ZINCRBY {\emph{key}} {\emph{increment}} {\emph{member}} & Add to score & \seqsplit{redis.String} \tn % Row Count 10 (+ 3) % Row 4 \SetRowColor{LightBackground} ZRANGE {\emph{key}} {\emph{start}} {\emph{stop}} {[}WITHSCORES{]} & Get items within rank range & \seqsplit{redis.Strings/} redis.StringMap \tn % Row Count 13 (+ 3) % Row 5 \SetRowColor{white} ZRANGEBYSCORE {\emph{key}} {\emph{min}} {\emph{max}} {[}WITHSCORES{]} {[}LIMIT {\emph{offset}} {\emph{count}}{]} & Get items within score range & \seqsplit{redis.Strings/} redis.StringMap \tn % Row Count 18 (+ 5) % Row 6 \SetRowColor{LightBackground} ZRANK {\emph{key}} {\emph{member}} & Get item rank & redis.Int \tn % Row Count 20 (+ 2) % Row 7 \SetRowColor{white} ZREM {\emph{key}} {\emph{member}} ... & Remove item(s) & redis.Int \tn % Row Count 22 (+ 2) % Row 8 \SetRowColor{LightBackground} \seqsplit{ZREMRANGEBYRANK} {\emph{key}} {\emph{start}} {\emph{stop}} & Remove items within rank range & redis.Int \tn % Row Count 25 (+ 3) % Row 9 \SetRowColor{white} \seqsplit{ZREMRANGEBYSCORE} {\emph{key}} {\emph{min}} {\emph{max}} & Remove items within score range & redis.Int \tn % Row Count 28 (+ 3) % Row 10 \SetRowColor{LightBackground} ZREVRANK {\emph{key}} {\emph{member}} & ZRANGE in reverse order & redis.Int \tn % Row Count 30 (+ 2) \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{6.4106 cm} x{5.5671 cm} x{4.8923 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{17.67cm}}{\bf\textcolor{white}{Sorted Sets (cont)}} \tn % Row 11 \SetRowColor{LightBackground} ZSCORE {\emph{key}} {\emph{member}} & Get item score & \seqsplit{redis.String} \tn % Row Count 2 (+ 2) % Row 12 \SetRowColor{white} ZSCAN {\emph{key}} {\emph{cursor}} {[}MATCH {\emph{pattern}}{]} {[}COUNT {\emph{count}}{]} & Iterate items & \seqsplit{redis.MultiBulk} \tn % Row Count 6 (+ 4) \hhline{>{\arrayrulecolor{DarkBackground}}---} \end{tabularx} \par\addvspace{1.3em} \end{document}