【Azure Redis 缓存 Azure Cache For Redis】使用Redis自带redis-benchmark.exe命令测试Azure Redis的性能

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 【Azure Redis 缓存 Azure Cache For Redis】使用Redis自带redis-benchmark.exe命令测试Azure Redis的性能

问题描述

关于Azure Redis的性能问题,在官方文档中,可以查看到不同层级Redis的最大连接数,每秒处理请求的性能。

基本缓存和标准缓存
  • C0 (250 MB) 缓存 - 最多支持 256 个连接
  • C1 (1 GB) 缓存 - 最多支持 1,000 个连接
  • C2 (2.5 GB) 缓存 - 最多支持 2,000 个连接
  • C3 (6 GB) 缓存 - 最多支持 5,000 个连接
  • C4 (13 GB) 缓存 - 最多支持 10,000 个连接
  • C5 (26 GB) 缓存 - 最多支持 15,000 个连接
  • C6 (53 GB) 缓存 - 最多支持 20,000 个连接
高级缓存
  • P1 (6 GB - 60 GB) - 最多支持 7,500 个连接
  • P2 (13 GB - 130 GB) - 最多支持 15,000 个连接
  • P3 (26 GB - 260 GB) - 最多支持 30,000 个连接
  • P4 (53 GB - 530 GB) - 最多支持 40,000 个连接

标准缓存大小     兆位/秒(Mb/秒)/兆字节/秒(MB/秒) 非 SSL 请求数/秒 (RPS) SSL 请求数/秒 (RPS)
C0 250 MB 共享 100/12.5 15,000 7,500
C1 1 GB 1 500/62.5 38,000 20,720
C2 2.5 GB 2 500/62.5 41,000 37,000
C3 6 GB 4 1000/125 100,000 90,000
C4 13 GB 2 500/62.5 60,000 55,000
C5 26 GB 4 1,000 / 125 102,000 93,000
C6 53 GB 8 2,000 / 250 126,000 120,000
定价层 大小 CPU 核心数 可用带宽 1 KB 值大小 1 KB 值大小

高级缓存大小   每个分片的 CPU 核心数 兆位/秒(Mb/秒)/兆字节/秒(MB/秒) 每分片非 SSL 请求数/秒 (RPS) 每分片 SSL 请求数/秒 (RPS)
P1 6 GB 2 1,500 / 187.5 180,000 172,000
P2 13 GB 4 3,000 / 375 350,000 341,000
P3 26 GB 4 3,000 / 375 350,000 341,000
P4 53 GB 8 6,000 / 750 400,000 373,000
P5 120 GB 20 6,000 / 750 400,000 373,000

 

但以上的数据只是官方发布的数据,如果在排除业务的情况下,如何单独对Redis服务器进行测试呢?如果需要验证Redis的性能,如何来做呢?

答案就是使用redis-benchmark.exe,在Azure Redis的常规问答中,有简单的提到如何来做性能测试,但只是一句话,一个命令一晃而过。

如何进行基准检验和测试缓存的性能?

  • 启用缓存诊断,以便可以监视缓存的运行状况。 可以在 Azure 门户中查看指标,也可以使用所选的工具下载和查看这些指标。
  • 可以使用 redis-benchmark.exe 对 Redis 服务器进行负载测试。
  • 确保负载测试客户端和 Azure Redis 缓存位于同一区域。
  • 使用 redis-cli.exe,并使用 INFO 命令监视缓存。
  • 如果负载导致出现大量内存碎片,则你应该扩展为更大的缓存大小。
  • 有关下载 Redis 工具的说明,请参阅如何运行 Redis 命令?部分。

 

 

本章的内容就是从下载Redis-benchmark.exe开始,到使用命令完成测试。

一:下载Redis-benchmark.exe

在Github中找到Redis:https://github.com/microsoftarchive/redis/releases,下载最新的ZIP包并解压( 如:Redis-x64-3.2.100.zip)

二:使用Azure Reids的访问密钥开启测试

从Azure的Redis门户中复制出连接字符串,把redis name和access key填充到如下命令

redis-benchmark.exe -h **yourcache**.redis.cache.chinacloudapi.cn -a **yourAccesskey** -c 10 -n 10



