Redis 简介
Redis(REmote DIctionary Server)是一个开源的基于内存的数据存储系统,它提供了快速、可扩展和灵活的键值存储,以 key-value 的键值对的形式存储数据。
Redis 支持多种数据结构,包括字符串、哈希表、列表、集合和有序集合,使其适用于各种应用场景,如缓存、队列、计数器等。
不同于 MySQL 等传统关系型数据库,Redis 属于 NOSQL 数据库,而且是基于内存,因此速度往往比存储在硬盘上的数据库查询起来要快的多。 系统中的瓶颈往往是I/O方面的,也就是数据库的部分,类似于计算机的设计思想,考虑到:
- 大部分的业务需求只是查询数据,而且数据存在热点数据。
- Redis 基于内存,速度要比 MySQL 查询快。
我们常常把 Redis 当做是 MySQL 等数据库的缓存,当数据在 Redis 中存在时,我们就从 Redis 中读取并返回,如果不存在,才会去 MySQL 中查询,并且写入到 Redis 中缓存。
这样一来,就可以大大提高数据的访问速度。
安装
首先,我们需要安装 Redis。我们可以从 Redis 官方网站下载最新版本,并按照官方文档提供的说明进行安装。
Redis 主要由有两个程序组成:
- Redis 客户端 redis-cli
- Redis 服务器 redis-server
客户端、服务器可以位于同一台计算机或两台不同的计算机中。
一般来讲,Redis 要安装在 Linux 系统上,因为 Redis 用到了 Linux 中的 epoll 系统调用实现高并发,如果想要在 Windows 上安装,可以使用 Docker,这里我们就还是用 Ubuntu 为例了。
sudo apt install lsb-release curl gpg
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
sudo apt-get update
sudo apt-get install redis
systemctl list-unit-files --type=service | grep redis
sudo service redis-server start
redis-server -v
连接到Redis
一旦 Redis 服务器启动,我们可以使用 Redis 客户端连接到服务器并执行操作。
redis-cli ping
如果终端显示 PONG
,说明连接成功。
存储和获取数据
类似于 Java 或者 Javascript,我们主要使用以 set
和 get
为核心的操作,对键值对进行处理,实现数据的增删改查。
存储字符串
set name "Foo"
上述命令将键名为name
,值为Foo
的字符串存储到 Redis 中。
获取字符串
get name
上述命令将返回键名为 name
的值。
键操作
查询键
我们可以使用 keys *
查询所有的 key,使用 exists key
查看一个 key 是否存在。
移动键
值得注意的是,类似于 MySQL 中的分库,Redis 默认提供了 0~15 一共 16 个库,我们默认使用的是 0 号库。
我们可以使用 move key dbindex
将某条数据迁移到 dbindex
号库中,使用 select dbindex
命令可以让我们在不同的库之间切换。
删除键
使用 del key
命令可以删除键。
del name
过期时间
Redis 中的 key 默认永不过期,也就是过期时间为 -1
,已经过期为 -2
,其他值表示还有多少秒过期。
使用 expire key t
可以指定过期时间,使用 ttl key
可以查看过期时间,值得注意的是,是否过期取决于服务器的时间,而不是 Redis,也就是说即使 Redis 没有运行,到期了 key 也会删除。
注:TTL 表示 Time To Live。
Redis与应用场景
Redis的灵活性使其适用于多种应用场景。
缓存
由于 Redis 具有高速的读写能力和基于内存的特性,它被广泛用于缓存数据。通过将常用数据存储在 Redis 中,可以大大提高应用程序的性能。
消息队列
Redis 的列表数据结构使其有能力作为一个轻量级的消息队列解决方案。生产者可以将消息推送到列表中,而消费者可以从列表中获取消息进行处理。
计数器
Redis 的原子操作使其成为一个可靠的计数器工具。通过使用递增和递减的原子操作,可以轻松地实现计数器功能,如统计网站访问量、用户在线人数等。
总结
Redis 是一个强大的工具,深入学习 Redis 可以增强我们对于数据存储、网络传输、分布式架构的认知。