首先,安装Redis所依赖的TCL工具包。
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gztar -xf tcl8.6.0-html.tar.gzcd unix &&./configure --prefix=/usr \ --without-tzdata \ --mandir=/usr/share/man \ $([ $(uname -m) = x86_64 ] && echo --enable-64bit) &&make &&sed -e "s@^\(TCL_SRC_DIR='\).*@\1/usr/include'@" \ -e "/TCL_B/s@='\(-L\)\?.*unix@='\1/usr/lib@" \ -i tclConfig.shmake testmake install &&make install-private-headers &&ln -v -sf tclsh8.6 /usr/bin/tclsh &&chmod -v 755 /usr/lib/libtcl8.6.so
有关TCL的更详细的说明,请见 http://www.linuxfromscratch.org/blfs/view/svn/general/tcl.html
2. 安装Redis
下面,就可以安装Redis了。
# 下载redis稳定版,解压缩并安装wget http:tar xzf redis-3.0.0.tar.gzcd redis-3.0.0 make# 测试make是否成功make testmake install
然后可以进入redis目录,尝试启动redis
./src/redis-server redis.conf
至此redis安装已经完成了。
在make test中可能会遇到时间相关的失败,比如
Executing test client: NOREPLICAS Not enough good slaves to write..
这种情况下,可以修改文件tests/integration/replication-2.tcl,将after 1000改为after 10000以延长等待时间。
更多关于Redis安装的信息,请见 http://redis.io/download
(YE:昨天运行./redis-server之后再运行./redis-cli总是出现127.0.0.1 refuse connection的错误,但是用./redis-cli -h 192.168.3.241 -p 6379就可以。改了配置文件也重启服务了多次,都无效。今天突然一试然后好了,并不知道怎么回事)
3. C客户端hiredis
如果想要使用C程序调用Redis,安装官方C客户端hiredis。方便的是,目前的redis下载包中已经包含了hiredis的安装包,只需要到redis安装目录下,执行以下命令即可:
cd /deps/hiredismakemake testmake install/sbin/ldconfig /usr/local/lib
可以执行hiredis文件夹下的hiredis-example来测试hiredis是否成功安装。
./hiredis-example
hiredis-example由example.c编译而成,包括了简单的redis通过C连接调用的例子,也可以自己重新编译一遍:
cc example.c -lhiredis./a.out
关于hiredis的更多说明,可以参照 https://github.com/redis/hiredis
4. Python客户端redis-py
redis的Python客户端目前尚不存在官方版本,但是官方推荐的为redis-py。在安装完redis服务器后,执行下面命令安装redis-py。
pip install redis
redis-py通过解析器(Parser)来解析Redis服务器的响应内容,目前有两种解析器可用,分别是PythonParser和HiredisParser。redis-py的默认解析器是HiredisParser,如果不存在则使用PythonParser。推荐安装使用Hiredis进行解析,因为相比Python解析,它提升了10倍的解析速度。
安装Hiredis:
pip install hiredis
redis-py还实现了连接池等功能。
关于redis-py的更多说明,可以参照 https://github.com/andymccurdy/redis-py
5. 高级设置
最后,配置生产环境,并设置redis的开机启动。
首先,建立存放redis配置文件和持久化RDB数据的文件夹:
sudo mkdir /etc/redissudo mkdir /var/redis
拷贝redis的启动脚本到/etc/init.d文件夹中:
sudo cp utils/redis_init_script /etc/init.d/redis_6379
拷贝redis的配置文件到/etc/redis中,并且以端口号作为文件名:
sudo cp redis.conf /etc/redis/6379.conf
在/var/redis中创建文件夹作为redis实例的数据和工作目录:
sudo mkdir /var/redis/6379
按下面要求修改配置文件:
- 设置 demonize 为 yes(默认是no)
- 设置 pidfile 为 /var/run/redis_6379.pid
- 设置 loglevel 为相应级别
- 设置 logfile 为 /var/log/redis_6379.log
- 设置 dir 为 /var/redis/6379
最后,设置redis实例的开机启动。在Ubuntu上直接运行:
sudo update-rc.d redis_6379 defaults
如果是CentOS,修改/etc/init.d/redis_6379,添加下面内容:
然后执行chkconfig即可。
sudo chkconfig
关于配置的更多内容,参照 http://redis.io/topics/quickstart
持久化内存问题:
Redis在持久化时会重新启动一个进程,占用的内存资源与Redis实例相同,因此可能会造成内存不足,产生难以预知的后果。为了防止该事件发生,可以将overcommit_memory设置为1。
设置方法:
1. 修改文件/etc/sysctl.conf,添加
vm.overcommit_memory = 1
然后重新启动。
2. 执行命令sysctl vm.overcommit_memory=1
这样在下次启动时会恢复默认设置,因此仍然需要在/etc/sysctl.conf中添加。