以上命令只是简单的发起一轮默认命令的测试(如ping,set,get,pop,push等),-c表示10个并发,-n表示10个请求。

在本机中运行redis-benchmark命令测试:

同时,我们也可以使用-t来指定用于测试的操作,如set,get。参考命令如下:

redis-benchmark.exe -h **yourcache**.redis.cache.chinacloudapi.cn -a **yourAccesskey** -t SET -n 1000000 -d 1024 -P 50
redis-benchmark.exe -h **yourcache**.redis.cache.chinacloudapi.cn -a **yourAccesskey** -t GET -n 1000000 -d 1024 -P 50


如需要使用SSL对Azure Redis进行6380端口的性能测试,则需要先确保本地安装了stunnel.exe并配置好redis-cli客户端信息

  • 使用redis-cli确认是否已经连接

  • 如能成功访问到6380端口,则可以使用如下命令开始测试

redis-benchmark.exe -a **your access key** -c 10 -n 10 -p 6380

测试的效果对比如下

6379 非SSL测试 6380 SSL测试

C:\redis>redis-benchmark.exe -h yourredisname.redis.cache.chinacloudapi.cn -a **youraccesskey** -c 10 -n 10

====== PING_INLINE ======

10 requests completed in 0.47 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 198 milliseconds

50.00% <= 219 milliseconds

60.00% <= 238 milliseconds

100.00% <= 261 milliseconds

21.46 requests per second

====== PING_BULK ======

10 requests completed in 0.49 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 198 milliseconds

20.00% <= 200 milliseconds

30.00% <= 205 milliseconds

40.00% <= 228 milliseconds

50.00% <= 230 milliseconds

60.00% <= 235 milliseconds

100.00% <= 236 milliseconds

20.62 requests per second

====== SET ======

10 requests completed in 0.46 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 198 milliseconds

20.00% <= 201 milliseconds

30.00% <= 203 milliseconds

40.00% <= 204 milliseconds

50.00% <= 206 milliseconds

80.00% <= 210 milliseconds

90.00% <= 212 milliseconds

100.00% <= 215 milliseconds

21.79 requests per second

====== GET ======

10 requests completed in 0.44 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 205 milliseconds

50.00% <= 218 milliseconds

60.00% <= 222 milliseconds

80.00% <= 223 milliseconds

90.00% <= 224 milliseconds

100.00% <= 228 milliseconds

22.68 requests per second

====== INCR ======

10 requests completed in 0.44 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 197 milliseconds

20.00% <= 203 milliseconds

30.00% <= 205 milliseconds

40.00% <= 216 milliseconds

70.00% <= 218 milliseconds

90.00% <= 227 milliseconds

100.00% <= 233 milliseconds

22.99 requests per second

====== LPUSH ======

10 requests completed in 0.44 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 199 milliseconds

30.00% <= 204 milliseconds

60.00% <= 209 milliseconds

90.00% <= 227 milliseconds

100.00% <= 227 milliseconds

22.68 requests per second

====== RPUSH ======

10 requests completed in 0.43 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 197 milliseconds

40.00% <= 207 milliseconds

50.00% <= 208 milliseconds

60.00% <= 209 milliseconds

90.00% <= 211 milliseconds

100.00% <= 218 milliseconds

23.47 requests per second

====== LPOP ======

10 requests completed in 0.43 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 198 milliseconds

20.00% <= 199 milliseconds

80.00% <= 207 milliseconds

90.00% <= 208 milliseconds

100.00% <= 208 milliseconds

23.42 requests per second

====== RPOP ======

10 requests completed in 0.42 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 200 milliseconds

30.00% <= 201 milliseconds

60.00% <= 202 milliseconds

70.00% <= 207 milliseconds

80.00% <= 209 milliseconds

90.00% <= 211 milliseconds

100.00% <= 211 milliseconds

24.04 requests per second

====== SADD ======

10 requests completed in 0.43 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 196 milliseconds

20.00% <= 197 milliseconds

40.00% <= 199 milliseconds

50.00% <= 200 milliseconds

60.00% <= 203 milliseconds

70.00% <= 204 milliseconds

