【菜鸟玩Linux开发】Redis安装和自启动配置
Redis是一个C实现的基于内存、可持久化的键值对数据库,在分布式服务中常作为缓存服务。本篇将介绍在CentOS下如何从零开始安装到配置启动服务。
一. 安装Redis
Redis的安装其实相当简单,推荐的方式是下载redis的源码,并在本机编译后安装。
首次进入主文件夹的下载目录下,执行wget下载源码
- [zhxilin@localhost ~]$ cd 下载
- [zhxilin@localhost 下载]$ wget http://download.redis.io/redis-stable.tar.gz
接下来解压之后,移动到/usr/redis目录下
- [zhxilin@localhost 下载]$ tar -zxvf redis-stable.tar.gz
- [zhxilin@localhost 下载]$ su mv redis-stable /usr/redis
然后进入redis目录,执行make命令,编译redis源码
- [root@localhost 下载]# cd /usr/redis/
- [root@localhost redis]# make
编译完成之后,在src目录下有2个重要程序生成,一个是redis-server,另一个是redis-cli;接着进入src目录,执行make install,这时会把这些可执行程序拷贝到/usr/local/bin目录下,由于/usr/local/bin是在系统的环境变量$PATH下定义的,因此终端在任意位置就可以执行redis-server和redis-cli了。
- [root@localhost redis]# cd src/
- [root@localhost src]# make install
至此安装redis的工作就完成了。
我们来看看编译出来的几个程序分别是干什么的:
redis-server:顾名思义,redis服务
redis-cli:redis client,提供一个redis客户端,以供连接到redis服务,进行增删改查等操作
redis-sentinel:redis实例的监控管理、通知和实例失效备援服务
redis-benchmark:redis的性能测试工具
redis-check-aof:若以AOF方式的持久化,当意外发生时用来快速修复
redis-check-rdb:若以RDB方式的持久化,当意外发生时用来快速修复
安装完成之后,启动redis-server,并运行redis-cli进行测试
- [zhxilin@localhost ~]$ redis-server
- [zhxilin@localhost ~]$ redis-cli
- 127.0.0.1:> PING
- PONG
- 127.0.0.1:>
如此说明redis服务已经正常工作,如果redis服务未启动,则运行redis-cli时会报Could not connect to Redis at 127.0.0.1:6379: Connection refused的错误。
二. 配置自启动
为了让redis-server能在系统启动时自动运行,需要将redis服务作为守护进程(daemon)来运行,我们回到/usr/redis/目录中找到一个redis.conf的文件,这个文件是redis服务运行时加载的配置,我们先观察一下其中的内容
- [zhxilin@localhost redis]$ vi redis.conf
此文件内容非常长,但是大部分是注释,我们重点关注其中的几个设置daemonize和pidfile:
其中daemonize默认值是false,pidfile默认值是pidfile /var/run/redis_6379.pid
第一个表示是否daemon化,显然我们要把它改成daemonize yes;
第二个表示当服务以守护进程方式运行时,redis默认会把pid写入/var/run/redis_6379.pid文件,服务运行中该文件就存在,服务一旦停止该文件就自动删除,因而可以用来判断redis是否正在运行。
保存后退出。
有了基本配置,redis还需要有一个管理启动、关闭、重启的一个脚本。redis源码里其实已经提供了一个初始化脚本,位置在/usr/redis/utils/redis_init_script。
我们来看看这个脚本做了些什么:
- #!/bin/sh#
- REDISPORT=
- EXEC=/usr/local/bin/redis-server
- CLIEXEC=/usr/local/bin/redis-cli
- PIDFILE=/var/run/redis_${REDISPORT}.pid
- CONF="/etc/redis/${REDISPORT}.conf"
- case "$1" in
- start)
- if [ -f $PIDFILE ]
- then
- echo "$PIDFILE exists, process is already running or crashed"
- else
- echo "Starting Redis server..."
- $EXEC $CONF
- fi
- ;;
- stop)
- if [ ! -f $PIDFILE ]
- then
- echo "$PIDFILE does not exist, process is not running"
- else
- PID=$(cat $PIDFILE)
- echo "Stopping ..."
- $CLIEXEC -p $REDISPORT shutdown
- while [ -x /proc/${PID} ]
- do
- echo "Waiting for Redis to shutdown ..."
- sleep
- done
- echo "Redis stopped"
- fi
- ;;
- *)
- echo "Please use start or stop as first argument"
- ;;
- esac
脚本中指定了端口、server路径、cli路径、pidfile路径以及conf路径,上述标黄的地方都需要正确配置,多说一句,如果在安装时执行了make install,那么这里的脚本不需要做多大改动,因为make install把server和cli都拷到/usr/local/bin下面了。
另外看到这里conf的路径,我们需要把redis目录下的redis.conf文件拷贝到/etc/redis/6379.conf
- [root@localhost utils]# cd /etc
- [root@localhost etc]# mkdir redis
- [root@localhost etc]# cp /usr/redis/redis.conf /etc/redis/.conf
接着将redis_init_script脚本拷贝到/etc/init.d/redisd
- [root@localhost etc]# cp /usr/redis/utils/redis_init_script /etc/init.d/redisd
在/etc/init.d下的脚本都是可以在系统启动是自动启动的服务,而现在还缺一个系统启动时的配置:
- [root@localhost zhxilin]# chkconfig redisd on
然后就会发现报了一个错误:服务 redisd 不支持 chkconfig ?
参考这篇文章, 这是因为我们需要在redis_init_script的开头加一个小改动:
- #!/bin/sh
# chkconfig:
# description: Redis is a persistent key-value database
至于这里2345 90 10分别代表什么意思,请参考上面的文章链接。
保存完重新拷贝到/etc/init.d/redisd后,再运行chkconfig就完成了。
一切就绪之后,可以执行以下命令检验service是否设置成功:
- [root@localhost zhxilin]# service redisd start
- [root@localhost zhxilin]# service redisd stop
等价于
- [root@localhost zhxilin]# /etc/init.d/redisd start
- [root@localhost zhxilin]# /etc/init.d/redisd stop
最后重启一下系统吧,进入系统之后直接运行redis-cli检验redis服务是否已经自动运行了。
Ref:
http://wdxtub.com/2016/07/05/redis-guide/
【菜鸟玩Linux开发】Redis安装和自启动配置的更多相关文章
- 【菜鸟玩Linux开发】在Linux中使用VS Code编译调试C++项目
最近项目需求,需要在Linux下开发C++相关项目,经过一番摸索,简单总结了一下如何通过VS Code进行编译调试的一些注意事项. 关于VS Code在Linux下的安装这里就不提了,不管是CentO ...
- 【菜鸟玩Linux开发】通过MySQL自动同步刷新Redis
在服务端开发过程中,一般会使用MySQL等关系型数据库作为最终的存储引擎,Redis其实也可以作为一种键值对型的数据库,但在一些实际场景中,特别是关系型结构并不适合使用Redis直接作为数据库.这俩家 ...
- 转载:【菜鸟玩Linux开发】通过MySQL自动同步刷新Redis
转载: http://www.cnblogs.com/zhxilin/archive/2016/09/30/5923671.html
- 【菜鸟玩Linux开发】在C++里操作MySQL
MySQL是一个的开源关系型数据库,对于服务端开发来说是一个优秀的选择.本篇内容将介绍如何在C++程序里操作MySQL数据库. ———————————————————————————————————— ...
- CentOS系统下Redis安装和自启动配置的步骤
相信大家都知道Redis是一个C实现的基于内存.可持久化的键值对数据库,在分布式服务中常作为缓存服务.所以这篇文章将详细介绍在CentOS系统下如何从零开始安装到配置启动服务.有需要的可以参考借鉴. ...
- linux上redis安装配置及其防漏洞配置及其攻击方法
Linux上redis安装: 需先在服务器上安装yum(虚拟机可使用挂载的方式安装) 安装配置所需要的环境运行指令: yum -y install gcc 进入解压文件执行make 指令进行编译 执 ...
- Linux中redis安装配置及使用详解
Linux中redis安装配置及使用详解 一. Redis基本知识 1.Redis 的数据类型 字符串 , 列表 (lists) , 集合 (sets) , 有序集合 (sorts sets) , 哈 ...
- linux centos 中Tomcat的安装和自启动配置
Tomcat的安装和自启动配置将tomcat添加为linux系统服务,网上找到了很多方法,其中比较简单的如下:方法一:(亲测有效)1. 首先需要将$Tomcat_HOME/bin目录下的catalin ...
- (四)跟我一起玩Linux网络服务:DHCP服务配置之中继代理
继第三部分的DHCP服务器的设置成功,我们来做一个中继代理服务器的配置吧. 我们的虚拟机结构如图: 具体参考: (一)跟我一起玩Linux网络服务:DNS服务——BIND(/etc/named.con ...
随机推荐
- poj1753改
#include<iostream> char data[16]; int a[16]; int d[5]={0,-4,1,4,-1}; char b[16]; int flag; int ...
- 搭建angular2环境(1)
1.安装node(windows环境) 进入node官网https://nodejs.org/en/下载好后直接安装就可以了.安装完成之后可以在命令窗口查看安装的版本 2.安装npm express ...
- SVN冲突解决:当次提交的和上次提交的出现冲突
转载于知蚁博客,文章地址:http://www.letuknowit.com/archives/svn-conflict-resolution 看到那个*了吧,出现这个标记就说明本地副本的文件已经过期 ...
- String、StringBuffer、StringBuilder的区别
在日常开发过程中String字符串估计是被用到最多的变量了,最近看了一些String.StringBuffer和StringBuilder的东西,三者都可以对字符串进行操作,他们究竟有什么区别,以及适 ...
- js Function.call
提到上述的概念之前,首先想说说javascript中函数的隐含参数:arguments Arguments 该对象代表正在执行的函数和调用它的函数的参数. [function.]arguments ...
- 谈谈Activiti中流程对象之间的关系
详细见:http://www.kafeitu.me/activiti/2012/03/22/workflow-activiti-action.html (咖啡兔好牛!) 详细见: http://blo ...
- C++ --- Hellowrod
#include <iostream> int main() { ) { using namespace std; cout << "helloword"; ...
- setNeedsDisplay和setNeedsLayout
1,UIView的setNeedsDisplay和setNeedsLayout方法 首先两个方法都是异步执行的.而setNeedsDisplay会调用自动调用drawRect方法,这样可以拿到 UI ...
- .net学习笔记--序列化与反序列化
序列化其实就是将一个对象的所有相关的数据保存为一个二进制文件(注意:是一个对象) 而且与这个对象相关的所有类型都必须是可序列化的所以要在相关类中加上 [Serializable]特性 对象类型包括:对 ...
- https采集12306(复制)
package train; import java.io.IOException;import java.security.NoSuchAlgorithmException;import java. ...