目录

Redis入门

Linux下安装

  1. 下载安装包

    官网地址:https://redis.io/

    中文官网:http://www.redis.cn/

    或者root下:wget https://github.com/redis/redis/archive/7.0.2.tar.gz

  2. 解压Redis安装包!临时文件和程序一般放在/opt

    mv redis-7.0.2.tar.gz /opt

    tar -zxvf redis-7.0.2.tar.gz

  3. 进入解压后的文件,可以看到redis的配置文件

    cd /opt/redis-7.0.2

    https://cdn.jsdelivr.net/gh/QiMington/picbed/image-20220623185907347.png

  4. 基本环境安装

    yum install gcc-c++

    查看安装是否成功

    gcc -v

  5. 基本环境安装

    cd /opt/redis-7.0.2

    make

    https://cdn.jsdelivr.net/gh/QiMington/picbed/image-20220623192357769.png

    make install

    https://cdn.jsdelivr.net/gh/QiMington/picbed/image-20220623192443298.png

  6. redis的默认安装路径/usr/local/bin

    https://cdn.jsdelivr.net/gh/QiMington/picbed/image-20220623194728305.png

  7. 将redis配置文件拷贝一份至该目录使用

    mkdir qmtconfig

    cp /opt/redis-7.0.2/redis.conf qmtconfig

  8. redis默认不是后台启动,修改配置文件

    vim qmtconfig/redis.conf

    修改daemonize nodaemonize yes

    否则启动后就关掉了

    https://cdn.jsdelivr.net/gh/QiMington/picbed/image-20220623210451325.png

  9. 启动redis服务

    使用指定配置文件启动

    redis-server qmtconfig/redis.conf

  10. 连接与测试连接

    redis-cli -p 6379

    或者

    redis-cli -a 密码

    https://cdn.jsdelivr.net/gh/QiMington/picbed/image-20220623210523695.png

  11. 关闭服务与连接

    https://cdn.jsdelivr.net/gh/QiMington/picbed/image-20220623210728918.png

测试性能

redis-benchmark是一个压力测试工具

官方自待的性能测试工具!

redis-benchmark命令参数如下:

序号选项描述默认值
1-h指定服务器主机名127.0.0.1
2-p指定服务器端口6379
3-s指定服务器 socket
4-c指定并发连接数50
5-n指定请求数10000
6-d以字节的形式指定 SET/GET 值的数据大小3
7-k1=keep alive 0=reconnect1
8-rSET/GET/INCR 使用随机 key, SADD 使用随机值
9-P通过管道传输 请求1
10-q强制退出 redis。仅显示 query/sec 值
11–csv以 CSV 格式输出
12*-l*(L 的小写字母)生成循环,永久执行测试
13-t仅运行以逗号分隔的测试命令列表。
14*-I*(i 的大写字母)Idle 模式。仅打开 N 个 idle 连接并等待。

redis-benchmark -h localhost -p 6379 -c 100 -n 100000

结果如下:

1
2
3
4
5
6
7
8
====== SET ======
  100000 requests completed in 6.20 seconds #对100000个请求进行测试,共耗时6.2秒
  100 parallel clients # 100个并发客户端
  3 bytes payload # 每次只写入三个字节
  keep alive: 1 # 只有一台服务器来处理这些请求,即单机性能
  host configuration "save": 3600 1 300 100 60 10000
  host configuration "appendonly": no
  multi-thread: no

基础知识

redis默认有16个数据库

A:\MyTyparo\Redis\Redis入门.assets\image-20220623212947664.png

默认使用第0个

可以使用select切换数据库

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
127.0.0.1:6379> select 3 # 切换数据库
OK
127.0.0.1:6379[3]> dbsize # 查看数据库大小
(integer) 0
127.0.0.1:6379[3]> set name qimington
OK
127.0.0.1:6379[3]> dbsize
(integer) 1
127.0.0.1:6379[3]> keys * # 查看所有的key
1) "name"
127.0.0.1:6379[3]> flushdb # 清空当前数据库
OK
127.0.0.1:6379[3]> keys *
(empty array)

值得注意的是,flushall清空全部数据库

Redis是单线程的

Redis是很快的,是基于内存操作的,CPU不是Redis性能瓶颈,Redis的瓶颈是根据机器的内存和网络带宽,既然可以使用单线程来实现,就使用单线程了。

Redis是C语言写的,官方提供的数据为100000+的QPS,完全不比同样是使用key-value的Memecache差!

Redis为什么单线程还这么快?

  1. 误区1:高性能服务器一定是多线程的?否
  2. 误区2:多线程(CPU上下文会切换!)一定比单线程效率高?否

了解:CPU>内存>硬盘的速度

核心:Redis是将所有的数据全部放在内存中,所以说使用单线程去操作效率就是高的,多线程(CPU上下文会切换:耗时的操作!!),对于内存系统来说,如果没有上下文切换效率就是最高的!多次读写都是在一个CPU上的,在内存情况下,这个就是最佳方案!