90.00% <= 210 milliseconds

100.00% <= 218 milliseconds

23.26 requests per second

====== SPOP ======

10 requests completed in 0.41 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 203 milliseconds

20.00% <= 204 milliseconds

50.00% <= 205 milliseconds

60.00% <= 206 milliseconds

90.00% <= 209 milliseconds

100.00% <= 210 milliseconds

24.15 requests per second

====== LPUSH (needed to benchmark LRANGE) ======

10 requests completed in 0.41 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 203 milliseconds

20.00% <= 204 milliseconds

30.00% <= 208 milliseconds

40.00% <= 209 milliseconds

50.00% <= 213 milliseconds

70.00% <= 214 milliseconds

80.00% <= 215 milliseconds

100.00% <= 215 milliseconds

24.15 requests per second

====== LRANGE_100 (first 100 elements) ======

10 requests completed in 0.44 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 198 milliseconds

30.00% <= 199 milliseconds

40.00% <= 200 milliseconds

50.00% <= 201 milliseconds

60.00% <= 210 milliseconds

80.00% <= 211 milliseconds

90.00% <= 212 milliseconds

100.00% <= 212 milliseconds

22.88 requests per second

====== LRANGE_300 (first 300 elements) ======

10 requests completed in 0.45 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 196 milliseconds

20.00% <= 197 milliseconds

40.00% <= 202 milliseconds

50.00% <= 203 milliseconds

60.00% <= 207 milliseconds

80.00% <= 208 milliseconds

90.00% <= 209 milliseconds

100.00% <= 210 milliseconds

22.27 requests per second

====== LRANGE_500 (first 450 elements) ======

10 requests completed in 0.43 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 196 milliseconds

20.00% <= 197 milliseconds

30.00% <= 198 milliseconds

40.00% <= 212 milliseconds

80.00% <= 226 milliseconds

100.00% <= 227 milliseconds

23.15 requests per second

====== LRANGE_600 (first 600 elements) ======

10 requests completed in 0.46 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 199 milliseconds

30.00% <= 223 milliseconds

50.00% <= 225 milliseconds

70.00% <= 229 milliseconds

90.00% <= 232 milliseconds

100.00% <= 242 milliseconds

21.88 requests per second

====== MSET (10 keys) ======

10 requests completed in 0.43 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 202 milliseconds

50.00% <= 217 milliseconds

70.00% <= 219 milliseconds

80.00% <= 228 milliseconds

90.00% <= 233 milliseconds

100.00% <= 234 milliseconds

23.20 requests per second

C:\redis>redis-benchmark.exe -a **youraccesskey** -c 10 -n 10 -p 6380

====== PING_INLINE ======

10 requests completed in 0.88 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 597 milliseconds

20.00% <= 615 milliseconds

30.00% <= 827 milliseconds

40.00% <= 841 milliseconds

50.00% <= 842 milliseconds

80.00% <= 868 milliseconds

90.00% <= 869 milliseconds

100.00% <= 869 milliseconds

11.30 requests per second

====== PING_BULK ======

10 requests completed in 0.96 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 646 milliseconds

20.00% <= 651 milliseconds

30.00% <= 671 milliseconds

40.00% <= 678 milliseconds

50.00% <= 679 milliseconds

60.00% <= 712 milliseconds

70.00% <= 868 milliseconds

80.00% <= 869 milliseconds

90.00% <= 948 milliseconds

100.00% <= 963 milliseconds

10.37 requests per second

====== SET ======

10 requests completed in 0.89 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 628 milliseconds

20.00% <= 629 milliseconds

50.00% <= 632 milliseconds

70.00% <= 633 milliseconds

80.00% <= 851 milliseconds

90.00% <= 865 milliseconds

100.00% <= 887 milliseconds

11.25 requests per second

====== GET ======

10 requests completed in 0.88 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 618 milliseconds

30.00% <= 643 milliseconds

50.00% <= 847 milliseconds

70.00% <= 848 milliseconds

80.00% <= 852 milliseconds

90.00% <= 882 milliseconds

100.00% <= 882 milliseconds

11.33 requests per second

====== INCR ======

10 requests completed in 0.89 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 612 milliseconds

