Redis的八大特性(优点)以及其使用场景介绍

前言

  最近在看《Redis的开发与运维》这本书,由付磊和张益军所写,看了这本书是真觉得之前的自己好像就只会运用五种数据类型,而对底层以及性能这块一无所知,看书的过程能感觉到作者的强大,就像当时看《流畅的Python》,每每被作者的知识底蕴以及通熟易懂表达能力所震撼,这边简单地记录书里的一些知识点。

Redis的八大特点(优点)

速度快

  说到Redis的速度快,大家的第一反应一定是内存读取,那是肯定的,但如果面试的时候仅仅说到这点,那还是远远不够的,至少还有以下三点要补充:

  • Redis是用C语言实现的,而众所周知,C语言是“距离”操作系统最近的的编程语言,执行速度快
  • Redis采用了单线程的架构(这点很容易遗忘,但是是Redis的最重要特性),避免了多线程的资源竞争问题
  • Redis的源码非常精简,可以说是集性能和优雅于一身的代码
基于键值对的服务器

  Redis的全程是Remote Dictionary Server,是集合了五种数据结构:字符串、列表、哈希、集合、有序集合,可以说五种数据结构都是围绕于key-value的形式,而value不仅仅可以是值,还能是具体的数据结构,这给予了Redis强大的变化性和灵活能力。

丰富的功能

  除了数据结构的强大,另外就是Redis所提供的丰富的功能了:

  • 提供了key过期的功能,这能运用于实现缓存
  • 提供了发布订阅的功能,可运用于消息队列,如celery
  • 支持lua脚本功能,当觉得Redis的命令实现功能不够时,就能利用lua来创建新的功能
  • 提供了简单的事务功能,不过不能支持回滚,但也能一定程度上保持事务的特性
  • 提供了pipeling功能,这样客户端可以将多条命令一次io,减少了网络的开销
简单稳定

  Redis的简单表现在两方面,一方面是在3.0版本之前源代码仅3万行,后面3.0加入了集群后代码加到了5万行,而5万行的源代码对于开发人员来说,要理解掌握它也显得并不是那么难;另一方面就是Redis是单线程的结构,这使得Redis的服务端处理模型变得简单,客户端开发也显得简单。
  Redis虽然代码少,并且是单线程的,但是它又非常的稳定,很少会出现因为自身bug而down掉的情况。

客户端语言多

  Redis目前基本可以说和MySQL的知名度一样高了,太多的运用场景,太多的支持语言,常见的比如:java的jedis,Python的redis、PHP、C、C++等等。

持久化

  Redis还支持两种方式的持久化,即将数据写入磁盘的方法,RDB和AOF,两种方法各有利弊,这里就不详细介绍了。

主从复制

  那数据库的主从复制、集群功能是非常重要的,可以在Redis异常挂了后不影响客户端的使用,而Redis也是支持主从复制功能。
在这里插入图片描述

高可用和分布式

  Redis从2.8版本后提供了高可用实现的Redis Sentinel,即Redis的“哨兵机制”,可以保证Redis节点的故障发现和自动转移,这实现了Redis强大的分布式功能。

Redis的应用场景

缓存

  缓存可以说是Redis最常用的功能之一了,合理的缓存不仅可以加快速度的访问速度,以及可以减少后端的压力(通常就是MySQL的压力)。可以说,一个合理的缓存可以极大地提高网站的性能。

排行榜系统

  利用Redis的列表和有序集合的特点,可以制作排行榜系统,而排行榜系统目前在商城类、新闻类、博客类等等,都是比不可缺的。

计数器应用

  计数器的应用基本和排行榜系统一样,都是多数网站的普遍需求,如视频网站的播放计数,电商网站的浏览数等等,但这些数量一般比较庞大,如果存到关系型数据库,对MySQL或者其他关系型数据库的挑战还是很大的,而Redis基本可以说是天然支持计数器应用。

消息队列系统

  Redis支持发布订阅系统和阻塞队列的功能,可以充当一般的消息队列功能,虽然和专业的消息队列MQ比如RebbitMQ比起来还优点差距,但也基本够用了,比如celery的异步模型,Redis也是celery官方指定的2种队列的一种。

社交网络

  对于社交网络来说,一般用户量是及其庞大的,此时的关系型数据库就捉襟见肘了,比如好有点赞、关注、推送等等功能,用Redis就能比较轻松地实现这些功能。

总结

  关于Redis的特性和运用场景就介绍到这了,基本上都是《Redis的开发于运维》这本书的内容,但以上都是我自己手打的,如果想要深入地了解,推介这本书。另外因为源码也不多,喜欢源码的可以看《Redis的设计与实现》,是基于源码地角度来介绍Redis。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Redis有五种常用类型:字符串(string)、哈希(hash)、列表(list)、集合(set)和有序集合(zset)。其中,字符串类型用于存储字符串或者二进制的数据,哈希类型用于存储键值对,列表类型可以实现队列或栈的功能,集合类型可以实现无序集合的功能,有序集合类型可以实现排序的功能。Redis的特点包括高速读写、支持丰富的数据类型、支持数据持久化、支持照和AOF两种持久化方式、支持主从复制和哨兵模式、支持Lua脚本等。Redis使用场景包括缓存、分布式锁、计数器、消息队列、实时排行榜等。 ### 回答2: Redis是一种基于内存的高性能键值存储系统,它支持多种数据类型,并具有以下特点和使用场景。 1. 数据类型: Redis支持五种主要的数据类型:字符串(string)、哈希(hash)、列表(list)、集合(set)和有序集合(sorted set)。这些数据类型可以满足各种不同的业务需求。 2. 特点: - 高性能:Redis是基于内存的数据库,相比传统的基于磁盘的数据库,具有更的读写速度。同时,它还支持数据持久化到磁盘,以保证数据的安全性。 - 数据结构丰富:Redis支持多种数据结构,能够满足不同的应用场景,例如哈希可以用于存储和查询用户信息,有序集合可用于排行榜等。 - 发布/订阅模式:Redis支持发布和订阅功能,可以实现消息的实时推送,应用于聊天室、实时数据更新等场景。 - 分布式缓存:Redis可以将数据存储在内存中,减少数据库访问的次数,提高系统性能。同时,Redis还支持数据分片和主从复制,以实现分布式缓存。 - 事务支持:Redis支持事务,可以保证多个操作按顺序执行,同时提供了乐观锁和悲观锁的机制,确保数据的一致性。 3. 使用场景: - 缓存:Redis可以作为缓存系统,减少数据库的访问压力,提高响应速度。 - 计数器和排行榜:Redis的有序集合可以实现速的计数和排名功能,适用于实时排行榜、热门话题等场景。 - 发布/订阅:Redis的发布/订阅模式可用于消息中间件、实时推送等场景。 - 地理位置应用:Redis的地理位置数据结构可以存储和处理地理坐标,适合于位置服务、附近的人等应用。 - 分布式锁:Redis的分布式锁可以保证多个节点之间对共享资源的互斥访问。 总之,Redis是一种功能强大、性能高效的存储系统,适用于各种不同的数据存储和处理需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值