安装Redis
linux的安装只需要以下六步即可完成,本文以3.0.7版本为例:
$ wget http://download.redis.io/releases/redis-3.0.7.tar.gz
$ tar xzf redis-3.0.7.tar.gz
$ ln -s redis-3.0.7 redis
$ cd redis
$ make
$ make install
- 1.下载Redis指定版本的源码压缩包到当前目录
- 2.解压缩Redis源码压缩包
- 3.建立一个redis目录的软连接,指向redis-3.0.7
- 4.进入redis目录
- 5.编译(编译之前确保操作系统已经安装gcc)
- 6.安装
这里有两点要注意:第一,第3步中建立了一个redis目录的软链接,这样做是为了不把redis目录固定在指定版本上,有利于Redis未来版本升级,算是安装软件的一种好习惯。第二,第6步中的安装是将Redis的相关运行文件放到 /usr/local/bin下,这样就可以在任意目录下执行Redis的命令。例如安装后,可以在任何目录执行redis-cli -v
查看Redis的版本。
[root@izuf6bsiti3f4kuichki8nz redis]# redis-cli -v
redis-cli 3.0.7
配置、启动、操作、关闭Redis
Redis安装之后,src和/usr/local/bin目录下多了几个以redis开头的可执行文件,我们称之为Redis Shell,这些可执行文件可以做很多事情,例如可以启动和停止Redis、可以检测和修复Redis的持久化文件,还可以检测Redis的性能,如下表:
可执行文件 | 作用 |
---|---|
redis-server | 启动Redis |
redis-cli | Redis命令行客户端 |
redis-benchmark | Redis基准测试工具 |
redis-check-aof | Redis AOF 持久化文件检测和修复工具 |
redis-check-dump | Redis RDB 持久化文件检测和修复工具 |
redis-sentinel | 启动Redis Sentinel |
这里只介绍基本的启动命令redis-server
,redis-cli
。
1.启动Redis
有三种方式启动Redis:默认配置、运行配置、配置文件启动。
1)默认配置
这种方法会使用Redis的默认配置来启动,执行redis-server
即可。
[root@izuf6bsiti3f4kuichki8nz admin]# redis-server
10110:C 27 Jul 10:19:03.992 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.0.7 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 10110
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
10110:M 27 Jul 10:19:04.025 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
10110:M 27 Jul 10:19:04.026 # Server started, Redis version 3.0.7
10110:M 27 Jul 10:19:04.026 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
10110:M 27 Jul 10:19:04.026 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
10110:M 27 Jul 10:19:04.026 * The server is now ready to accept connections on port 6379
可以看到直接使用redis-server
启动Redis后,会打印出一些日志,通过日志可以看到一些消息,上例中可以看到:
- 当前的Redis版本是3.0.7。
- Redis的默认端口是6379。
- Redis建议要使用配置文件来启动。
因为直接启动无法自定义配置,所以这种方式是不会再生产环境中使用的。
2)运行启动
redis-server加上要修改配置名和值(可以是多对),没有设置的配置将使用默认配置
# redis-server --configKey1 configValue1 --configKey2 configValue2
例如,如果要用6380作为端口启动Redis,那么可以执行:
# redis-server --port 6380
虽然运行配置可以自定义配置,但是如果需要修改的配置较多或者希望将配置保存到文件中,不建议使用这种方式。
3)配置文件启动
将配置写到指定文件里,例如我们将配置写到了/opt/redis/redis.conf
中,那么只需要执行如下命令即可启动Redis:
# redis-server /opt/redis/redis.conf
Redis有60多个配置,这里只给出一些重要的配置:
配置名 | 配置说明 |
---|---|
port | 端口 |
logfile | 日志文件 |
dir | Redis工作目录(存放持久化文件和日志文件) |
daemonize | 是否以守护进程的方式启动Redis |
Redis目录下都会有一个redis.conf配置文件,里面就是Redis的默认配置,通常来讲我们会在一台机器上启动多个Redis,并且将配置集中管理在指定目录下,而且配置不是完全手写的,而是将redis.conf作为模板进行修改。
显然通过配置文件启动的方式提供了更大的灵活性,所以大部分生产环境会使用这种方式启动Redis。
2.Redis命令行客户端
现在我们已经启动了Redis服务,下面将介绍如何使用redis-cli
连接、操作Redis服务。redis-cli可以使用两种方式连接Redis服务器。
- 第一种是交互式方式:通过
redis-cli -h {host} -p {port}
的方式连接到Redis服务,之后所有的操作都是t6ongguo交互的方式实现,不需要再执行redis-cli了,例如:[root@izuf6bsiti3f4kuichki8nz admin]# redis-cli -h 127.0.0.1 -p 6379 127.0.0.1:6379> set hello world OK 127.0.0.1:6379> get hello "world"
- 第二种是命令方式:用
redis-cli -h {host} -p {port} {command}
就可以直接得到命令的返回结果,例如:[root@izuf6bsiti3f4kuichki8nz admin]# redis-cli -h 127.0.0.1 -p 6379 get hello "world"
这里有两点要注意:
- 如果没有
-h
参数,那么默认连接127.0.0.1;如果没有-p
,那么默认6379端口,也就是说如果-h
和-p
都没写就是连接127.0.0.1:6379
这个Redis示例。 - redis-cli是学习Redis的重要工具,提供了很多有价值的参数,后序博客会具体讲解。
3.停止Redis服务
Redis提供了shutdown命令来停止Redis服务,例如要停掉127.0.0.1上6379端口上的Redis服务,可以执行如下操作。
# redis-cli shutdown
可以看到Redis的日志输出如下:
10330:M 27 Jul 11:22:11.882 # User requested shutdown... # 客户端发出的shutdown命令
10330:M 27 Jul 11:22:11.882 * Saving the final RDB snapshot before exiting. # 保存RDB持久化文件
10330:M 27 Jul 11:22:11.884 * DB saved on disk # 将RDB文件保存在磁盘上
10330:M 27 Jul 11:22:11.884 # Redis is now ready to exit, bye bye... # 关闭
当使用redis-cli再次连接该Redis服务时,看到Redis已经“失联”,只有再次启动服务后才成功连接上。
[root@izuf6bsiti3f4kuichki8nz admin]# redis-cli
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected>
not connected> exit
[root@izuf6bsiti3f4kuichki8nz admin]# nohup redis-server &
[1] 10512
[root@izuf6bsiti3f4kuichki8nz admin]# nohup: ignoring input and appending output to ‘nohup.out’
[root@izuf6bsiti3f4kuichki8nz admin]# redis-cli
127.0.0.1:6379>
这里有三点需要注意:
- Redis关闭的过程:断开与客户端的连接、持久化文件生成,是一种相对优雅的关闭方式。
- 除了可以通过shutdown命令关闭Redis服务以外,还可以通过kill进程号的方式关闭Redis,但是不要粗暴的使用kill -9强制杀死Redis服务,不但不会做持久化操作,还会造成缓冲区等资源不能被优雅关闭,极端情况会造成AOF和复制丢失数据的情况。
- shutdown还有一个参数,代表是否在关闭Redis前,生成持久化文件:
redis-cli shutdown nosave|save