RDB和AOF速度测试

同一台机器测试

Redis3.2
Redis5.0.7
Linux python 3.10.0-693.11.1.el7.x86_64 #1 SMP Mon Dec 4 23:52:40 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

rdb测试步骤

1. 修改redis.conf配置文件

  1. 开启rdb(测试aof时,注释掉rdb,并重启redis)
# save ""
save 900 1
save 300 10
save 60 10000
注入数据#默认开启数据压缩rdbcompression yes
  1. 关闭aof
appendonly no

2. 写入数据

#!/bin/bash
for ((i=0;i<100000;i++))
do
echo -en "helloworld" | redis-cli -x set name$i >>redis.log
done

3. 使用脚本写入数据,并计算注入完成时间

数据量rdb时间rdb文件大小
5000076s1.1M
100000197s2.1M
150000235s3.1M
200000305s4.3M
数据量aof时间aof文件大小
5000079s2.2M
100000156s6.5M
150000234s6.6M
200000306s8.8M

redis5.0版本测试

数据量rdb时间rdb文件大小
5000099s1.1M
100000150s2.1M
150000296s3.2M
数据量aof时间aof文件大小
5000098s2.2M
100000156s6.5M
150000305s6.7M

一个没有数据的redis,使用脚本写入数据,完成后查看持久化文件

操作步骤记录

脚本及使用


[kou@python src]$ sh 1.sh 
本次运行时间: 76s
[kou@python src]$ !du
du -sh ./dump.rdb 
1.1M	./dump.rdb
[kou@python src]$ cat 1.sh 
#!/bin/bashstarttime=`date +'%Y-%m-%d %H:%M:%S'`
#执行程序
for ((i=0;i<50000;i++))
doecho -en "helloworld" | /home/kou/redis_tar/redis-3.2.10/src/redis-cli -p 6379 -x set name$i >>redis.log
doneendtime=`date +'%Y-%m-%d %H:%M:%S'`
start_seconds=$(date --date="$starttime" +%s);
end_seconds=$(date --date="$endtime" +%s);
echo "本次运行时间: "$((end_seconds-start_seconds))"s"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/382325.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LInux操作系统之SIGCHLD信号

&#xff08;1&#xff09;SIGCHLD产生条件 1&#xff09;子进程终止的时候 2&#xff09;子进程接收到SIGSTOP信号停止时 3&#xff09;子进程处于停止状态&#xff0c;接受到SIGCONT后唤醒 &#xff08;2&#xff09;借助SIGCHLD使用waitpid信号实现父进程对子进程的回收 &a…

rdb和aof到底哪个快

rdb和aof到底哪个快&#xff1f; 大多数情况rdb比aof快&#xff01;取决因素是fsync策略 具体选择aof还是rdb应根据业务场景选择。纠结于两者哪个更快意义不大 测试数据 数据量rdb时间rdb文件大小5000076s1.1M100000197s2.1M150000235s3.1M200000305s4.3M 数据量aof时间ao…

linux操作系统之终端

&#xff08;1&#xff09;终端分类&#xff1a; AltCtrlF1~F6 字符终端 pts :伪终端 AltCtrlF7 图形终端 SSH&#xff0c;Telnet 网路终端 &#xff08;2&#xff09;终端的启动流程 每一个进程都可以通过一个特殊的设备文件/dev/tty访问它的控制终端&#x…

golang实现聊天室(一)

一个简单的tcp通讯 客户端发一下&#xff0c;服务端收一下打印 客户端 func main() {var conn, err net.DialTimeout("tcp", "127.0.0.1:8888", 30*time.Second)if err ! nil {return}conn.Write([]byte("string not "))conn.Close() }服务端 …

linux操作系统之进程组及会话

&#xff08;1&#xff09;进程组&#xff08;作业&#xff09;&#xff1a;代表一个或多个进程的集合。 1)父进程创建子进程时&#xff0c;默认子进程与父进程属于同一进程组&#xff0c;进程组id第一个进程id(组长id,父进程id)。 2)使用kill -SIGKILL -进程组id(负数&#xf…

golang实现聊天室(二)

golang实现聊天室&#xff08;二&#xff09; 上一篇完成了服务端启动监听连接&#xff0c;客户端建立连接&#xff0c;发一个消息&#xff0c;断开连接。服务端收一下&#xff0c;然后服务端打印。 客户端可以一直发送消息&#xff0c;服务端不停接收并打印 client func mai…

golang实现聊天室(三)

golang实现聊天室&#xff08;三&#xff09; 实现多个客户端同时给服务端发送消息&#xff0c;服务端接受并打印出来 client1 func main() {var conn, err net.DialTimeout("tcp", "127.0.0.1:5888", 30*time.Second)if err ! nil {log.Fatal("conn…

linux操作系统之线程同步及互斥量

