概述
Redis:(Remote Dictionary Server ) 远程字典服务
是一个开源的使用C语言编写,支持网络,可基于内存也可持久化的日志型Key-Value NoSQL数据库,并提供多种开发语言的API
性能
官方测试结果:读 110000次/s ,写 81000次/s
网站
安装
Windows
- Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包到 C 盘,解压后,将文件夹重新命名为 redis。 
- 打开一个 cmd 窗口 使用cd命令切换目录到 - C:\redis运行- redis-server.exe redis.windows.conf- 1 - redis-server.exe redis.windows.conf 
- redis作为windows服务启动方式 - 1 - redis-server --service-install redis.windows.conf 
- dos命令 - 1 
 2
 3- 启动服务:redis-server --service-start 
 停止服务:redis-server --service-stop
- 如果想方便的话,可以把 redis 的路径加到系统的环境变量里,这样就省得再输路径了,后面的那个 redis.windows.conf 可以省略,如果省略,会启用默认的。 
Linux 下安装
- 下载地址:http://redis.io/download,下载最新文档版本。
下载安装
- 下载、解压、编译 - 1 
 2
 3
 4- wget wget http://download.redis.io/releases/redis-6.2.0.tar.gz 
 tar xzf redis-6.2.0.tar.gz
 cd redis-6.2.0
 make && make install
- make完后 redis-6.2.0目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli,两个程序位于安装目录 src 目录下: 
- 启动、关闭redis服务 - 1 
 2
 3- cd src 
 ./redis-server #启动
 ./redis-cli -p 6379 shutdown #关闭
- 注意 - ==这种方式启动redis 使用的是默认配置。也可以通过启动参数告诉redis使用指定配置文件使用下面命令启动== - 1 
 2- cd src 
 ./redis-server redis.conf redis.conf是一个默认的配置文件。我们可以根据需要使用自己的配置文件。
- 启动redis服务进程后,就可以使用测试客户端程序redis-cli和redis服务交互。比如: - 1 
 2
 3
 4
 5
 6
 7- cd src 
 ./redis-cli
 redis> set foo bar
 OK
 redis> get foo
 "bar"
Redis支持后台运行并作为系统服务开机启动
- 在 /etc/目录下创建 redis目录,把配置文件复制到该目录下
| 1 | cd /etc | 
- 将redis服务作为守护进程来运行,修改配置文件
| 1 | vi 6379.conf | 
- 管理启动、关闭、重启、查看状态的脚本
==redis源码里其实已经提供了一个初始化脚本,在安装目录下的utils里面有个redis_init_script即是。==
- 复制redis_init_script脚本到/etc/init.d/redisd - 1 - cp /usr/local/src/redis-6.2.08/utils/redis_init_script /etc/init.d/redisd 
- 对该脚本进行修改 - 1 - vim /etc/init.d/redisd - 添加一句 # chkconfig: 2345 90 10 - 分别修改EXEC(redis-server的路径)、CLIEXEC(redis-cli的路径)、CLIEXEC(守护进行方式的pid所在文件路径,要和配置文件中的pidfile一致)、CONF(刚才复制的配置文件路径)的值 - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40- #!/bin/sh# 
 # chkconfig: 2345 90 10
 REDISPORT=6379
 EXEC=/usr/local/src/redis-6.2.0/src/redis-server
 CLIEXEC=/usr/local/src/redis-6.2.0/src/redis-cli
 CLIEXEC=/var/run/redis_${REDISPORT}.pid
 CONF="/etc/redis/${REDISPORT}.conf"
 case "$1" in
 start)
 if [ -f $PIDFILE ]
 then
 echo "$PIDFILE exists, process is already running or crashed"
 else
 echo "Starting Redis server..."
 $EXEC $CONF
 fi
 ;;
 stop)
 if [ ! -f $PIDFILE ]
 then
 echo "$PIDFILE does not exist, process is not running"
 else
 PID=$(cat $PIDFILE)
 echo "Stopping ..."
 $CLIEXEC -p $REDISPORT shutdown
 while [ -x /proc/${PID} ]
 do
 echo "Waiting for Redis to shutdown ..."
 sleep 1
 done
 echo "Redis stopped"
 fi
 ;;
 *)
 echo "Please use start or stop as first argument"
 ;;
 esac
- 在/etc/init.d下的脚本都是可以在系统启动是自动启动的服务,配置redis随系统启动 - 1 - chkconfig redisd on 
- 操作命令 - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10- > service redisd start 
 > service redisd stop
 > service redisd status
 > service redisd restart
 centos7以上
 > systemctl start redisd
 > systemctl stop redisd
 > systemctl status redisd
 > systemctl restart redisd
Ubuntu 下安装
- 在 Ubuntu 系统安装 Redi 可以使用以下命令: - 1 
 2- $sudo apt-get update 
 $sudo apt-get install redis-server
- 启动 Redis - 1 - redis-server 
- 查看 redis 是否启动? - 1 - redis-cli 
- 以上命令将打开以下终端: - 1 - redis 127.0.0.1:6379> 
- 127.0.0.1 是本机 IP ,6379 是 redis 服务端口。现在我们输入 PING 命令。 - 1 
 2- redis 127.0.0.1:6379> ping 
 PONG
压力测试
redis-benchmark 官方自带的性能测试工具
官方文档:http://redis.cn/topics/benchmarks.html
支持的参数
| 参数 | 含义 | 原文说明 | 中文说明 | 
|---|---|---|---|
| -h | Server hostname (default 127.0.0.1) | 指定服务器主机名 | |
| -p | Server port (default 6379) | 指定服务器端口 | |
| -s | Server socket (overrides host and port) | 指定服务器socket | |
| -a | Password for Redis Auth | ||
| -c | Number of parallel connections (default 50) | 指定并发连接数 | |
| -n | Total number of requests (default 100000) | 指定请求数 | |
| -d | Data size of SET/GET value in bytes (default 2) | 以字节的形式指定 SET/GET 值得数据大小 | |
| -dbnum | SELECT the specified db number (default 0) | 指定库,默认0号库 | |
| -k | 1=keep alive 0=reconnect (default 1) | 1=keep alive | |
| -r | 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. | SET / GET / INCR 使用岁就key,SADD使用随机值 | |
| -P | Pipeline | 通过管道传输 | |
| -q | Quiet. Just show query/sec values | 强制退出redis,仅显示 query/sec的值 | |
| –csv | Output in CSV format | 以csv格式输出 | |
| -l | Loop. Run the tests forever | 循环,永久执行测试 | |
| -t | 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. | idle模式。仅打开N个idle连接并等待 | 
简单测试命令
| 1 | redis-benchmark -q -n 100000 | 
基础知识
- Redis默认有16个库,配置文件的 databases 控制,默认使用0好库,可以使用select 进行切库,DBSIZE 命令查看库大小
- keys *命令查看库所有的key
- flushall清空所有库数据,- flushdb清空当前库数据
- Redis是单线程的,因为Redis是基于内存操作的,CPU不是Redis的性能瓶颈,Redis的瓶颈是机器的内存和网络带宽,既然可以使用单线程来实现所以就使用单线程



