1. Redis八大特点

1.1. 速度快

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

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

1.2. 基于键值对的服务器

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

1.3. 丰富的功能

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

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

1.4. 简单稳定

Redis的简单表现在两方面,一方面是在3.0版本之前源代码仅3万行,后面3.0加入了集群后代码加到了5万行,而5万行的源代码对于开发人员来说,要理解掌握它也显得并不是那么难;另一方面就是Redis是单线程的结构,这使得Redis的服务端处理模型变得简单,客户端开发也显得简单。

Redis虽然代码少,并且是单线程的,但是它又非常的稳定,很少会出现因为自身bug而down掉的情况。

1.5. 客户端语言多

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

1.6. 持久化

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

1.7. 主从复制

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

1.8. 高可用和分布式

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

2.Redis的应用场景

2.1 缓存

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

2.2 排行榜系统

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

2.3 计数器应用

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

2.4 消息队列系统

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

2.5 社交网络

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

原文链接

最新文章

  1. C++迪杰斯特拉算法求最短路径
  2. 基于显卡的光栅化渲染器Gaius计划
  3. Shell入门教程:命令替换 $() 和 ``
  4. IRLS(迭代加权最小二乘)
  5. [linux] mysql跨服务器访问, iptables设置
  6. UVa 136 Ugly Numbers【优先队列】
  7. servicestack操作redis
  8. FOR XML PATH 解决联接返回结果集各记录问题
  9. C# 获得两日期之间所有月份(包括跨年)
  10. python自学笔记(五)python文本操作
  11. Android使用开源项目Xutils实现多线程下载文件
  12. android 缩放平移自定义View 显示图片
  13. Spark SQL External DataSource简介
  14. Spring再接触 简单属性注入
  15. Solidity高级理论(二):Gas
  16. Entangle 2.0 “Sodium”正式发布
  17. MySQL保存历史执行语句
  18. 【Linux学习六】用户管理
  19. centos7下安装python3.7
  20. PHPUnit安装

热门文章

  1. Linux-saltstack-1 saltstack的安装与基本配置
  2. SQLAlchemy(十)
  3. JMeter_jmeter-plugins插件的安装使用
  4. django中使用支付宝
  5. js- float类型相减 出现无限小数的问题
  6. Linux上天之路(一)之Linux前世今生
  7. vue中form 表单常用校验封装(async-validator)
  8. vue爬坑之路(插件安装)
  9. POJCrossing River
  10. MongoDB之几种情况下的索引选择策略