30.00% <= 620 milliseconds

40.00% <= 645 milliseconds

50.00% <= 663 milliseconds

60.00% <= 672 milliseconds

70.00% <= 866 milliseconds

90.00% <= 872 milliseconds

100.00% <= 894 milliseconds

11.17 requests per second

====== LPUSH ======

10 requests completed in 0.93 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 616 milliseconds

20.00% <= 638 milliseconds

30.00% <= 666 milliseconds

40.00% <= 810 milliseconds

50.00% <= 848 milliseconds

60.00% <= 864 milliseconds

70.00% <= 885 milliseconds

90.00% <= 919 milliseconds

100.00% <= 920 milliseconds

10.73 requests per second

====== RPUSH ======

10 requests completed in 0.99 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 587 milliseconds

20.00% <= 611 milliseconds

30.00% <= 623 milliseconds

40.00% <= 627 milliseconds

50.00% <= 676 milliseconds

60.00% <= 806 milliseconds

70.00% <= 807 milliseconds

80.00% <= 827 milliseconds

90.00% <= 913 milliseconds

100.00% <= 971 milliseconds

10.15 requests per second

====== LPOP ======

10 requests completed in 0.88 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 644 milliseconds

30.00% <= 651 milliseconds

60.00% <= 655 milliseconds

70.00% <= 847 milliseconds

90.00% <= 865 milliseconds

100.00% <= 874 milliseconds

11.43 requests per second

====== RPOP ======

10 requests completed in 2.65 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 687 milliseconds

20.00% <= 688 milliseconds

30.00% <= 766 milliseconds

50.00% <= 775 milliseconds

60.00% <= 916 milliseconds

70.00% <= 917 milliseconds

80.00% <= 923 milliseconds

90.00% <= 1576 milliseconds

100.00% <= 2647 milliseconds

3.78 requests per second

====== SADD ======

10 requests completed in 0.98 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 636 milliseconds

20.00% <= 637 milliseconds

40.00% <= 653 milliseconds

50.00% <= 708 milliseconds

70.00% <= 897 milliseconds

80.00% <= 945 milliseconds

90.00% <= 946 milliseconds

100.00% <= 946 milliseconds

10.26 requests per second

====== SPOP ======

10 requests completed in 0.95 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 607 milliseconds

20.00% <= 634 milliseconds

30.00% <= 661 milliseconds

40.00% <= 669 milliseconds

50.00% <= 671 milliseconds

60.00% <= 681 milliseconds

70.00% <= 843 milliseconds

80.00% <= 927 milliseconds

100.00% <= 946 milliseconds

10.55 requests per second

====== LPUSH (needed to benchmark LRANGE) ======

10 requests completed in 0.90 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 614 milliseconds

20.00% <= 630 milliseconds

30.00% <= 641 milliseconds

40.00% <= 642 milliseconds

60.00% <= 646 milliseconds

70.00% <= 857 milliseconds

80.00% <= 893 milliseconds

90.00% <= 896 milliseconds

100.00% <= 896 milliseconds

11.05 requests per second

====== LRANGE_100 (first 100 elements) ======

10 requests completed in 0.92 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 573 milliseconds

20.00% <= 605 milliseconds

30.00% <= 606 milliseconds

40.00% <= 624 milliseconds

50.00% <= 634 milliseconds

60.00% <= 671 milliseconds

70.00% <= 800 milliseconds

80.00% <= 804 milliseconds

90.00% <= 805 milliseconds

100.00% <= 897 milliseconds

10.89 requests per second

====== LRANGE_300 (first 300 elements) ======

10 requests completed in 1.00 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 630 milliseconds

20.00% <= 671 milliseconds

40.00% <= 888 milliseconds

70.00% <= 954 milliseconds

80.00% <= 984 milliseconds

90.00% <= 995 milliseconds

100.00% <= 995 milliseconds

10.03 requests per second

====== LRANGE_500 (first 450 elements) ======

10 requests completed in 0.85 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 572 milliseconds

20.00% <= 573 milliseconds

30.00% <= 579 milliseconds

40.00% <= 594 milliseconds

60.00% <= 604 milliseconds

