首页 > 数据库 >1、简述redis特点及其应用场景

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

时间:2022-09-02 01:45:07浏览次数:65  
标签:功能 场景 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,简述,数据结构
From: https://www.cnblogs.com/biaoming534/p/16648389.html

相关文章

  • 2. 对比redis的RDB、AOF模式的优缺点
    2. 对比redis的RDB、AOF模式的优缺点 2.1 redis的RDB模式2.1.1RDB模式工作原理  RDB(RedisDataBase):基于时间的快照,其默认只保留当前最新的一次快照,特点......
  • 3.实现redis哨兵,模拟master故障场景
    3.实现redis哨兵,模拟master故障场景实验拓扑图  3.1哨兵的准备实现主从复制架构哨兵的前提是已经实现了一个redis的主从复制的运行环境,从而实现一个一主两从基于......
  • redis异地多活
    what:异地多活:简单来说,就是在不同地域建立数据中心,每个数据中心在日常使用中都需要正常接入业务流量,做业务支撑。异地多活,也属于分布式架构的系统。......
  • 使用golang实现Redis中间件
    (一).RESP协议解释  RESP协议在Redis1.2被引入,直到Redis2.0才成为和Redis服务器通信的标准。这个协议需要在你的Redis客户端实现。RESP是一个支持多种数据类型的序列化协......
  • GaussDB(for Redis)即将亮相华为云快成长直播间,让成本直降75%!
    “828选华为云,实惠更实用”。当前,华为云828B2B企业节正如火如荼进行中。旨在帮助企业解决数字化转型难题,加速千行百业云上创新的华为云快成长企业科技直播间同步精彩开播,......
  • Spring整合Redis(十八)
    一、Redis简介Redis是一款基于键值对的NoSQL数据库,它的值支持多种数据结构:字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sortedsets)等。Redi......
  • Redis使用 Redis封装
    封装Redis:一、application.properties:#过期日期:10800秒(3分钟)PitND.expire.pro=10800二、MainEventHERDMRedis.java:importorg.springframework.beans.facto......
  • 【Azure Redis 缓存】Azure Redis 功能性讨论三: 调优参数配置
    问题描述在使用AzureRedis的服务中,遇见了以下系列问题需要澄清:在开源Redis6.0中,多线程默认禁用,只使用主线程。如需开启需要修改redis.config配置文件。Redis的多线......
  • Redis 管理工具 - Redis Desktop Manager
     RedisDesktopManager可以轻松管理Redis桌面。为您提供了一个易于使用的GUI,可以访问您的Redis数据库并执行一些基本操作:将键视为树,CRUD键,通过shell执行命令。RESP.app......
  • RabbitMQ 入门系列:10、扩展内容:延时队列:延时队列插件及其有限的适用场景(系列大结局)。
    系列目录RabbitMQ入门系列:1、MQ的应用场景的选择与RabbitMQ安装。RabbitMQ入门系列:2、基础含义:链接、通道、队列、交换机。RabbitMQ入门系列:3、基础含义:持久化、......