Redis使用手册
简介
Redis:Remote DIctionary Server(远程字典服务)。
是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。是完全开源免费的,用C语言编写的,遵守BSD协议,高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库。
安装
Redis的官网是:
https://redis.io
下载稳定版
redis-4.0.9.tar.gz
安装步骤
解压
tar -zxvf redis-4.0.9.tar.gz
编译 进入
cd redis-4.0.9
执行make
(编译依赖gcc)(可不执行)安装
make PREFIX=/usr/local/redis install
(PREFIX指定安装位置)编译生成src下的二进制文件
1. redis-server:Redis服务器 2. redis-cli:Redis命令行客户端 3. redis-benchmark:Redis性能测试工具 4. redis-check-aof:AOF文件修复工具 5. redis-check-rdb:RDB文件检查工具
常用命令
启动Redis服务
src/redis-server redis.conf
daemonize no 默认情况下,redis不作为守护进程运行。如果需要,请使用“yes”。 注意,redis将在守护时在/var/run/redis.pid中写入一个pid文件。
进入Redis客户端
src/redis-cli
$src/redis-cli # 字符串操作 127.0.0.1:6379> set foo bar #设置key-value值 OK 127.0.0.1:6379> get foo #获取key值 "bar" 127.0.0.1:6379> exists key #判断键是否存在 存在返回1,否则返回0 # 列表 127.0.0.1:6379> rpush foo 1 2 3 4 #设置key值[1,2,3,4] (integer) 4 127.0.0.1:6379> lrange foo 0 -1 #获取key所有值 1) "1" 2) "2" 3) "3" 4) "4" # 设置生存时间 127.0.0.1:6379> expire foo 10 #设置key的生存时间(秒) pexpire(毫秒) (integer) 1 127.0.0.1:6379> expireat foo 1568797570 #设置key过期时间(时间戳秒) pexpireat(毫秒) (integer) 1 127.0.0.1:6379> ttl foo #查看key的剩余生存时间(秒) (integer) 6 #6秒 127.0.0.1:6379> ttl foo #查看key的剩余生存时间 (integer) -1 #key存在,没有设置生存时间 127.0.0.1:6379> ttl foo #查看key的剩余生存时间 (integer) -2 #key不存在 127.0.0.1:6379> get foo #时间到了之后 (nil) 127.0.0.1:6379> select 1 #切换数据库 127.0.0.1:6379> flushdb #清空当前数据库数据 127.0.0.1:6379> flushall #清空所有数据库数据 127.0.0.1:6379> quit #关闭连接
关闭Redis服务
- redis-cli shutdown save:安全关闭(数据会持久化),但是只适用于没有配置密码的场景(一般情况下不会给Redis设置密码。)
- kill -9 pid:强制关闭,可能会造成Redis内存数据丢失。
$src/redis-cli 127.0.0.1:6379> shutdown save not connected> quit
redis.conf详解
INCLUDES 引入
同nginx中的用法一样,可以引入更多的配置文件,便于管理
或是redis集群做一个通用的redis.conf,每台服务器自定义的设置可以通过include方式引入
#如:把[daemonize yes]写在local.conf文件中,在redis.conf中引入,同样可以生效 include local.conf
如果将此配置写在redis.conf 文件的开头,那么后面的配置会覆盖引入文件的配置,如果想以引入文件的配置为主,那么需要将 include 配置写在 redis.conf 文件的末尾。
MODULES 自定义模块
redis3.0的爆炸功能是新增了集群,而redis4.0就是在3.0的基础上新增了许多功能,自定义模块配置就是其中之一。
通过这里的 loadmodule 配置将引入自定义模块来新增一些功能。
loadmodule /path/to/my_module.so
NETWORK 网络
1. bind: 绑定redis网卡IP,默认为127.0.0.1,只能通过本机的客户端连接,而无法通过远程连接。bind为空接受所有可用网络接口的连接。 2. port: 指定redis运行的端口,默认是6379。由于Redis是单线程模型,因此单机开多个Redis进程的时候需要修改端口。 3. timeout: 设置客户端连接时的超时时间,单位为秒。当客户端在这段时间内没有发出任何指令,那么关闭该连接。默认值为0,表示不关闭。 4. tcp-keepalive: 单位是秒,表示将周期性的使用SO_KEEPALIVE检测客户端是否还处于健康状态,避免服务器一直阻塞,官方给出的建议值是300s,如果设置为0,则不会周期性的检测。
GENERAL 日志
1. daemonize:设置为yes表示指定Redis以守护进程的方式启动(后台启动)。默认值为 no 2. pidfile:配置PID文件路径,当redis作为守护进程运行的时候,它会把 pid 默认写到 /var/redis/run/redis_6379.pid 文件里面 3. loglevel :定义日志级别。默认值为notice,有如下4种取值: debug(记录大量日志信息,适用于开发、测试阶段) verbose(较多日志信息) notice(适量日志信息,使用于生产环境) warning(仅有部分重要、关键信息才会被记录) 4. logfile :配置log文件地址,默认打印在命令行终端的窗口上 5. databases:设置数据库的数目。默认的数据库是DB 0 ,可以在每个连接上使用select <dbid> 命令选择一个不同的数据库,dbid是一个介于0到databases - 1 之间的数值。默认值是 16,也就是说默认Redis有16个数据库。