2023-08-24:(1)初识Redis
1、Redis介绍
Redis是一种基于K-V的NoSQL数据库,它的V可以是string、hash、list、set、zset等多种数据结构,因此Redis可以满足很多应用场景。
Redis会把所有数据都存放在内存中,因此其读写性能惊人。
Redis会把内存数据以快照、日志形式存放到硬盘上,这样在发生断电、机器故障时,内存中的数据不会丢失。
几个网站:
[1] http://redis.io
[2] http://antirez.com
[3] https://github.com/antirez/redis
2、Redis特性
1)速度快
原因:①数据存放于内存;②用C编写,离OS更近;③单线程架构,避免了多线程竞争;④作者对Redis源代码的打磨。
2)基于K-V的数据结构
Redis中的V不仅可以是string,还可以是具体的数据结构,便于在多种应用场景中的开发,同时可以提高开发效率。
3)丰富的功能
①键过期功能——缓存
②发布订阅——消息系统
③Lua脚本——用Lua创造新的Redis命令
④简单事务功能——事务特性
⑤流水线——C端可以将一批命令一次性传输到Redis,减少了网络开销
4)简单稳定
①源码很少——普通的开发运维人员可以“吃透”
②单线程模型——简单的S端处理模型和C端开发
③不依赖OS中的类库,自己实现了事件处理的相关功能。
5)C端语言多
Redis提供了简单的TCP通信协议,许多编程语言可以很方便接入Redis,并且Redis受各大社区和公司认可,因此有很多支持的客户端语言——Java、PHP、Python、C、C++、Nodejs等几乎所有主流编程语言。
6)持久化
数据存放在内存是不安全的,Redis提供了两种持久化方案:RDB、AOF,将数据从内存保存到硬盘。
7)主从复制
多个具有相同数据的Redis副本,复制功能是分布式Redis的基础。
8)高可用和分布式
Redis从2.8版本开始提供了高可用实现Redis Sentinel,保证了Redis节点的故障发现和自动转移。
从3.0版本开始提供分布式实现的Redis Cluster,它是Redis真正的分布式实现,提供了高可用、读写、容量的扩展性。
3、Redis能做什么
1)缓存
Redis提供了键值过期时间设置,还提供了灵活控制最大内存和内存溢出后的淘汰策略。
2)排行榜系统
网站上的各种排行榜——热度、时间排行榜。
Redis提供了列表list和有序集合zset,方便构建各种排行榜系统
3)计数器
视频网站播放数、电商网站浏览数。
需要保证实时性,每次浏览、播放都要+1,并发很大的情况下对于传统关系型数据是一种挑战。
Redis天然支持计数功能且计数性能很好。
4)社交网站
支持赞/踩、粉丝、共同好友/喜好、推送、下拉刷新等是社交网站的必备功能,这些网站还有比较大的访问量。
Redis可以较容易实现。
5)消息队列
Redis提供了发布订阅、阻塞队列的功能,对于一般的消息队列功能基本可以满足。
4、Redis不能做什么
1)海量数据
Redis存放于内存中,因此保存的数据量不能太大,比如每天几亿的用户行为数据。
2)冷数据
热数据:操作频繁的数据;冷数据则相反。
如果将冷数据放在Redis中,是对内存的一种浪费。将热数据放在Redis中可以加速读写,减轻后端存储的负载。
5、Redis安装
6、Redis启停
Redis:redis启停
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性