参考:http://redis.readthedocs.org/en/latest/index.html
http://www.07net01.com/linux/anzhuangredis_2_6_4_24014_1352736294.html
http://blog.51yip.com/cache/1313.html
http://blog.chinaunix.net/uid-790245-id-3766268.html
1.下载软件包:
$ wget http://download.redis.io/releases/redis-2.8.13.tar.gz
在安装Redis之前首要先做的是安装Unix的 Tcl工具 ,如果不安装的话后期将无法对Redis进行测试。在后期执行make test的时候返回如下错误信息: You need tcl 8.xuyao de5 or newer in order to run the Redis test ,具体的流程为:
cd /usr/local/src wget http://downloads.sourceforge.net/tcl/tcl8.6.3-src.tar.gz tar -zxvf tcl8.6.3-src.tar.gz cd tcl8.6.3/unix/ ./configure make make install
2.解压安装:一般情况是放到 /usr/local/redis-2.8.13 这样的目录中
$ tar xzf redis-2.8.13.tar.gz
$ cd redis-2.8.13
$ make MALLOC=libc
$ make install
make时报错,说缺少gcc这个东东,所以直接 yum install gcc-c++ 安装gcc编译器;
make 如果不加MALLOC=libc 的话,报错提示 jemalloc/jemalloc.h:没有那个文件或目录;
安装完成后,会自动copy可执行文件到环境变量中,不用自己去copy了。
如:redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server
这文件则被存放在/usr/local/bin/目录下。
附:配置redis最大分配内存
vim redis.conf
修改maxmemory <bytes>为
maxmemory <2147483648>
防止内存全部被redis耗光,达到最大内存设置后,Redis会先尝试清除已到期或即将到期的Key,也会从free-list里清除一些key-value。当以上方法都没有效果,那redis就不再支持写入操作(如set,lpush),但不影响读操作如get。(默认注释掉的,没限制,跟RAM相同)
3.修改配置:
daemonize:是否以后台daemon方式运行
pidfile:pid文件位置
port:监听的端口号
timeout:请求超时时间
loglevel:log信息级别
logfile:log文件位置
databases:开启数据库的数量
rdbcompression:是否使用压缩
dbfilename:数据快照文件名(只是文件名,不包括目录)
dir:数据快照的保存目录(这个是目录)
appendonly:是否开启appendonlylog,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。
appendfsync:appendonlylog如何同步到磁盘(三个选项,分别是每次写都强制调用fsync、每秒启用一次fsync、不调用fsync等待系统自己同步)
bind 172.17.123.135 10.129.6.2 绑定的内部IP地址172,局域网ip 10.
requirepass mybigdata #mybigdata 为redis访问的密码
大概就修改上面这些常用参数就可以了。我自己就把daemonize改成了yes其他都没修改
4.启动测试服务:
/usr/local/bin/redis-server /usr/local/redis-2.8.13/redis.conf
在redis-2.8.13目录下
也可以直接使用命令:
#redis-server redis.conf 启动
#redis-cli set test "我测试"
#redis-cli get test
即设置值,再取值
停止redis服务:src/redis-cli shutdown
将 Redis 作为 Linux 服务随机启动vi /etc/rc.local, 加入代码:
/root/install/redis-2.8.13/src/redis-server
比如:我添加的路径是这个:
/usr/local/redis-2.8.13/src/redis-server
3.0.0版本是:
/usr/local/redis-3.0.0/src/redis-server
问题一:
“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.”(警告:过量使用内存设置为0!在低内存环境下,后台保存可能失败。为了修正这个问题,请在/etc/sysctl.conf 添加一项 'vm.overcommit_memory = 1' ,然后重启(或者运行命令'sysctl vm.overcommit_memory=1' )使其生效。)
解决警告就做如下操作:
vi /etc/sysctl.conf#编辑,在最后一行添加下面代码
vm.overcommit_memory = 1
:wq!#保存退出
sysctl -p#使设置立即生效
问题二
MISCONF Redis is configured to save RDB snapshots, but is currently not able persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.
解决:
进入redis src目录下
启动客户端:
./redis-cli
输入:
config set stop-writes-on-bgsave-error no
连接:
如果是绑定的127.0.0.1的6379的话直接/usr/local/redis/bin/redis-cli连接上,但如果绑定在局域网IP,在本机登陆也要指定IP:
/usr/local/redis/bin/redis-cli -h 192.168.x.x -p 6379
注意:如在一般情况下这样也就OK了,以上都是按照配置文件启动方式;
推荐在生产环境中使用启动脚本方式启动redis服务。启动脚本redis_init_script
位于位于Redis的安装目录 /utils/
目录下。
#大致浏览下该启动脚本,发现redis习惯性用监听的端口名作为配置文件等命名,我们后面也遵循这个约定。 #redis服务器监听的端口 REDISPORT=6379 #服务端所处位置,在make install后默认存放与`/usr/local/bin/redis-server`,如果未make install则需要修改该路径,下同。 EXEC=/usr/local/bin/redis-server #客户端位置 CLIEXEC=/usr/local/bin/redis-cli #Redis的PID文件位置 PIDFILE=/var/run/redis_${REDISPORT}.pid #配置文件位置,需要修改 CONF="/etc/redis/${REDISPORT}.conf"
配置环境
1. 根据启动脚本要求,将修改好的配置文件以端口为名复制一份到指定目录。需使用root用户。
mkdir /etc/redis cp redis.conf /etc/redis/6379.conf
2. 将启动脚本复制到/etc/init.d目录下,本例将启动脚本命名为redisd(通常都以d结尾表示是后台自启动服务)。
cp redis_init_script /etc/init.d/redisd
3. 设置为开机自启动
此处直接配置开启自启动 chkconfig redisd on
将报错误: service redisd does not support chkconfig
在启动脚本开头添加如下两行注释以修改其运行级别:
#!/bin/sh # chkconfig: 2345 90 10 # description: Redis is a persistent key-value database #
再设置即可成功。
#设置为开机自启动服务器 chkconfig redisd on #打开服务 service redisd start #关闭服务 service redisd stop