当前位置: 首页 > news >正文

redis总结

1. redis简介
随着Web2.0的时代的到来,用户访问量大幅度提升,同时产生了大量的用户数据。加上后来的智能移动设备的普及,所有的互联网平台都面临了巨大的性能挑战。redis是一个用C语言编写的、开源的、基于内存运行并支持持久化的、高性能的NoSQL数据库,也是当前热门的NoSQL数据库之一。redis中的数据大部分时间都是存储在内存中的,适合存储频繁访问、数据量比较小的数据。

1.NoSQL适用场景:

高并发:

直接操作缓存能够承受的请求是远远大于直接访问数据库的,所以我们可以考虑把数据库中的部分数据转移到缓存中去,这样用户的一部分请求会直接到缓存这里而不用经过数据库。
高性能:

假如用户第一次访问数据库中的某些数据。这个过程会比较慢,因为是从硬盘上读取的。将该用户访问的数据存在数缓存中,这样下一次再访问这些数据的时候就可以直接从缓存中获取了。操作缓存就是直接操作内存,所以速度相当快。如果数据库中的对应数据改变的之后,同步改变缓存中相应的数据即可!

应用场景
缓存
缓存现在几乎是所有大中型网站都在用的必杀技,合理利用缓存提升网站的访问速度,还能大大降低数据库的访问压力。Redis 提供了键过期功能,也提供了灵活的键淘汰策略,所以,现在 Redis 用在缓存的场合非常多。

排行榜
Redis 提供的有序集合Zset数据类结构能够实现复杂的排行榜应用。

计数器
视频网站的播放量,每次浏览 +1,并发量高时如果每次都请求数据库操作无疑有很大挑战和压力。Redis 提供的string incr 命令来实现计数器功能,内存操作,性能非常好,非常适用于这些技术场景。

分布式会话
相对复杂的系统中,一般都会搭建 Redis 等内存数据库为中心的 session 服务。因为现在是微服务部署,一个服务使用一个mysql或一个服务使用一个主机,若session保存在本地,下次请求分发到另一台主机,则不共享

分布式锁
在并发高的场合中,可以利用 Redis 的 setnx 功能来编写分布式的锁,如果设置返回 1,说明获取锁成功,否则获取锁失败。

社交网络
点赞、踩、关注/被关注,共同好友等是社交网站的基本功能,社交网站的访问量通常来说比较大,而且传统的关系数据库不适合这种类型的数据,Redis 提供的哈希,集合等数据结构能很方便的实现这些功能。

最新列表
Redis 列表结构,LPUSH 可以在列表头部插入一个内容 ID 作为关键字,LTRIM 可以用来限制列表的数量,这样列表永远为 N ,无需查询最新的列表,直接根据 ID 去到对应的内容也即可。

异步队列
消息队列是网站经常用的中间件,如 ActiveMQ,RabbitMQ,Kafaka 等流行的消息队列中间件,主要用于业务解耦,流量削峰及异步处理试试性低的业务。Redis 提供了发布/订阅及阻塞队列功能,能实现一个简单的消息队列系统。另外,这个不能和专业的消息中间件相比。利用LIST可以实现队列的功能。

Redis 的高可用性解决方案

  1. 主从复制

    • 一个主节点可以有多个从节点,从节点可以分担主节点的读请求,提高系统的读性能。

    • 如果主节点故障,从节点可以提升为主节点,保证系统的可用性。

  2. 哨兵系统

    • 用于监控主从复制的高可用性,当主节点故障时,哨兵可以自动进行故障转移,选择一个从节点提升为主节点。

  3. 集群

    • 通过分片的方式将数据分布到多个节点上,实现水平

相关文章:

  • 鸿蒙实时音视频流处理框架开发实战——基于HarmonyOS 4.0与分布式软总线的低延时高可靠架构
  • php项目部署----------酒店项目
  • CUDA —— 1.1、C++与CUDA混合编程,C++调用cuda自定义类进行运算操作(附:Windows下Vs2017编程环境配置)
  • 怎么把本地仓库push 到gitlab 上
  • GitLab 18.1 发布 Runner、无效的个人访问令牌查看等功能,可升级体验!
  • Unity AR构建维护系统的以AI驱动增强现实知识检索系统
  • [C#]C# winform部署yolov13目标检测的onnx模型
  • VTK中的形态学处理
  • Pytest项目_day03(Postman使用)
  • # RK3588 Linux SDK 完整问题解决记录-编译内核头文件
  • React:利用计算属性名特点更新表单值
  • 鸿蒙边缘智能计算架构实战:从环境部署到分布式推理全流程
  • flutter的包管理#资源管理#调试Flutter应用#Flutter异常捕获
  • 龙蜥Confidential AI:开源机密计算AI解决方案,让云端模型安全运行
  • 推荐一个前端基于vue3.x,vite7.x,后端基于springboot3.4.x的完全开源的前后端分离的中后台管理系统基础项目(纯净版)
  • R语言使用nonrandom包进行倾向评分匹配
  • Golang中的map使用
  • Vue 2 项目中内嵌 md 文件
  • OpenCV计算机视觉实战(13)——轮廓检测详解
  • C++ - vector 的相关练习