70.00% <= 780 milliseconds

80.00% <= 802 milliseconds

100.00% <= 819 milliseconds

11.72 requests per second

====== LRANGE_600 (first 600 elements) ======

10 requests completed in 0.91 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 566 milliseconds

30.00% <= 629 milliseconds

40.00% <= 634 milliseconds

50.00% <= 812 milliseconds

60.00% <= 836 milliseconds

70.00% <= 851 milliseconds

80.00% <= 867 milliseconds

90.00% <= 873 milliseconds

100.00% <= 880 milliseconds

10.96 requests per second

====== MSET (10 keys) ======

10 requests completed in 0.89 seconds

10 parallel clients

3 bytes payload

keep alive: 1

10.00% <= 606 milliseconds

20.00% <= 619 milliseconds

30.00% <= 625 milliseconds

40.00% <= 667 milliseconds

60.00% <= 851 milliseconds

70.00% <= 875 milliseconds

80.00% <= 878 milliseconds

90.00% <= 886 milliseconds

100.00% <= 888 milliseconds

11.24 requests per second

PS: 在SSL的情况下,每秒处理请求的能下有明显的下降。

 

三:对Redis Benchmark命令中携带参数的介绍

Usage: redis-benchmark [-h <host>] [-p <port>] [-c <clients>] [-n <requests]> [-k <boolean>]

-h <hostname>      Server hostname (default 127.0.0.1)
 -p <port>          Server port (default 6379)//默认情况下,都使用6379端口,因Azure Redis默认只开通了6380端口,进行SSL通信。所以需要在Azure Redis门户中允许6379端口的非SSL访问。
 -s <socket>        Server socket (overrides host and port)
 -a <password>      Password for Redis Auth
 -c <clients>       Number of parallel connections (default 50)
 -n <requests>      Total number of requests (default 100000)
 -d <size>          Data size of SET/GET value in bytes (default 2)
 --dbnum <db>       SELECT the specified db number (default 0)
 -k <boolean>       1=keep alive 0=reconnect (default 1)
 -r <keyspacelen>   Use random keys for SET/GET/INCR, random values for SADD
  Using this option the benchmark will expand the string __rand_int__
  inside an argument with a 12 digits number in the specified range
  from 0 to keyspacelen-1. The substitution changes every time a command
  is executed. Default tests use this to hit random keys in the
  specified range.
 -P <numreq>        Pipeline <numreq> requests. Default 1 (no pipeline).
 -q                 Quiet. Just show query/sec values
 --csv              Output in CSV format
 -l                 Loop. Run the tests forever
 -t <tests>         Only run the comma separated list of tests. The test
                    names are the same as the ones produced as output.
 -I                 Idle mode. Just open N idle connections and wait.

 

 

参考资料:

Redis Release: https://github.com/microsoftarchive/redis/releases

如何进行基准检验和测试缓存的性能: https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-management-faq#how-can-i-benchmark-and-test-the-performance-of-my-cache

