Redis简介:
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
安装环境:
CentOS 6.5
下载安装:
下载文件到 /opt/ 目录下
wget http://download.redis.io/releases/redis-2.8.13.tar.gz
解压文件
tar zxvf redis-2.8.13.tar.gz
切换目录到 redis-2.8.13 目录下
cd redis-2.8.13
执行make命令,最后几行的输出结果
Hint: To run 'make test' is a good idea ;)
make[1]: Leaving directory `/opt/redis-2.8.13/src'
执行安装命令
make install
提示:
cd src && make install
make[1]: Entering directory `/opt/redis-2.8.13/src'
Hint: To run 'make test' is a good idea ;)
INSTALL install
INSTALL install
INSTALL install
INSTALL install
INSTALL install
make[1]: Leaving directory `/opt/redis-2.8.13/src'
根据提示,执行:cd src && make install
提示:
Hint: To run 'make test' is a good idea ;)
INSTALL install
INSTALL install
INSTALL install
INSTALL install
INSTALL instal
按照提示执行:make test
提示:
You need tcl 8.5 or newer in order to run the Redis test
make: *** [test] Error 1
解决方法参考:http://www.linuxfromscratch.org/blfs/view/cvs/general/tcl.html
也可以使用:yum install tcl 命令安装
后来经搜索发现不需要安装,直接到src目录下执行 ./redis-server 就可以
可以使用类似 ./redis-server /path/to/redis.conf 命令指定配置文件;
Server started, Redis version 2.8.13
The server is now ready to accept connections on port 6379
服务启动成功,服务已经在6379端口上监听连接请求。
你可以使用内置的客户端连接Redis:http://www.redis.cn/download.html
$ src/redis-cli
redis> set foo bar
OK
redis> get foo
"bar"
注意事项:
wget http://download.redis.io/releases/redis-3.2.0.tar.gz
tar -zxvf redis-3.2.0.tar.gz
cd redis-3.2.0
make
src/redis-server ./redis.conf
几行命令就OK了,参考:http://redis.io/download
/bin/sh: cc: command not found
这是因为没有安装 gcc,使用以下命令安装:
yum -y install gcc
Redis配置文件redis.conf详解
1.基本配置
内存单位的表示
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes
单位中不区分大小写1GB 1Gb 1gB是一样的
后台运行,yes是后台运行,no前台运行,将输出,输出到终端(默认)
daemonize yes
如果daemonize参数为yes的话就会产生pid文件,一下是pid文件的定义
pidfile /usr/local/redis-master/run/redis.pid
监听的端口
port 6379
绑定监听的IP地址
bind 127.0.0.1
如果在本地调用redis可以直接用sock文件
unixsocket /tmp/redis.sock //sock文件的位置
unixsocketperm 755 //sock文件的权限
如果一个链接在N秒内是空闲的,就将其关闭
timeout 0
如果对方down了或者中间网络断了发送ACK到客户端在指定的时间内没有收到对方的回应就断开TCP链接(时间单位秒记),此参数会受到内核参数的影响,推荐配置60。
tcp-keepalive 0
指定输出消息的级别
# debug (调试级别,详细信息,信息量大)
# verbose (详细信息,信息量较大)
# notice (通知,生产环境推荐)
# warning (错误信息警告信息)
loglevel notice
日志输出文件,默认在前端运行的时候此key的默认值是stdout输出到终端,如果用守护进程运行此key的stdout的时候将日志输入到/dev/null,如果想记录日志,就必须为其指定logfile位置
logfile /var/log/redis.log
将日志记录的哦syslog
syslog-enabled no
指定syslog的身份
syslog-ident redis
指定syslog的级别,必须是LOCAL0-LOCAL7之间
syslog-facility local0
设置数据库的数量
databases 16
设置数据库的数量。默认数据库DB 0,你可以选择一个不同的per-connection的使用SELECT<dbid>这儿的DBID是一个介于0和'databases'-1
databases 16
2.快照配置
将DB保存到磁盘的规则定义(快照)
格式:save <seconds> <changes>
例子:save 900 1 //在900秒(15分钟)内如果至少有1个键值发生变化 就保存
save 300 10 //在300秒(6分钟)内如果至少有10个键值发生变化 就保存
save 900 1 //每一条表示一个存盘点
save 300 10
save 60 10000
如果启用如上的快照(RDB),在一个存盘点之后,可能磁盘会坏掉或者权限问题,redis将依然能正常工作
stop-writes-on-bgsave-error yes
是否将字符串用LZF压缩到.rdb 数据库中,如果想节省CPU资源可以将其设置成no,但是字符串存储在磁盘上占用空间会很大,默认是yes
rdbcompression yes
rdb文件的校验,如果校验将避免文件格式坏掉,如果不校验将在每次操作文件时要付出校验过程的资源新能,将此参数设置为no,将跳过校验
rdbchecksum yes
转储数据的文件名
dbfilename dump.rdb
redis的工作目录,它会将转储文件存储到这个目录下,并生成一个附加文件
dir /usr/local/redis-master/db
3.主从参数
如果本地是salve服务器那么配置该项
# slaveof <masterip> <masterport>
slaveof 127.0.0.1 65532
master的验证密码
masterauth <master-password>
当从主机脱离主的链接时,如果此值为yes当客户端查询从时,回响应客户端,如果是第一次同步回返回一个日期数据或这空值,如果设置为no,则返回“SYNC with master in progress”到INFO and SLAVEOF
slave-serve-stale-data yes
从服务器只读(默认)
slave-read-only yes
从发送ping到主的时间间隔(单位:秒)
repl-ping-slave-period 10
批量传输I / O超时和主数据或ping响应超时 默认60s 必须大于repl-ping-slave-period值
repl-timeout 60
此选项如果是“yes”那么Redis的使用数量较少的TCP数据包和更少的带宽将数据发送到,在从主机上延迟40毫秒(linux kernel中的40毫秒)出现。如果是no将在slave中减少延迟,但是流量使用回相对多一些,如果用多个从主机,此处建议设置成yes
repl-disable-tcp-nodelay no
从主机的优先级,如果当主主机挂了的时候,将从从主机中选取一个作为其他从机的主,首先优先级的数字最低的将成为主,0是一个特殊的级别,0将永远不会成为主。默认值是100.
slave-priority 100