Redis丨基础数据类型

前言

Redis 是一个开源(BSD 许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。

下载与安装

使用前,肯定先要安装吧。这里以 Windows 环境安装 Redis 为例:点击Github - redis下载。
安装后,配置环境变量,设置 Redis 的服务端口,默认为 6379。Redis 默认是没有登录密码的,如有需要可以修改配置文件打开访问控制。

服务端

打开一个 cmd 窗口,使用 cd 命令切换目录到 Redis 的安装目录下 ,再运行:redis-server.exe。如果还没把 Redis 的路径加到系统的环境变量里,参数 redis.windows.conf 就不能省略,运行命令为:redis-server.exe redis.windows.conf
运行Redis服务端
在 Windows 环境上,关闭命令窗口就是关闭 Redis 服务端。
如果显示“oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo”,说明已经启动 Redis 了,不要重复启动。

客户端

这时候另启一个 cmd 窗口,原来的不要关闭,不然就无法访问服务端了。再切换到 Redis 的安装目录下,运行:redis-cli.exe -h 127.0.0.1 -p 6379,显示对应的命令操作行(进入交互模式),就说明成功连接上了。
运行Redis客户端
为了操作界面的美观与功能,我使用的是另一款客户端:Redis Assistant
Redis Assistant连接界面
连接进入仪表盘之后,显示了状态监控、内存分析、数据管理、多样化搜索等功能。
可视化管理与监控界面

数据类型

Redis 所有的 key(键)都是字符串,所以我们在谈基础数据类型时,讨论的是存储 value(值)的数据类型,主要包括常见的 5 种数据类型,分别是:String、List、Set、Zset、Hash。

字符串 String

字符串 String 表示的是一个可变的字节数组,并不是 Java 的不可变的 String,更类似于 Java 的 ArrayList。存储的值可以是任何种类的字符串(包括二进制数据、整数或浮点数),通常用 SET key valueGET key 来设置和获取字符串值。需要注意的是字符串的最大长度为 512 M
如果字符串的值是一个整数,那么还可以将字符串当成计数器来使用。INCR 命令将字符串值解析成整型,将其加一,最后将结果保存为新的字符串值,类似的命令还有 INCRBYDECRDECRBY
使用 EXISTS 命令返回 1 或 0 标识给定 key 的值是否存在,使用 DEL 命令可以删除 key 对应的值,DEL 命令返回 1 或 0 标识值是被删除(值存在)或者没被删除(key 对应的值不存在)。
操作String
操作命令参考菜鸟教程 - Redis 字符串

列表 List

列表 List 是按插入顺序排序的字符串元素的集合,基本上就是链表(Linked List),而且是双向链表。因为它是链表,所以不能像数组一样随机访问;在头部(左边)或尾部(右边)添加 / 删除一个元素的操作,其时间复杂度只有 O(1)
类似于 Java 集合类的 List.get(index) 方法,Redis 的 List 也可以通过索引获取列表中的元素,索引可以使用自然数 0, 1, 2, ... n-1 表示,还可以使用负数 -1, -2, ... -n 来表示:以 -1 表示列表的最后一个元素,-2 表示列表的倒数第二个元素,以此类推,-n 就表示第一个元素,对应的索引为 0。
操作List
链表可以从表头和表尾追加和移除元素,结合使用 lpush / lpop / rpush / rpop 这四条指令,可以将链表作为队列或堆栈使用。
Push与Pop
操作命令参考菜鸟教程 - Redis 列表

哈希 Hash

Redis 的 Hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,类似于 Java 的 HashMap,特别适合用于存储对象。
Hash 便于表示 objects,实际上,你可以放入一个 hash 的域数量实际上没有限制(除了可用内存以外)。
HMSET 指令同时将多个 field-value (域-值)对设置到哈希表,而 HGET 取回单个域。HMGETHGET 类似,但返回一系列值。
操作Hash
操作命令参考菜鸟教程 - Redis 哈希

集合 Set

Redis 的 Set 是 String 类型的无序集合,类似于 Java 的 Set 集合,不按特定的方式排序,只是简单地把对象加入集合,集合中不能包含重复的对象。它是通过哈希表实现的,所以添加、删除、查找操作的复杂度都是 O(1)。
SADD 指令把一个或多个新元素添加到 set 中,与此相反的是 SREM 指令,它用于删除一到多个元素;SMEMBERS 指令返回集合中的所有的成员;SPOP 指令删除并返回集合中的一个随机元素; SUNIONSTORE 指令用于对多个集合取并集,并把结果存入另一 set 中。
操作Set
操作命令参考菜鸟教程 - Redis 集合

有序集合 Sorted Set

Sorted Set,通常我们称之为 zset,因为其操作指令以字母 z 开头。
它是一个特别的数据类型,一方面它类似于 Java 的数据结构 Map<String, Double>,可以给每一个元素 value 赋予一个权重 score,另一方面它又类似于 TreeSet,内部的元素会按照权重 score 进行排序,可以得到每个元素的名次,还可以通过 score 的范围来获取元素的列表。zset 的成员是唯一的,但权重 score 却可以重复。
操作Zset
操作命令参考菜鸟教程 - Redis 有序集合

参考

菜鸟教程 - Redis教程
Redis中文网
打赏
评论区
头像
文章目录