Redis 简介
Redis 是什么
Redis 是当前比较热门的 NoSql 数据库产品之一,是一个开源的、使用 C 语言编写的、支持网络交互的、可基于内存也可持久化的高性能键值对 Key-Value 数据库(区别于MySQL 的二维表格的形式存储) 。 它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止 Redis支持的键值数据类型如下字符串、列表(lists)、集合(sets)、有序集合(sorts sets)、哈希表(hashs)
Redis 的特点
- 性能极高。Redis 读取的速度是110000次/s,写的速度是 81000次/s
- 原子性 。Redis 的所有操作都是原子性的,同时 Redis 还支持对几个操作全并后的原子性执行。
- 支持多种数据结构:string(字符串);list(列表);hash(哈希),set(集合);zset(有序集合)
- 支持持久化
- 支持主从复制
- 支持集群
- 支持 key 过期时间特性
- 支持事务
- 支持消息/订阅模式
- 官方仅支持 Linux 系统 (但有第三方版本支持 Windows 系统)
Redis 的两个特性
单进程
Redis的服务器程序采用的是单进程的模型来处理客户端的请求。对读写等事件的响应是通过对epoll函数的包装来做到的。
Redis的实际处理速度完全依赖主进程的执行效率,假如同时有多个客户端并发访问服务器,则服务器处理能力在一定情况下将会下降。假如要提升服务器的并发能力,那么可以采用在单台机器上部署多个redis进程的方式。
多数据库(16个)
-
Redis每个数据库对外都是0开始递增的数字来命名,默认16个数据库,默认使用0号数据库,可以使用select+数字 来选择数据库
-
可以使用命令:flushdb,清除某个数据库的数据
-
多个数据库之间并不是完全独立的,可以使用命令:FlushAll,清空redis全部的数据
-
Redis不支持自定义数据库名字,默认是: 0、1、2、3、4 ... 15
-
Redis不支持为每个数据库设置不同的访问密码(默认密码为空)
Redis 的应用场景
数据缓存应用(最多使用)
缓存的两种形式:
页面缓存:第一次从数据库中读取,然后生成一个静态页面,以后所有的读取,只加载这个静态页面就可以了
数据缓存:由于一个页面有几种需要从不同的缓存中读取数据的模块,所以不适合使用页面缓存。
为了提高用户的请求速度和降低服务器的负载,降低数据库的读写次数,将一些在短时间之内不会发生变化且被频繁访问热点数据,存放就到缓存中,其性能优于 Memcached。 (类似于 MyBatis 的缓存机制)
热点数据:数据库中数据被访问的频率是不均匀的,频繁被访问的数据称为热点数据((Hot Spot Data)
会话缓存应用
分布式集群架构中的 session 分离(代替 Session 会话,保存 Web 用户状态信息)
排行榜应用
利用 Redis 的 sorted set(有序集合数据结构),可以快速对数据进行排序,可用于
计数器应用
利用 Redis 的原子性,可以轻松地使用 Redis INCR(自增) 和 DECR(自减) 命令来构建计数系统,关键是不用担心数据库的并发性问题,一般用于网站访问统计
数据过期处理
利用 Redis 支持的过期时间特性,可以定时清除过期数据,如定期活动(精确到毫秒)
消息队列
Redis 支持消息/订阅模式,可以构建实时的消息队列,实现不同系统之间的实时交互通信,可用于秒杀、抢购、12306 等
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)