Redis
是一款高性能的key-value
数据库,本文主要记录如何在Linux
系统上进行安装,以及为Python
开发安装对应的redis
模块。
测试环境
Linux
版本Ubuntu 18.04 LTS && NeoKylin 3.2
Python
版本Python 2.7.15rc1 && Python 2.6.6
Redis
版本redis-5.0.4
redis-py
版本redis-3.2.1 && redis-2.10.6
下载
下载地址:http://redis.io/download
,下载最新稳定版本源码。
本文使用的版本为 redis-5.0.4
。
安装
Ubuntu
解压缩
首先要解压
Redis
压缩包。进入压缩包下载的路径,执行:tar xzf redis-5.0.4.tar.gz
使用
GCC
编译源码cd redis-5.0.4
make安装
Redis
make install
验证
root@local:~/temp# redis-server -v
Redis server v=5.0.4 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=3dcf53963ddc396a
root@local:~/temp# whereis redis-server
redis-server: /usr/local/bin/redis-server
至此,Redis
安装完成。
CentOs
编译安装
make && make install
此时报错
CC adlist.o
/bin/sh: cc: command not found
make[1]: *** [adlist.o] Error 127
make[1]: Leaving directory `/root/temp/redis-5.0.4/src'
make: *** [all] Error 2安装 gcc
yum install gcc -y
重新 make
make
此时报错
In file included from adlist.c:34:
zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
zmalloc.h:55:2: error: #error "Newer version of jemalloc required"
make[1]: *** [adlist.o] Error 1
make[1]: Leaving directory `/root/temp/redis-5.0.4/src'
make: *** [all] Error 2在构建
Redis
时选择非默认内存分配器是通过设置MALLOC
环境变量完成的, 默认情况下 Redis 是使用malloc
为libc
编译和链接的。
而libc
并不是Linux
上默认的分配器,默认的是jemalloc
, 因为jemalloc
被证明比libc
有更少的碎片问题(fragmentation problems
)。
但是如果你没有jemalloc
而只有libc
当然make
出错。 所以有两种解决办法:
方法一(不推荐)make MALLOC=libc
方法二
cd deps/
make hiredis jemalloc linenoise lua geohash-int
原因参见: 浅谈 redis 采用不同内存分配器 tcmalloc 和 jemalloc
对于
tcmalloc
,jemalloc
和libc
对应的三个内存分配器。其性能和碎片率如何呢?
下面是一个简单测试结果,使用Redis
自带的redis-benchmark
写入等量数据进行测试,数据摘自采用不同分配器时Redis info
信息。
我们可以看到,采用tcmalloc
时碎片率是最低的,为1.01
,jemalloc
为1.02
,而libc
的分配器碎片率为1.31
,
编译安装
make $$ make install
验证
查看版本redis-server -v
Redis server v=5.0.4 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=b139020f90f1d493查看路径
whereis redis-server # in
redis-server: /usr/local/bin/redis-server # out至此,
Redis
安装完成。
配置
通过配置文件,设置Redis
服务开机自启动。
设置自启动配置文件
切换目录
cd utils/
复制脚本文件
cp redis_init_script /etc/init.d/redisd
将
redis_init_script
文件重新命名为redisd
,作为系统启动服务名(以d
结尾表示是自启动服务,约定俗成)。修改配置
vi /etc/init.d/redisd
修改
redisd
文件,注意要在文件头部加上两句注释来设定该服务的运行级别!/bin/sh
chkconfig: 2345 90 10
设置
Redis
控制脚本的配置文件- 切换目录
cd -
cd .. - 在
redis
安装目录下,找到redis.conf
文件如下ls
00-RELEASENOTES INSTALL runtest tests
BUGS Makefile runtest-cluster utils
CONTRIBUTING MANIFESTO runtest-sentinel
COPYING README.md sentinel.conf
deps redis.conf src - 复制配置文件并重命名
cp redis.conf /etc/redis/6379.conf
编辑
Redis
配置文件设置
daemonize
为yes
,使服务可以后台运行:nu:136
daemonize yes- 设置
log
文件路径:nu:171
logfile /var/log/redis/redis-server.log - 设置持久化文件存放路径:
nu:263
dir /var/lib/redis
- 保存退出,并创建相应的目录结构:
mkdir /var/log/redis
touch /var/log/redis/redis-server.log
mkdir /var/lib/redis
- 切换目录
- 设置开机自启
Ubuntu
赋权
chmod +x /etc/init.d/redisd
更新系统启动项
update-rc.d redisd defaultsCentOS
[root@master init.d]# chmod +x ./redisd
[root@master init.d]# chkconfig redisd on附:常用
redis
管理命令
- 启动
Redis
服务:
service redisd start |
- 关闭服务:
[root@master init.d]# service redisd stop |
- 重启服务:
service redisd restart |
- 在控制台中登录
redis
客户端:
[root@master init.d]# redis-cli |
安装提供Python
支持
pip 安装
pip install redis |
源码安装
去https://pypi.org/project/redis/
下载源码,Ubuntu
上使用最新版本redis 3.2.1
解压
tar -xzvf redis-3.2.1.tar.gz
切换目录
cd redis-3.2.1
安装
python setup.py install
验证
root@local:~/temp/redis-3.2.1# python
Python 2.7.15rc1 (default, Apr 15 2018, 21:51:34)
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>> import redis
>> import redis
>>
>> r = redis.Redis(host='localhost', port=6379, db=0)
>> ret = r.get('hello')
>> print ret
world
小插曲
关于 redis-py 的 Python 低版本支持
在CentOS
上安装redis-3.2.1
的时候由于python
版本较低(2.6.6
)出现以下问题[root@master redis-3.2.1]# python setup.py install
Traceback (most recent call last):
File "setup.py", line 4, in <module>
from setuptools import setup
ImportError: No module named setuptools
安装setuptools-0.6c9
之后执行python setup.py install
报错:
Traceback (most recent call last): |
去官网查看,发现最新版版本支持为:Meta
……
Tags: Redis, key-value store
Requires: Python >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*
以及
Python Version Support
redis-py 3.0 now supports Python 2.7 and Python 3.4+. Python 2.6 and 3.3 support has been dropped.
最后安装较低版本(redis-2.10.6
)成功,步骤同上,不再赘述。
读者可以从 这里 获取历史版本:https://pypi.org/project/redis/#history