How fast is Redis: https://redis.io/topics/benchmarks

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
5天前
|
测试技术 数据库 UED
Python 性能测试进阶之路:JMeter 与 Locust 的强强联合,解锁性能极限
【9月更文挑战第9天】在数字化时代,确保软件系统在高并发场景下的稳定性至关重要。Python 为此提供了丰富的性能测试工具,如 JMeter 和 Locust。JMeter 可模拟复杂请求场景,而 Locust 则能更灵活地模拟真实用户行为。结合两者优势,可全面评估系统性能并优化瓶颈。例如,在电商网站促销期间,通过 JMeter 模拟大量登录请求并用 Locust 模拟用户浏览和购物行为,可有效识别并解决性能问题,从而提升系统稳定性和用户体验。这种组合为性能测试开辟了新道路,助力应对复杂挑战。
20 2
|
16天前
|
缓存 NoSQL Java
Redis深度解析:解锁高性能缓存的终极武器,让你的应用飞起来
【8月更文挑战第29天】本文从基本概念入手,通过实战示例、原理解析和高级使用技巧,全面讲解Redis这一高性能键值对数据库。Redis基于内存存储,支持多种数据结构,如字符串、列表和哈希表等,常用于数据库、缓存及消息队列。文中详细介绍了如何在Spring Boot项目中集成Redis,并展示了其工作原理、缓存实现方法及高级特性,如事务、发布/订阅、Lua脚本和集群等,帮助读者从入门到精通Redis,大幅提升应用性能与可扩展性。
39 0
|
1天前
|
存储 NoSQL Redis
SpringCloud基础7——Redis分布式缓存,RDB,AOF持久化+主从+哨兵+分片集群
Redis持久化、RDB和AOF方案、Redis主从集群、哨兵、分片集群、散列插槽、自动手动故障转移
SpringCloud基础7——Redis分布式缓存,RDB,AOF持久化+主从+哨兵+分片集群
|
8天前
|
存储 Java 关系型数据库
“代码界的魔法师:揭秘Micronaut框架下如何用测试驱动开发将简单图书管理系统变成性能怪兽!
【9月更文挑战第6天】Micronaut框架凭借其轻量级和高性能特性,在Java应用开发中备受青睐。本文通过一个图书管理系统的案例,介绍了在Micronaut下从单元测试到集成测试的全流程。首先,我们使用`@MicronautTest`注解编写了一个简单的`BookService`单元测试,验证添加图书功能;接着,通过集成测试验证了`BookService`与数据库的交互。整个过程展示了Micronaut强大的依赖注入和测试支持,使测试编写变得更加高效和简单。
25 4
|
11天前
|
缓存 NoSQL 关系型数据库
MySQL与Redis缓存一致性的实现与挑战
在现代软件开发中,MySQL作为关系型数据库管理系统,广泛应用于数据存储;而Redis则以其高性能的内存数据结构存储特性,常被用作缓存层来提升数据访问速度。然而,当MySQL与Redis结合使用时,确保两者之间的数据一致性成为了一个重要且复杂的挑战。本文将从技术角度分享MySQL与Redis缓存一致性的实现方法及其面临的挑战。
34 2
|
20天前
【Azure App Service】同一个App Service下创建多个测试站点的方式
【Azure App Service】同一个App Service下创建多个测试站点的方式
|
20天前
|
消息中间件 Kafka 测试技术
【Azure 事件中心】使用Kafka的性能测试工具(kafka-producer-perf-test)测试生产者发送消息到Azure Event Hub的性能
【Azure 事件中心】使用Kafka的性能测试工具(kafka-producer-perf-test)测试生产者发送消息到Azure Event Hub的性能
|
14天前
|
Java UED Maven
紧跟技术潮流:手把手教你构建响应式Vaadin应用,让用户体验无缝接轨!
【8月更文挑战第31天】本文从零开始,详细介绍如何使用强大的Java框架Vaadin构建流畅且响应式的Web应用程序。首先,确保安装JDK 1.8+、Maven 3.3.9+及IDE。接着,创建Maven项目并添加Vaadin依赖。然后,通过继承`UI`类创建主界面,并定义自定义主题与样式。利用Vaadin的响应式布局组件,如`HorizontalLayout`和`VerticalLayout`,实现多设备兼容性。
24 0
|
14天前
|
缓存 NoSQL Redis
Entity Framework Core 与 Redis 强强联手!实现高速缓存,提升应用性能超厉害
【8月更文挑战第31天】在现代应用开发中,结合 Entity Framework Core 与 Redis 可显著提升数据访问速度。Entity Framework Core 是一个强大的 ORM 框架,但处理频繁访问的数据时可能遇到性能瓶颈。Redis 作为高性能内存数据库,具备快速读写能力。两者结合利用 Redis 高速缓存,减少直接数据库访问,提高应用响应速度及性能。
22 0
|
16天前
|
缓存 NoSQL Java
惊!Spring Boot遇上Redis,竟开启了一场缓存实战的革命!
【8月更文挑战第29天】在互联网时代,数据的高速读写至关重要。Spring Boot凭借简洁高效的特点广受开发者喜爱,而Redis作为高性能内存数据库,在缓存和消息队列领域表现出色。本文通过电商平台商品推荐系统的实战案例,详细介绍如何在Spring Boot项目中整合Redis,提升系统响应速度和用户体验。
41 0