深入了解redis的特性和性能测试工具redis benchmark
什么是redis
Redis 是一个开源(BSD 许可)的内存数据结构存储系统,可用作数据库、缓存和消息中间件。 It supports many types of data structures, such as strings, hashes, lists, sets, sorted sets And range query, bitmaps, hyperloglogs and 地理空间索引半径查询。 Redis has built-in replication,Lua scripting, LRU event,transactions And different levels of Disk persistence , and passed Redis Sentinel And automatic Partition (Cluster)提供高可用性。
测试性能
Redis benchmark 是一款压力测试工具,也是官方的性能测试工具。
用法:redis benchmark [option] [option value]
redis性能测试工具可选参数如下:
序列号
选项
描述
默认值
1
-H
指定服务器主机名
127.0.0.1
2
-p
指定服务器端口
6379
3
-s
指定服务器套接字
4
-C
指定并发连接数
50
5
-n
指定请求数
10000
6
-d
以字节为单位指定 SET/GET 值的数据大小
2
7
-k
1u003d保持活动状态 0u003d重新连接
1
8
-r
SET/GET/INCR 使用随机键,Sadd 使用随机值
9
-P
管道请求
1
10
-q
强制退出redis。仅显示查询/秒值
11
–csv
以 CSV 格式导出
12
*-L *(L的小写字母)
生成循环并永久执行测试
13
-t
仅运行以逗号分隔的测试命令列表。
14
*-i * (i 的大写字母)
空闲模式。仅打开 N 个空闲连接并等待。
开始测试:
#测试100个并发连接100000个请求
redis 基准 -h 本地主机 -p 6379 -c 100 -n 100000

入门知识
redis默认有16个数据库,可以在配置文件中找到

默认使用 0 数据库。您可以使用 select 命令切换数据库。
//查看数据库大小
127.0.0.1:6379> 数据库大小
(整数)4
//切换数据库
127.0.0.1:6379> 选择 3
好的
127.0.0.1:6379[3]> 数据库大小
(整数) 0
不同的数据库相互独立
127.0.0.1:6379[3]> 设置名称 lingg
好的
127.0.0.1:6379[3]> 数据库大小
(整数)1
127.0.0.1:6379[3]> 获取名称
"灵感"
127.0.0.1:6379[3]> 选择 1
好的
127.0.0.1:6379[1]> 获取名称
(无)
127.0.0.1:6379[1]>
redis是单线程的
为什么?
根据官方FAQ,由于Redis是基于内存的操作,CPU并不是Redis的瓶颈。 Redis 最可能的瓶颈是机器内存大小或网络带宽。由于单线程很容易实现,CPU也不会成为瓶颈,所以采用单线程方案是顺理成章的(毕竟使用多线程会很麻烦!)。
问题:为什么单线程这么快?
1、基于内存的操作:首先,传统数据库的I/O速度由于多线程慢而慢,而大部分redis操作都是在内存中进行的。
2.优化后:redis自己的数据结构是专门设计的。数据结构简单,对数据结构的操作也简单
3、减少开销:由于redis是单线程的,避免了多线程cpu时间片旋转锁所需的上下文切换的开销。各种锁都没有问题,也没有加锁和释放锁的操作。
4.复用I/O:使用linux的复用I/O模型中的epoll模型和非阻塞I/O模型。IO模型介绍见这里
5、自建VM:底层实现方式和与客户端通信的应用协议不同。 redis 构建了自己的VM,因为通过系统调用调用系统函数时有一定的时间开销。
但是,我们不能通过单线程来充分发挥多核CPU的性能,但是我们可以通过在单机上打开多个Redis实例来提高它!
核心:redis 把所有的数据都放在内存中,所以使用单线程操作是最高效的,多线程的(CPU上下文切换:耗时)。对于内存来说,如果没有上下文切换,效率最高。同一个context用于多次读写CPU,在内存的情况下,单线程效率最高。
基本操作
查看所有键:键*
127.0.0.1:6379> 键 *
- “军民主义”
2)“关键:__rand_int__”
- “我的哈希”
4)“计数器:__rand_int__”
清空当前数据库:flushdb
127.0.0.1:6379[3]> 选择 0
好的
127.0.0.1:6379> 键 *
- “军民主义”
2)“关键:__rand_int__”
- “我的哈希”
4)“计数器:__rand_int__”
127.0.0.1:6379> 刷新数据库
好的
127.0.0.1:6379> 键 *
(空数组)
清除所有数据库:flush
127.0.0.1:6379> 选择 0
好的
127.0.0.1:6379> 键 *
(空数组)
127.0.0.1:6379> 设置名称“lingg”
好的
127.0.0.1:6379> 获取名称
"灵感"
127.0.0.1:6379> 选择 2
好的
127.0.0.1:6379[2]> 冲洗
好的
127.0.0.1:6379[2]> 选择 0
好的
127.0.0.1:6379> 键 *
(空数组)
127.0.0.1:6379>
更多推荐
所有评论(0)