简述redis特点及其应用场景

简述redis特点及其应用场景

    • 1.Redis 特性
      • 1.1.单线程(处理客户端请求)
    • 2.redis 典型应用场景

简述redis特点及其应用场景_第1张图片

1.Redis 特性

  • 速度快: 10W QPS,基于内存,C语言实现
  • 单线程(目前已近支持多线程)
  • 持久化(虽然基于内存,但是具有写入磁盘能力,做到断电不丢)
  • 支持多种数据结构
  • 支持多种编程语言
  • 功能丰富: 支持Lua脚本,发布订阅,事务,pipeline(流水线)等功能
  • 简单: 代码短小精悍(单机核心代码只有23000行左右),单线程开发容易,不依赖外部库,使用简单
  • 主从复制
  • 支持高可用和分布式

1.1.单线程(处理客户端请求)

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

image-20220721182404385

单线程为何如此快?

  • 纯内存
  • 非阻塞
  • 避免线程切换和竞态消耗

因为存的数据都比较小,运算速率比较高,单线程反而可以避免切换CPU浪费时间,为了可以提高效率可以实行多实例,一个CPU跑一个实例。

简述redis特点及其应用场景_第2张图片

注意事项:

  • 一次只运行一条命令
  • 拒绝长(慢)命令:keys, flushall, flushdb, slow lua script, mutil/exec, operate big value(collection),排队时间很长。
  • 其实不是单线程: 早期版本是单进程单线程,3版本后实际还有其它的线程, 实现特定功能,如: fysncfile descriptor,close file descriptor

2.redis 典型应用场景

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

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

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

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

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

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

    简述redis特点及其应用场景_第3张图片

简述redis特点及其应用场景_第4张图片

你可能感兴趣的:(sre,redis,lua,数据库)