1,初识redis
1.1,初识redis
Redis简介
Redis(REmote Dictionary Server)是一种基于键值对(key-value)的NoSQL数据库,Redis的值可以由字符串string,哈希hash,列表list,集合set,有序集合zset,位图Bitmaps,HyperLogLog,地理信息位置GEO等多种数据结构和算法组成,Redis会将所有数据都存放在内存中,所以读写性能非常惊人,Redis还可以将内存的数据利用快照和日志的形式保存到硬盘上,除了上述功能以外,Redis还提供了键过期,发布订阅,事务,流水线,Lua脚本等附加功能。
Redis特性
- 速度快
正常情况下,Redis执行命令速度非常快。原因如下:
1,所有数据都存放在内存中,而各层硬件执行速度:寄存器 > 一级Cache > 二级Cache > 内存 > 硬盘
2,使用C语言实现,程序"距离"操作系统更近,执行速度相对更快
3,使用单线程架构,预防了多线程可能产生的竞争问题 - 基于键值对的数据结构服务器
与很多键值对数据库不同的是,Redis中的值不仅可以是字符串,而且还可以是具体的数据结构,主要提供五种数据结构:字符串string,哈希hash,列表list,集合set,有序集合zset;同时在字符串的基础上演变出位图Bitmaps,HyperLogLog,地理信息位置GEO - 丰富的功能
1,提供键过期功能,实现缓存
2,发布订阅功能,实现消息系统
3,支持Lua脚本功能
4,简单的事务功能,一定程度上保证事务特性
5,流水线Pipeline,将一批命令一次传给Redis,减少网络开销 - 简单稳定
源码相对较少;Redis使用单线程模型,不仅使得Redis服务端处理模型变得简单,而且也使得客户端开发变得简单;Redis不依赖于操作系统的类库 - 客户端语言多
Redis提供简单的TCP通信协议,客户端支持语言多,例如:java,go,php,python,c,c++,nodejs等 - 持久化
提供两种持久化方式:RDB和AOF,将内存数据保存到硬盘中,保证数据的可持久性。 - 主从复制
实现多个相同数据的Redis副本,复制功能是分布式Redis的基础 - 高可用和分布式
Redis Sentinel模式保证Redis节点的故障发现和故障自动转移,以及Redis Cluster模式,是Redis真正的分布式实现,提供了高可用,读写和容量的扩展性
Redis的使用场景
- 缓存
合理使用缓存可以加速数据的访问速度,降低后端数据源的压力。Redis提供键值过期时间设置,也提供了灵活控制最大内存和内存溢出后的淘汰策略。 - 排行榜系统
Redis提供列表和有序结合数据结构,合理使用这些数据结构方便构建各种排行榜系统 - 计数器应用
计数器为了保证数据的实时性,并发量大对于传统关系型数据性能较大挑战。Redis天然支持计数功能且计数性能非常好 - 社交网络
赞,分析,共同好友,推送,下拉刷新等,由于社交网络访问量通常比较大,传统的关系型数据库不太合适保存这些类型的数据,Redis提供的数据结构相对比较容易实现这些功能。 - 消息队列
提供发布订阅功能和阻塞队列功能,但是和专业的消息队列比还是不够强大
Redis基本避坑
1,大规模数据,由于数据放在内存,经济成本较高
2,一般热数据放在Redis中,冷数据不放在Redis中
3,单线程模型,如果执行keys *这些操作,在一个写操作量很大上配置自动保存RDB,可能造成线上故障
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了