ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

1、简述redis特点及其应用场景

2022-09-02 02:02:50  阅读:253  来源: 互联网

标签:功能 场景 1.1 单线程 redis Redis 主从复制 简述 数据结构


1、简述redis特点及其应用场景

 

1.1 redis特点

速度快: 10W QPS,基于内存,C语言实现

单线程

持久化

支持多种数据结构

支持多种编程语言

功能丰富: 支持Lua脚本,发布订阅,事务,pipeline等功能

简单: 代码短小精悍(单机核心代码只有23000行左右),单线程开发容易,不依赖外部库,使用简单。

主从复制

支持高可用和分布式

 

 

1.1.1速度快

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

Redis是用C语言实现的,而众所周知,C语言是“距离”操作系统最近的的编程语言,执行速度快

Redis采用了单线程的架构(这点很容易遗忘,但是是Redis的最重要特性),避免了多线程的资源竞争问题

Redis的源码非常精简,可以说是集性能和优雅于一身的代码

 

1.1.2 单线程

Redis 6.0版本前一直是单线程方式处理用户的请求。

 

单线程为何如此快?

纯内存

非阻塞

避免线程切换和竞态消耗

 

注意事项:

一次只运行一条命令

拒绝长(慢)命令:keys, flushall, flushdb, slow lua script, mutil/exec, operate big value(collection)

其实不是单线程: 早期版本是单进程单线程,3版本后实际还有其它的线程, 实现特定功能,如: fysnc file descriptor,close file descriptor

 

 

1.1.3持久化

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

 

 

1.2.4 丰富的功能

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

提供了key过期的功能,这能运用于实现缓存

提供了发布订阅的功能,可运用于消息队列,如celery

支持lua脚本功能,当觉得Redis的命令实现功能不够时,就能利用lua来创建新的功能

提供了简单的事务功能,不过不能支持回滚,但也能一定程度上保持事务的特性

提供了pipeling功能,这样客户端可以将多条命令一次io,减少了网络的开销

 

1.1.5 简单稳定

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

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

 

1.1.6 客户端语言多

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

 

1.1.7主从复制

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

 

1.1.8高可用和分布式

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

 

1.1.9 基于键值对的服务器

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

 

 

 

 

1.2 Redis的应用场景

 

Session 共享:常见于web集群中的Tomcat或者PHP中多web服务器session共享。

 

缓存:数据查询、电商网站商品信息、新闻内容。

 

计数器:访问排行榜、商品浏览数等和次数相关的数值统计场景。

 

微博/微信社交场合:共同好友,粉丝数,关注,点赞评论等。

 

消息队列:ELK的日志缓存、部分业务的订阅发布系统。

 

地理位置: 基于GEO(地理信息定位),实现摇一摇,附近的人,外卖等功能。

 

 

标签:功能,场景,1.1,单线程,redis,Redis,主从复制,简述,数据结构
来源: https://www.cnblogs.com/biaoming534/p/16648389.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有