什么是Redis

Redis是一种开源的内存数据结构,用作数据库、缓存和消息代理。它支持各种不同数据类型的存储,据我们了解,它主要用作缓存内容的一种方式,可以在以后快速高效地检索这些内容,从而减轻数据库服务器(如MySQL)的一些工作负载。

Redis并不是MySQL数据库的替代品,尽管Redis确实支持数据持久性,但它并不是真正设计成一个合适的数据库,并且可以与普通的更方便的风格的数据库并肩工作。

想了解更多Redis 点这里

我们要redis解决什么问题?

样例说明

示图如下

(1-1 没有redis)

图1-2 加了Redis

文字说明如下:

这有一个项目它由多个不同的组件组成。它由Web前端、API(Web前端使用)和java应用程序组成,我们称项目还拥有内部HTTP REST API,使用MySQL数据库后端进行数据存储和处理。在这个实验中,Web前端和Web API不是正在重要的,而是后端及它自己的内部REST API和它的数据处理。

该服务的流程是,用户通过发送加密过的API请求到REST API,API密钥在数据库中被查询,如果成功,则返回OK响应,然后用户可以继续向服务器发送POST数据,服务器通过引擎REST API再次接收这些数据,并进行处理和存储在数据库里。但是,当服务器收到请求数据时,需要检查用户上的一个计数器,以确保没有达到每月的配额,然后为收到的每个请求增加这个计数器。从数据处理方面来说,服务器要做大量的数据库工作。以下是可能需要的流程:

  • 接收HTTP请求
  • 以数据库为单位检查用户每月配额
  • 如果每月配额低于阈值,则处理并将数据存储在数据库中
  • 通过数据库增加用户每月配额计数器。
  • 会话过期-无需执行任何操作
    以上看起来不是什么大问题,但是如果我们每秒接收到几千个请求(这是可能的),那么服务器对于收到的每个请求,查询、存储和更新数据库将是一项大量的工作和开销,随着越来越多的用户请求,这可能会导致速度越来越慢。
    考虑到这一点,我们考虑了使用Redis为用户存储计数器的思想,然后唯一需要数据库工作的就是存储处理好的数据,在用户会话到期时更新最终的请求计数。
    因此,使用Redis的过程如下,同样包括初始化,在初始化阶段,我们将创建一个Redis密钥,它将是用户的某种标识符。

    • 接收HTTP请求
    • 在Redis中查看用户月配额
    • 如果低于每月报价,则将记录保存在数据库中
    • redis中增加配额计数器
    • 会话过期-将redis配额计数器刷新到数据库

正如上面看到的,步骤的数量是完全相同的,但是流程不是查询数据库,更新数据库中的配额,而是查询Redis,只在会话到期时使用Redis的计数器更新DB中的配额。测试性能对比

从上面的图表中可以看出,使用Redis存储和查询每个HTTP请求的配额,而不是在数据库中执行要快得多,事实上,在我们执行的每个脚本的5次运行中,我们看到完成的整个过程和将每条记录存储到DB中的时间都减少了51.4%。
从这个测试中,服务部分使用Redis可以明显提高服务器性能。

redis 计数器 java_Redis介绍相关推荐

  1. redis 计数器 java_Redis 的 8 大应用场景!

    之前讲过Redis的介绍,及使用Redis带来的优势,这章整理了一下Redis的应用场景,也是非常重要的,学不学得好,能正常落地是关键. 下面一一来分析下Redis的应用场景都有哪些. 1.缓存 缓存 ...

  2. redis 计数器 java_Redis 实践汇总和使用建议。

    ↑ 点击上面 "时代Java"关注我们, 关注新技术,学习新知识! 一.概述 Redis是一个开源的.基于内存的结构化存储媒介,可用作数据库.缓存.消息中间件. 它支持string ...

  3. Redis 连接命令介绍

    Redis 连接命令主要是用于连接 redis 服务. redis连接命令介绍 AUTH password 说明:AUTH命令用来检测给定的密码和配置文件中的密码是否相同 返回:如果密码匹配则返回OK ...

  4. [喵咪Redis]Redis安装与介绍

    [喵咪Redis]Redis安装与介绍 前言 哈喽大家好啊,这次要来和大家一起来了解学习Redis的一系列技术,最终目的是搭建一个高可用redis集群自动负载灾备,那我们先从最基础的Redis的一些基 ...

  5. Memcached 与Redis缓存服务器介绍

    Memcached缓存 简单介绍:memcached是高性能的分布式内存缓存服务器.一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度.提高可扩展性. Redis ...

  6. redis 启动_Redis介绍amp;安装amp;启动

    Redis介绍安装 Redis是一个开源的key-value存储系统, 支持存储的value类型相对更多,string(字符串),list(链表),set(集合),zset(sorted set 有序 ...

  7. string获取 倒数 下标_Redis系列:Redis字符串(STRING)介绍

    STRING APPEND 使用APPEND命令时,如果key已经存在,则会直接在value后追加值,如果key不存在,则会先创建一个value为空字符串的key,然后再追加: 127.0.0.1:6 ...

  8. Redis的配置文件介绍

    目录 1.开头说明 2.INCLUDES 3.MODULES 4.NETWORK 5.GENERAL 6.SNAPSHOTTING 7.REPLICATION 8.SECURITY 9.CLIENTS ...

  9. [Redis6]Redis相关知识介绍

    Redis介绍相关知识 端口6379 6379 是 "MERZ " 九宫格输入法对应的数字.Alessia Merz 是一位意大利舞女.女演员. Redis 作者 Antirez ...

最新文章

  1. 甲骨文全球大会•2010•北京议程
  2. Android平滑图片加载和缓存库Glide使用详解
  3. oracle 分析函数、GROUPING函数
  4. 史上最全Java面试266题:算法+缓存+TCP+JVM+搜索+分布式+数据库
  5. $lookup做关联表查询
  6. 你家猫砸东西是不是也专挑贵的砸?
  7. python函数的作用降低编程复杂度_Python函数式编程
  8. shell 提示符个性化设置
  9. 这六个问题,让物理学家寝食难安
  10. React 小案例 路由跳转
  11. Struts2的OGNL标签详解
  12. 前端监控和前端埋点方案设计
  13. redis缓存命中率计算
  14. matlab做nmf矩阵分解,进阶理解非负矩阵分解(NMF)
  15. 使用注册表reg文件修复git bash git gui 右键快捷方式
  16. Java8 新特性之流式数据处理
  17. 大数据的学习需要预先了解哪些基础知识?
  18. 【课堂笔记】模型制作流程
  19. 加油站的汽油是按什么分类的
  20. 学计算机电脑厚度23mm,轻薄机身兼具生产力!适合专业人士的轻薄笔记本电脑,了解下?...

热门文章

  1. ASP.NET的几个试题(《C#与.NET程序员面试宝典》)
  2. 找出Java进程中大量消耗CPU
  3. 从win到linux的小问题集锦(不断更新中)
  4. Android视频点播-边播边缓存-方案
  5. java冒泡排序 快速排序_Java必备-冒泡排序,选择排序,快速排序(纯代码实现)
  6. Try increasing heap size with java option '-Xmxlt;sizegt;’.
  7. 移动互联网实时视频通讯之视频采集
  8. 零基础编译ffmpeg到wasm
  9. android之数组排序
  10. 深度学习自学(二十四):华为Atlas人工智能计算平台