问题描述

关于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

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

  1. spring boot redis 缓存(cache)集成

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

  2. 【Azure Redis 缓存 Azure Cache For Redis】Azure Redis由低级别(C)升级到高级别(P)的步骤和注意事项, 及对用户现有应用的潜在影响,是否需要停机时间窗口,以及这个时间窗口需要多少的预估问题

    问题描述 由于Azure Redis的性能在不同级别表现不同,当需要升级/缩放Redis的时候,从使用者的角度,需要知道有那些步骤? 注意事项? 潜在影响?停机事件窗口? 升级预估时间? 解决方案 从 ...

  3. 【Azure Redis 缓存】Linux虚拟机中使用6380端口(SSL方式)连接Azure Redis (redis-cli & stunnel)

    问题描述 在Azure Redis的官方文档中,介绍了在Windows下,如何通过redis-cli.exe连接Redis, 包含如何配置stunnel使得通过 6380,SSL方式连接到Redis ...

  4. spring-boot-2.0.3之redis缓存实现,不是你想的那样哦!

    前言 开心一刻 小白问小明:“你前面有一个5米深的坑,里面没有水,如果你跳进去后该怎样出来了?”小明:“躺着出来呗,还能怎么出来?”小白:“为什么躺着出来?”小明:“5米深的坑,还没有水,跳下去不死就 ...

  5. 使用方法拦截机制在不修改原逻辑基础上为 spring MVC 工程添加 Redis 缓存

    首先,相关文件:链接: https://pan.baidu.com/s/1H-D2M4RfXWnKzNLmsbqiQQ 密码: 5dzk 文件说明: redis-2.4.5-win32-win64.z ...

  6. Spring优雅整合Redis缓存

    “小明,多系统的session共享,怎么处理?”“Redis缓存啊!” “小明,我想实现一个简单的消息队列?”“Redis缓存啊!” “小明,分布式锁这玩意有什么方案?”“Redis缓存啊!” “小明 ...

  7. SpringBoot缓存管理(三) 自定义Redis缓存序列化机制

    前言 在上一篇文章中,我们完成了SpringBoot整合Redis进行数据缓存管理的工作,但缓存管理的实体类数据使用的是JDK序列化方式(如下图所示),不便于使用可视化管理工具进行查看和管理. 接下来 ...

  8. Windows下Redis缓存服务器的使用 .NET StackExchange.Redis Redis Desktop Manager

    Redis缓存服务器是一款key/value数据库,读110000次/s,写81000次/s,因为是内存操作所以速度飞快,常见用法是存用户token.短信验证码等 官网显示Redis本身并没有Wind ...

  9. 基于Redis缓存的Session共享(附源码)

    基于Redis缓存的Session共享(附源码) 在上一篇文章中我们研究了Redis的安装及一些基本的缓存操作,今天我们就利用Redis缓存实现一个Session共享,基于.NET平台的Seesion ...

随机推荐

  1. Linux基础命令列表

    命令列表 A alias apt apt-get arp -n -s arping ab B bc basename bash -n -x bzip2 bunzip2 bzcat blkid brct ...

  2. return i++ 是先用再加么

    return i++ 比较特殊,先是return i:然后i++. return i=i+ 1 则不同,它是先让i=i+1,再return

  3. error: Please reinstall the libzip distribution

    安装中遇到的问题 在运行 ./configure 时,提示: Please reinstall the libzip distribution 是因为 libzip 版本过低,编译升级 先卸载了原先的 ...

  4. Linux系列:快捷键、目录结构、用户目录

    一.快捷键 1.历史命令 查看历史命令:history [root@centos-master ~]# history 1 2020-10-25 21:03:39 2 2020-09-17 20:43 ...

  5. LinkedHashMap 实现LRU缓存

    date: 2020-07-09 13:52:00 updated: 2020-07-21 17:40:00 LinkedHashMap 实现LRU缓存 参考 LinkedHashMap是HashMa ...

  6. Raft协议备注

    Raft协议 Raft协议基于日志实现了一致性 实现备份的是机制:复制状态机Replicated State Machine,如果两个相同的.确定性的状态机从同一状态开始,以相同顺序输入相同的日志,则 ...

  7. leetcode学习总结

    转自https://leetcode-cn.com/ 1.两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以 ...

  8. JavaScript核心 Dom Bom

    <div id="time">2020-9-27</div> <script> //文档页面从上往下加载,先有标签才能获取元素对象,script ...

  9. WebService安全机制的思考与实践

    近来因业务需要,需要研究webservice,于是便有这篇文章:SpringBoot整合Apache-CXF实践 一.WebService是什么? WebService是一个平台独立的.低耦合的.自包 ...

  10. pip intsall 遇到的各种问题

    一.pip install 安装指定版本的包 要用pip 安装指定版本的python的包,只需要通过 == 操作符指定. pip install robotframework == 2.8.7 将安装 ...