Redis基础学习之Redis的主要特点和适用场景

前言

Redis是目前最为流行的NoSQL数据库,不仅是当代程序员必备技能之一,也是如今面试的高频问题,那么到底什么是Redis,它的主要特点是什么?为什么要使用Redis,以及Redis的使用场景有哪些?这些都是今天我们所要讨论和学习的问题!

1.1 Redis的定义和特点

1.什么是Redis?
  • RedisRemote Dictionary Server ),即远程字典服务,是免费开源的,并且使用ANSI C语言编写;
  • 它支持网络、可基于内存亦可持久化日志型Key-Value>数据库,并提供多种语言API
  • 是当下最热门的NoSQL数据库之一,也被人们称为结构化数据库
2. Redis的主要特点是什么?
  • Redis是一个Key-Value存储系统

    1.它支持存储的Value类型很丰富,包括String (字符串)、List (链表)、Set (集合)、ZSet(sorted set – 有序集合) 和 Hash(哈希类型);

    2.这些数据类型都支持push (出栈) / pop (入栈)、add (添加) / remove (移除) 及取交集并集和差集及更丰富的操作,而且这些操作都是**原子性**的;

    3.在此基础上,Redis支持各种不同方式排序

  • Redis是一个高性能的Key-Value数据库

    1.Redis很大程度补偿了MemCached这类Key-Value存储的不足,在部分场景可以对关系型数据库起到很好的补充作用

    2.它同时支持Java、C/C++、C#,PHP,JavaScript等多种语言平台,使用起来很方便

  • Redis支持主从同步

    1.与MemCached一样,为了保证效率数据都是缓存在内存中,区别Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步

    2.数据可以从主服务器任意数量从服务器同步从服务器可以是关联其他从服务器主服务器,这使得Redis可执行单层树复制存盘可以有意无意的对数据进行写操作

    3.由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录同步读取操作可扩展性数据冗余很有帮助!

1.2 Redis的使用原因和适用场景

1.为什么要使用Redis?
  • 解决应用服务器CPU和内存压力
  • 减少磁盘的IO的读操作,减轻IO压力;
  • 传统的关系型数据库扩展性不强,难以改变表结构
2.Redis的主要适用场景
2-1 内存存储
  • 进行内存存储,实现数据持久化

    由于在内存中数据断电即失的,因此数据持久化很重要 (例如RDB和AOF),而Redis周期性的更新的数据写入磁盘或者把修改操作写入追加的记录文件,所以Redis很适合用于内存存储

2-2 缓存数据
  • 用于高速缓存,提高应用访问速度

    如今越来越多的中大型网站都在使用缓存,因为合理的使用缓存不仅能够提升网站的访问速度,还能大大降低数据库的压力;

    Redis提供了键过期功能,也提供了灵活的键淘汰策略,所以Redis用在需要缓存的场合十分合适

2-3 排行榜
  • 实现排行榜功能,统计网站热门信息

    如今很多网站都有排行榜应用,例如淘宝的热门商品排行CSDN的热门博客排行B站的热门视频排行等,而Redis提供的ZSet有序集合数据类型,刚好能够实现各种复杂的排行榜应用

2-4 计数器
  • 用于计数器,统计数据浏览量

计数器在大多数网站都有应用,例如淘宝商品的浏览量CSDN博客的点击量B站视频的播放量等;

为了保证数据的实时性每次浏览都要加1,特别是并发访问量高时,如果每次都要请求数据库进行操作,对数据库无疑是巨大的挑战和压力;

Redis中提供的incr命令可以实现计数器功能,并且在内存中操作性能高,非常适用于这些计数场景

2-5 分布式会话
  • 适用于分布式会话,管理Session信息

集群模式中,在应用较少的情况下,一般使用容器自带的Session复制功能就能满足需求;而在应用较多、相对复杂的系统中,一般都会搭建以Redis内存数据库为中心Session服务Session不再由容器管理,而是由Session服务及内存数据库管理

2-6 分布式锁
  • 使用分布式锁技术,控制资源的并发访问

    **分布式**成为了如今最火的技术之一,有很多互联网公司也开始陆续使用分布式技术,但分布式技术带来新的技术挑战:对同一个资源的并发访问

    例如==全局ID修改库存限时秒杀应用场景==,在并发量较低的情况,可以使用数据库的悲观锁乐观锁来实现;但在并发量高的情况下,仍然利用数据库锁来控制资源的并发访问,显然是不太理想的,会 大大影响数据库的性能

    而我们可以使用Redissetnx功能来编写分布式的锁,如果设置返回1,则说明获取锁成功,否则获取锁失败,实际应用中要考虑更多的细节

2-7 消息系统
  • 充当消息队列系统,实现发布订阅功能

    消息队列是大型网站必用的中间件,例如RabbitMQ、ActiveMQ、Kafka等流行的消息队列中间件,主要用于业务解耦流量削峰异步处理实时性低的业务

    由于Redis完全实现了发布 / 订阅 以及阻塞队列功能,使得**从数据库在任何地方同步树时,可订阅一个频道接收主服务器完整的消息发布记录**,从而实现一个简单的消息队列系统,当然Redis的此功能还是不能跟专业的**消息中间件**相比

2-8 社交网络
  • 适用于社交网络,实现点赞关注等功能

    在具有社交功能的网站中,例如B站中,我们可以在评论区进行点赞或者踩,也可以关注我们喜欢的UP主,或者被其他兴趣爱好相同的站友所关注,甚至我们可能还会和其他的站友拥有共同的好友;

    社交型网站的访问量通常来说会比较大,加之社交网络中错综复杂的人际关系,传统的关系型数据库显然不适合存储这种类型的数据,而Redis中提供的Hash集合等数据结构能够很方便的处理这些数据


好了,今天关于Redis的特点以及适用场景的学习就到此结束了,欢迎大家学习和讨论!


参考视频链接:https://www.bilibili.com/video/BV1S54y1R7SB (B站UP主遇见狂神说的Redis基础学习)


参考博客链接:https://cloud.tencent.com/developer/article/1415674 (Redis的8大应用场景)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狂奔の蜗牛rz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值