博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Redis(二):Redis的安装及配置(1)---安装
阅读量:6435 次
发布时间:2019-06-23

本文共 1965 字,大约阅读时间需要 6 分钟。

网上有很多安装文档,但是写的比较粗略,有些问题也没有说明,比如内存分配器安装遇到错误,解决办法级别都是使用linux系统自带的libc来解决,并没有给出如何使用性能更好的jemalloc分配器,所以决定把一些我能想到的东西整理一下,同时也是为了初学者少走弯路。

安装


Redis安装非常方便,首先通过官网去下载最新版本,官网地址:

Redis除了可以安装在Linux上还可以安装在Windows上,不过在Windows平台上的Redis并不是Redis官方支持的,它是由MicrosoftOpen Tech 小组开发并维护的。Redis并不依赖任何非标准函数库,也没有编译必须要添加的参数,安装非常简单。我们这里使用3.0版本。

先安装一下基础环境:

从这里下载:

解压并测试所需条件,该命令是压缩包里自带的命令,提示需要安装tcl8.5以上版本

安装tcl

安装jemalloc分配器,这个分配器源码已经包含在Redis源码包里了,在dev目录里面,如下图:关于分配器我后面再做说明。

安装方式如下:它会把下面这4项进行编译安装,这都是Redis所依赖的

编译安装Redis

这时候再去运行make就不会报错了。可以通过下面的命令来设置安装目录:

1
make 
PREFIX=
/DIRECTORY 
install 
(如果你用了这个命令,那么后面就不需要执行
make 
install
了)

我这里使用默认的。

运行makeinstall

注意:如果你想安装在不同目录里,必须使用make PERFIX=/DIRECTORY install方式,如果这条命令后面没有跟install,而你想之后运行make install,那么单纯运行make不会出错,但是最后安装完成后你会发现依然是默认的目录(/usr/local/bin)而不是你自己指定的目录。

安装后的程序及配置文件位置:


安装后默认的Redis程序放在了/usr/local/bin下面,如下图:

程序名称用途redis-serverRedis服务器的daemon启动程序redis-cli命令行工具,当然也可以使用telnet来操作数据库redis-benchmark性能测试工具,测试redis在当前系统以及硬件配置下的读写性能redis-check-aof用于修复出问题的AOF文件redis-check-dump用于修复出问题的dump.rdb文件redis-sentinel用户集群管理

配置文件位置在源码包中,安装并不会复制配置文件,需要手动拷贝配置文件。操作如下:

先在/etc/下面建立一个文件夹名称为redis,这也是为了便于管理

这里要把配置文件改个名词,改成6379.conf,为什么呢?因为跟启动脚本里面的CONF这个变量的设置有关,它默认使用的是REDISPORT这个变量为配置文件名称,下一节就会看到。

关于分配器


本来想把分配器单独写一篇,后来觉得还是应该放在这里比较合适,这样可以保持一个连贯性。安装Redis经常会出现在分配器报错问题,网上的一般建议都直接使用Linux系统的libc分配器来解决,但是没有告诉如何使用性能更好的jemalloc分配器来安装,因为Redis程序本身不带内存管理机制,它是使用其他的内存分配器。

查看压缩包目录下的README文档,如下图:

Redis安装时使用的默认分配器为jemalloc,如果你的系统没有,那么安装Redis就会报错,如下图:

提示说没有这个文件或者目

MALLOC是一个环境变量,如果有这个环境变量就会用这个变量去建立Redis,如果没有就需要在安装的时候指定这个参数。一般情况下系统是没有这个环境变量的。

libc并不是Redis默认的分配器,默认的是jemalloc,因为这个分配器的性能比libc要好,主要反映在内存碎片率上(内存碎片太多,对纯内存数据的性能是有很大影响的)。Redis在编译的时候,先判断是否是否使用jemallocBSD提供的内存分配管理模块),如果都没有就会使用标准的libc中的内存管理函数,但使用标准的libc需要手动指定参数。

如果不想使用jemalloc分配器,那么在安装时使用make MALLOC=libc 就可以解决上面那个报错。这也是网上常规的解决办法。如果想使用jemalloc那么就按照上面的操作步骤来安装。


常用分配器:

  • tcmalloc 谷歌的内存分配管理模块

  • jemalloc BSD提供的管理模块

  • libc Linux系统自带的

未完待续。。。。

      本文转自linuxjavachen  51CTO博客,原文链接:http://blog.51cto.com/littledevil/1790865,如需转载请自行联系原作者

你可能感兴趣的文章
EAGAIN、EWOULDBLOCK、EINTR与非阻塞 长连接
查看>>
善于总结所做所学的内容
查看>>
Lua-简洁、轻量、可扩展的脚本语言
查看>>
org.hibernate.MappingException: entity class not found hbm可以解析,但是实体类不能解析...
查看>>
Android -- Drag&&Drop
查看>>
Extjs4:改变Grid单元格背景色(转载)
查看>>
中医无绝症[转载]
查看>>
ZendStudio10.6.1如何安装最新的集成svn小工具?
查看>>
PHP中$_SERVER的详细参数与说明
查看>>
jquery easyui datagrid mvc server端分页排序筛选的实现
查看>>
去了大公司就一定能学到很牛的技术么?
查看>>
methanol 模块化的可定制的网页爬虫软件,主要的优点是速度快。
查看>>
IOS开发之表视图(UITableView)
查看>>
Notepad++去除代码行号的几种方法
查看>>
polay定理总结
查看>>
IIS如何配置可以下载APK、IPA文件
查看>>
CodeForces 396C 树状数组 + DFS
查看>>
[sharepoint]rest api文档库文件上传,下载,拷贝,剪切,删除文件,创建文件夹,修改文件夹属性,删除文件夹,获取文档列表...
查看>>
远程桌面退出全屏/不能全屏/全屏切换的技巧
查看>>
【Java】Float计算不准确
查看>>