Redis从单机到集群--安装篇(单机)
Redis作为一个可分布式部署也可单机的nosql数据库性能是十分优异的,也正如此,很多互联网企业都会选择Redis作为缓存中间库使用,比如秒杀服务,购物车服务,session共享等等方面。具体的应用场景太多,不一一举例。
Redis的性能为何如此优异(横向与关系型数据库比,性能甩几条街)?因为它是内存中运行的,并且可以灵活的持久化到磁盘的nosql型数据库。
单机是集群的基础,单机通过互相之间的通信协议保持数据共享就是集群了。因此,不管学习什么集群,单机是一定应该先学习的。Redis当然不可免俗。这一篇主要就是学习单机的Redis部署。
Redis的官网为redis.io,在本例中选择的版本为5.0.4源码包版本,下载完毕后上传服务器。
一,Redis源码包的结构
为什么要说它的结构?因为安装的手法是和它的结构有关系哦。不废话,tar 三连,解压,移动到 /usr/local/src 进入编译目录。
[[email protected] redis-5.0.4]# pwd
/usr/local/src/redis-5.0.4
[[email protected] redis-5.0.4]# ll
total 252
-rw-rw-r-- 1 root root 99445 Mar 19 2019 00-RELEASENOTES
-rw-rw-r-- 1 root root 53 Mar 19 2019 BUGS
-rw-rw-r-- 1 root root 1894 Mar 19 2019 CONTRIBUTING
-rw-rw-r-- 1 root root 1487 Mar 19 2019 COPYING
drwxrwxr-x 6 root root 124 Mar 19 2019 deps
-rw-rw-r-- 1 root root 11 Mar 19 2019 INSTALL
-rw-rw-r-- 1 root root 151 Mar 19 2019 Makefile
-rw-rw-r-- 1 root root 4223 Mar 19 2019 MANIFESTO
-rw-rw-r-- 1 root root 20555 Mar 19 2019 README.md
-rw-rw-r-- 1 root root 62155 Mar 19 2019 redis.conf
-rwxrwxr-x 1 root root 275 Mar 19 2019 runtest
-rwxrwxr-x 1 root root 280 Mar 19 2019 runtest-cluster
-rwxrwxr-x 1 root root 281 Mar 19 2019 runtest-sentinel
-rw-rw-r-- 1 root root 9710 Mar 19 2019 sentinel.conf
drwxrwxr-x 3 root root 4096 Mar 19 2019 src
drwxrwxr-x 10 root root 167 Mar 19 2019 tests
drwxrwxr-x 8 root root 4096 Mar 19 2019 utils
以上目录重点要说明的是deps和utils这两个目录,deps为Redis的依赖目录,要正确的安装Redis需要进入该目录编译安装它的一些依赖。
我选择的是5.0.4版本,自5.0版本后Redis天然支持集群了,因此在utils (工具包)目录下有create-cluster 这个目录,利用该目录内的脚本即可快速的安装Redis集群了。
[[email protected] redis-5.0.4]# cd utils/
[[email protected] utils]# ls
build-static-symbols.tcl generate-command-help.rb install_server.sh redis_init_script.tpl whatisdoing.sh
cluster_fail_time.tcl graphs lru redis-sha1.rb
corrupt_rdb.c hashtable redis-copy.rb releasetools
create-cluster hyperloglog redis_init_script speed-regression.tcl
[[email protected] deps]# pwd
/usr/local/src/redis-5.0.4/deps
[[email protected] deps]# ll
total 24
drwxrwxr-x 4 root root 4096 Mar 19 2019 hiredis
drwxrwxr-x 11 root root 4096 Mar 19 2019 jemalloc
drwxrwxr-x 2 root root 118 Mar 19 2019 linenoise
drwxrwxr-x 6 root root 128 Mar 19 2019 lua
-rw-rw-r-- 1 root root 2544 Mar 19 2019 Makefile
-rw-rw-r-- 1 root root 4855 Mar 19 2019 README.md
-rwxrwxr-x 1 root root 282 Mar 19 2019 update-jemalloc.sh
上面所显示的四个目录 hiredis,jemalloc,linenoise,lua,是需要安装的依赖。当然,这四个也是源码格式,都有Makefile 了嘛。(好多朋友辛苦的从git下载jemalloc,其实完全没必要)。
二,编译前的环境准备
gcc编译器是必须的,autoconf也是编译常客。
yum install gcc autoconf -y #安装它们,autoconf是如果有单独安装jemalloc的时候使用。
三,编译依赖
进入deps目录,执行如下命令:
[[email protected] deps]# pwd
/usr/local/src/redis-5.0.4/deps
make hiredis jemalloc linenoise lua#要 4 5分钟的样子就编译好了。
四,进入redis的编译目录,正式编译Redis。
[[email protected] redis-5.0.4]# pwd
/usr/local/src/redis-5.0.4
make && make install #执行完毕后,echo $? 看一下是否成功,0为成功,其余为失败。
进入src目录启动redis的daemon。
可以看到很多警告,这些警告是告诉你并没有配置Redis,全部是使用的默认值,并且内核参数也没有修改,这些Redis的使用问题留待以后讲解,这里只记录讲解Redis的安装。
总结:
redis默认是使用jemalloc来管理内存的,jemalloc相比较libc而言是能更好的发挥Redis的哦。make MALLOC=libc && make install 这样的命令最好不要用,那样显得不是很专业哦(用libc管理内存不是一个好的选项,既然有jemalloc的支持,为什么还要用libc呢?)。
如果有报错,请使用命令 make distclean 清除上次的编译残留后并解决错误后再次编译。
单独安装jemalloc的方法为:
进入jemalloc的源码目录。
[[email protected] jemalloc]# pwd
/usr/local/src/redis-5.0.4/deps/jemalloc
./configure --prefix=/usr/local/jemalloc#指定安装到的位置
make && make install_bin install_include install_lib#去除干扰,不安装jemalloc的说明文档,因为,如果只make install 很可能报错:install: cannot stat ‘doc/jemalloc.html’: No such file or directory
echo /usr/local/jemalloc/lib >> /etc/ld.so.conf
ldconfig #这两个命令是讲jemalloc加入系统编译环境变量。如果不仅仅是redis使用jemalloc的话,请单独安装它。