&#xff08;1&#xff09;线程同步 1&#xff09;线程同步&#xff1a;指一个线程发出某一个功能运行时&#xff0c;在运行还没有结束的时候&#xff0c;该调用不返回。同时其它线程为保证数据的一致性&#xff0c;不能调用该功能。 2&#xff09;多个控制流共同操作一个共享资…

golang实现聊天室(四)

golang实现聊天室&#xff08;四&#xff09; 服务端给已经建立连接的客户端发送消息 client1 func main() {var conn, err net.DialTimeout("tcp", "127.0.0.1:6888", 30*time.Second)if err ! nil {log.Fatal("conn error")}for {conn.Write…

linux操作系统之读写锁

&#xff08;1&#xff09;读写锁&#xff1a;只有一把锁&#xff0c;但是有两种状态&#xff08;读&#xff0c;写&#xff09; 1&#xff09;读写锁的三种状态&#xff1a;读锁&#xff0c;写锁&#xff0c;不加锁 2&#xff09;读写锁特性&#xff08;12字&#xff09;&…

golang实现聊天室(五)

golang实现聊天室&#xff08;五&#xff09; 完成服务端广播消息 server package mainimport ("fmt""log""math/rand""net" )type Client_list struct {list map[net.Conn]string }func main() {client_list : Client_list{make(map…

linux操作系统之条件变量

&#xff08;1&#xff09;条件变量 条件变量本身不是锁&#xff0c;但它可以造成线程阻塞&#xff0c;通常与互斥锁配合使用。 &#xff08;2&#xff09;条件锁相关函数 pthread_cond_t类型&#xff0c;用于定义条件变量 1&#xff09;初始化一个条件变量&#xff1a;pthrea…

7. 整数反转 golang

官解 func reverse(x int) ( num int) {for x ! 0 {num num*10 x%10x x / 10}// 使用 math 包中定义好的最大最小值if num > math.MaxInt32 || num < math.MinInt32 {return 0}return }Me func reverse(x int) int {if x < 0 {return -1 * reverse_fun(-x)} else…

linux操作系统之信号量、互斥量在进程间的同步、文件锁

&#xff08;1&#xff09;信号量&#xff1a;进化版的互斥量 多个线程间对某个对象的部分数据进行共享&#xff0c;使用互斥锁是没有办法实现的&#xff0c;只能将整个数据对象锁住。这样虽然达到了多线程操作数据共享的目的&#xff0c;却导致线程并发性下降。 信号量&#x…

linux网络编程之网络应用设计模式、分层模型、通信过程

&#xff08;1&#xff09;网络协议 可以理解为规则&#xff0c;其中包含着数据传输和数据的解释。 典型的协议&#xff1a;传输层&#xff1a;tcp/udp协议&#xff0c;应用层&#xff1a;http/ftp协议&#xff0c;网络层&#xff1a;ip协议&#xff0c;网路接口&#xff1a;ar…

680. 验证回文字符串 Ⅱ golang

题目 验证回文字符串 Ⅱ 给定一个非空字符串 s&#xff0c;最多删除一个字符。判断是否能成为回文字符串。 示例 1: 输入: “aba” 输出: True 示例 2: 输入: “abca” 输出: True 解释: 你可以删除c字符。 注意: 字符串只包含从 a-z 的小写字母。字符串的最大长度是50000…

linux网络编程之通信协议格式

好文参考&#xff1a;《网路传输的三张表&#xff1a;MAC地址表&#xff0c;ARP缓存表和路由表》http://www.cnblogs.com/clovn/p/4911212.html &#xff08;1&#xff09;数据包封装 传输层及其一下的机制由内核决定&#xff0c;主要负责通讯的具体细节&#xff1b;应用层由用…

88. 合并两个有序数组 golang

88. 合并两个有序数组 给你两个有序整数数组 nums1 和 nums2&#xff0c;请你将 nums2 合并到 nums1 中&#xff0c;使 nums1 成为一个有序数组。 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。 你可以假设 nums1 有足够的空间&#xff08;空间大小大于或等于 m …

linux网络编程之Socket编程

&#xff08;1&#xff09;socket套接字 1&#xff09;在linux环境下&#xff0c;socket用于表示进程间网络通信的特殊文件类型&#xff0c;其本质是内核借助缓冲区形成的伪文件&#xff08;不占磁盘空间&#xff0c;除此之外还有二进制文件&#xff0c;管道&#xff0c;字符文…

Linux操作系统之简易实现server/client

1.首先将出错处理封装成函数&#xff0c;具体封装思想&#xff1a;是在底层函数的基础上将首字母大写&#xff08;方便在编程中查找函数文件的manpage,而不需要使用命令&#xff0c;直接用shiftk&#xff09;,然后调用底层库函数并考虑出错处理&#xff0c;具体函数如下&#x…