redis
阅读原文
建议阅读原文,始终查看最新文档版本,获得最佳阅读体验:《redis》
什么是redis
Redis(REmote DIctionary Server)是一个开源的、高性能的内存键值数据库,属于NoSQL数据库类别,由C语言编写。它支持网络访问、持久化存储及多种数据结构,广泛应用于缓存、消息队列等场景。以下是其核心特点的简要介绍:
⚙️ 核心特性
高性能内存存储
-
数据主要存储在内存中,读写速度达10万+/秒(QPS),响应时间在微秒级。
-
单线程模型避免锁竞争,提升并发效率。
持久化机制
-
RDB:定时生成数据快照,适合备份。
-
AOF:记录操作日志,保障数据安全(支持每秒同步)。
-
两者可混合使用,平衡性能与可靠性。
高可用与扩展
-
主从复制:数据从主节点自动同步到从节点,支持读写分离和故障恢复。
-
Redis Cluster:分布式分片架构,通过哈希槽(16K个)实现水平扩展,支持在线扩容。
🧩 数据结构支持
Redis支持丰富的数据类型,超越简单键值存储:
-
String:字符串、整数(如计数器)。
-
List:双向链表(消息队列、最新列表)。
-
Set:无序集合(标签系统、去重)。
-
Hash:键值对集合(存储对象属性)。
-
Sorted Set:有序集合(排行榜、优先级队列)。
每种类型提供原子操作命令(如INCR
、LPUSH
),并支持事务(MULTI/EXEC
)和Lua脚本。
🚀 典型应用场景
缓存系统
热点数据缓存(如会话信息、全页缓存),减轻数据库压力。
实时应用
计数器、排行榜(Sorted Set)、秒杀系统。
消息服务
发布/订阅(Pub/Sub)、阻塞队列(List实现任务调度)。
空间计算
地理位置查询(Geospatial索引),如“附近的人”。
分布式锁
利用**SETNX**
命令实现跨进程资源协调。
⚠️ 局限性
-
内存限制:数据规模受物理内存容量制约。
-
持久化代价:RDB快照可能丢失间隔数据,AOF日志影响写入性能。
-
复杂度:集群运维和在线扩容较复杂,需提前规划资源。
💎 总结
Redis以内存高速读写为核心,通过多样数据结构、持久化方案及分布式架构,成为现代系统中缓存、实时处理的基石。其适用场景广泛,但需根据业务需求权衡性能与数据安全性。典型案例包括新浪微博(支撑4GB数据、400+实例)。
redis官网
https://redis.io/
安装开源版redis
官方文档:Install Redis Open Source | Docs
用snap安装
sudo apt update
sudo apt install redis-tools -y# this will install `redis-cli`
sudo snap install redis
docker安装redis
docker run -d --name redis -p 6379:6379 redis:<version>
Windows系统安装redis
官方已经不在为Windows系统开发原生的redis了,官方建议用docker部署redis,方法如上。
配置redis
如果是通过snap安装redis,则默认的redis配置文件路径为:/var/snap/redis/common/etc/redis/redis.conf
配置监听地址
建议将下图红色箭头所示的行注释掉,默认情况下,redis只在本地回环上监听,注释掉此行后,则会在本地所有ip地址(ipv4和ipv6)上监听
设置密码
默认情况下,redis没有密码,强烈建议设置密码
验证redis是否正确安装并运行
连接到redis
redis-cli
用PING命令测试连接
输出为PONG,说明redis正常运行
127.0.0.1:6379> PING
PONG
使用redis insight管理redis
官方文档:Redis Insight | Docs
什么是redis insight
Redis Insight 是一个强大的工具,用于可视化和优化 Redis 中的数据,让实时应用程序的开发变得比以往更加轻松有趣。Redis Insight 既支持图形界面(GUI)操作,也支持命令行(CLI)交互,提供了一个功能齐全的桌面版图形客户端。
安装redis insight
官方文档:Install on desktop | Docs
在Windows上安装redis insight
#Windows系统版本至少是Windows10
winget install --id=RedisInsight.RedisInsight
利用redis insight连接到redis
官方文档:Redis Insight | Docs
如何彻底删除redis中的数据
redis insight中也是可以输入redis命令的,在底部的CLI中,直接输入下行命令即可删除redis中的所有数据(包括所有数据库)
FLUSHALL