`

Linux下Redis的编译安装

 
阅读更多
介绍

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

Linux下编译安装

下载redis
############目前最新稳定版##########
[root@redis ~]# wget http://download.redis.io/releases/redis-2.8.19.tar.gz


解压缩redis
[root@redis ~]# tar xzf redis-2.8.19.tar.gz


编译redis

redis的编译非常简单,已经有现成的Makefile文件,直接运行make命令即可
[root@redis redis-2.8.19]# cd redis-2.8.19
[root@redis redis-2.8.19]# make


make命令执行完成后,会在src目录下生成6个可执行文件,分别是redis-server、redis-cli、redis-benchmark、redis-check-aof、redis-check-dump、redis-sentinel,它们的作用如下:
redis-server:            Redis服务器的daemon启动程序
redis-cli:                Redis命令行操作工具。当然,你也可以用telnet根据其纯文本协议来操作
redis-benchmark:          Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能
redis-check-aof:          更新日志检查
redis-check-dump:        用于本地数据库检查
redis-sentinel:          Redis实例的监控管理、通知和实例失效备援服务,是Redis集群的管理工具

安装redis
[root@redis src]# make install


配置redis的配置文件
[root@redis redis-2.8.19]# cp redis.conf /etc/

##########编辑Redis配置文件###################
[root@redis redis-2.8.19]# vim /etc/redis.conf

    daemonize yes                      #37行    #是否以后台daemon方式运行,默认不是后台运行
    pidfile /var/run/redis/redis.pid    #41行    #redis的PID文件路径
    bind 10.168.85.25                  #64行    #绑定主机IP,默认值为127.0.0.1,我们是跨机器运行,所以需要更改
    logfile /var/log/redis/redis.log    #104行  #定义log文件位置,模式log信息定向到stdout,输出到/dev/null
    save 60 1000                        #145行  #重新定义快照的频率
    dir /usr/local/rdbfile              #188行  #本地数据库存放路径,默认为./,编译安装默认存在在/usr/local/bin下

启动测试Redis服务器
#############启动Redis服务器############
[root@redis redis-2.8.19]# redis-server /etc/redis.conf

#############查看是否启动成功###########
[root@redis redis-2.8.19]# ss -tanlp | grep redis

LISTEN    0      128            10.168.85.25:6379                    *:*      users:(("redis-server",17379,4))
#############测试Redis##################
[root@redis redis-2.8.19]# redis-cli -h 10.168.85.25 -p 6379
10.168.85.25:6379> set test hello
OK
10.168.85.25:6379> get test
"hello"

更改内核信息
#############查看日志信息###############
[root@redis redis-2.8.19]# tail -f /var/log/redis/redis.log
[5033] 04 Jan 15:47:05.378 # Server started, Redis version 2.8.19
[5033] 04 Jan 15:47:05.379 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
[5033] 04 Jan 15:47:05.379 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
[5033] 04 Jan 15:47:05.380 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
[5033] 04 Jan 15:47:05.380 * DB loaded from disk: 0.000 seconds
[5033] 04 Jan 15:47:05.380 * The server is now ready to accept connections on port 6379
日志显示有两个关于内核设置的警告信息!
##############sysctl文件###############
[root@redis ~]# echo "vm.overcommit_memory=1" >> /etc/sysctl.conf
[root@redis ~]# sysctl -p
#############kerbel####################
[root@redis ~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled




重新启动Redis服务器
#######将缓存保存到硬盘上#####
[root@redis ~]# redis-cli -h 10.168.85.25 -p 6379 BGSAVE
Background saving started
#######关闭Redis#############
[root@redis ~]# redis-cli -h 10.168.85.25 -p 6379 SHUTDOWN
########启动Redis############
[root@redis ~]# redis-server /etc/redis.conf

编辑Redis启动脚本
[root@redis ~]# vi /etc/init.d/redis
#!/bin/sh
#
# redis        init file for starting up the redis daemon
#
# chkconfig:  - 20 80
# description: Starts and stops the redis daemon.
# Source function library.
. /etc/rc.d/init.d/functions
name="redis-server"
exec="/usr/local/bin/$name"                                  # 指定redis-server命令的位置(whereis redis-server)
pidfile="/var/run/redis/redis.pid"                            # 指定redis的pid文件路径(和配置文件里保持一致)
REDIS_CONFIG="/etc/redis.conf"                                # 指定redis的配置文件路径
[ -e /etc/sysconfig/redis ] && . /etc/sysconfig/redis
lockfile=/var/lock/subsys/redis
start() {
    [ -f $REDIS_CONFIG ] || exit 6
    [ -x $exec ] || exit 5
    echo -n $"Starting $name: "
    daemon --user ${REDIS_USER-redis} "$exec $REDIS_CONFIG"
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}
stop() {
    echo -n $"Stopping $name: "
    killproc -p $pidfile $name
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}
restart() {
    stop
    start
}
reload() {
    false
}
rh_status() {
    status -p $pidfile $name
}
rh_status_q() {
    rh_status >/dev/null 2>&1
}


case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
        restart
        ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart}"
        exit 2
esac
exit $?
[root@redis ~]# chmod 700 /etc/init.d/redis
[root@redis ~]# servcie redis restart

附加信息

Redis无法编译安装报错处理?
###########make时错误信息#########
[root@redis redis-2.8.19]# make
cd src && make all
make[1]: Entering directory `/root/redis-2.8.19/src'
    CC adlist.o
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/redis-2.8.19/src'
make: *** [all] Error 2
############解决方法#############
make MALLOC=libc

vm.overcommit_memory参数解析

如果内存情况比较紧张的话,需要设定内核参数overcommit_memory,指定内核针对内存分配的策略,其值可以是0、1、2。
      0,表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
      1,表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
      2,表示内核允许分配超过所有物理内存和交换空间总和的内存
Redis在dump数据的时候,会fork出一个子进程,理论上child进程所占用的内存和parent是一样的,比如parent占用的内存为 8G,这个时候也要同样分配8G的内存给child, 如果内存无法负担,往往会造成redis服务器的down机或者IO负载过高,效率下降。所以这里比较优化的内存分配策略应该设置为 1(表示内核允许分配所有的物理内存,而不管当前的内存状态如何)。
设置方式有两种,需确定当前用户的权限活使用root用户修改:
    1:重设文件 echo 1 > /proc/sys/vm/overcommit_memory(默认为0)
    2: echo "vm.overcommit_memory=1" >> /etc/sysctl.conf  && sysctl -p
分享到:
评论

相关推荐

    redis安装离线版免编译版及离线安装需要的所有包文件

    本资源可结合我的文章《详解CentOS7下编译安装Redis5.x设置开机启动及修改端口(含redis需编译安装包和redis免编译安装包)》配合使用,同时也可单独去使用。包含redis3.0.7免编译版安装包,redis5.0.7离线安装包,...

    Linux下Redis3.2.2安装与启动配置

    本文详细介绍了在CentOS 6.5系统下安装与配置Redis 3.2.2的方法,包括下载、解压、编译安装、直接启动、配置文件启动以及脚本启动等步骤。通过这种方式,用户可以根据自己的需求选择合适的启动方式,确保Redis服务...

    linux系统redis免安装版

    在Linux系统中,Redis的免安装版本通常是指不需要通过编译源码或使用包管理器来安装的二进制版本,这使得在多台服务器上快速部署Redis变得更加便捷。以下是对“Linux系统Redis免安装版”相关知识点的详细解释: 1. ...

    linux-redis绿色版(推荐)

    在该目录下,你可以找到编译和安装Redis所需的Makefile文件。执行以下命令来编译和安装Redis: ```bash make sudo make install ``` 安装完成后,Redis服务器默认会安装在/usr/local/bin目录下,包括`redis-server...

    Linux 系统 安装redis redis-5.0.1.tar.gz 安装包

    本文将详细介绍如何在Linux上安装Redis 5.0.1版本,包括下载、解压、编译和配置等步骤。 1. **下载Redis源码包**: 首先,我们需要获取Redis的源代码。你可以通过访问Redis官方网站或者使用`wget`命令从互联网下载...

    linux下redis安装步骤

    ### Linux 下 Redis 安装步骤详解 #### 一、Redis 概述 Redis 是一个开源的 Key-Value 数据库系统,使用 ANSI C 语言编写,支持网络连接并且可以在内存中运行,同时也支持数据持久化。它提供了丰富的数据结构操作,...

    Linux下Redis的安装和部署.docx

    Linux 下 Redis 的安装和部署 Redis 是当前比较热门的 NOSQL 系统之一,它是一个 key-value 存储系统。和 Memcache 类似,但很大程度补偿了 Memcache 的不足,它支持存储的 value 类型相对更多,包括 string、list...

    linux离线安装及配置redis包括安装手册安装包

    以下是一个详细的步骤指南,帮助你在Linux系统上离线安装和配置Redis 4.0.10版本。 首先,你需要准备Redis的源码包。在这个案例中,我们有`redis-4.0.10.tar`,这是一个tar归档文件,包含Redis的源代码。为了开始...

    Linux 下Redis集群部署

    本文详细介绍了如何在 Linux 系统环境下部署 Redis 集群的全过程,包括安装必要的开发工具、编译安装 Redis、配置单机模式下的 Redis 服务,以及安装和使用 `redis-trib.rb` 等关键步骤。希望这些内容能够帮助到正在...

    Linux下Redis的安装和部署

    在Linux环境下安装Redis主要分为以下步骤: 1. **下载Redis**:首先,你需要从Redis官方网站下载稳定版本的Redis压缩包。例如,你可以选择版本4.0.6。 2. **上传与解压**:将下载的Redis压缩包通过SSH等远程管理...

    redis-3.0.7免编译安装压缩包

    还在为环境没有网络,无法安装redis源码包的编译组件而烦恼吗,这款解压即用的redis已编译安装包,完美符合您的要求,解压后进入目录执行src/redis-server redis.conf 即可开启服务

    linux离线安装redis

    在Linux环境中离线安装Redis是常见的需求,尤其是在内网服务器上,由于无法直接访问公网,我们需要提前下载Redis的源码包并手动安装。下面将详细解释如何进行这一过程。 首先,你需要从Redis官方网站获取Redis的...

    linux中redis安装包和redis-desktop-manager-0.9.3.817

    本文将详细讲解如何在Linux上安装Redis,包括Redis 4.0.2和5.0.0两个版本,以及如何配合使用Redis Desktop Manager进行图形化管理。 首先,我们来了解Redis的基本概念。Redis是一个基于内存的数据结构存储系统,...

    linux安装redis服务

    编译完成后,在Redis源代码目录的`src`文件夹中可以找到可执行程序,安装后这些可执行文件会被放置在`/usr/local/bin`目录下。 #### 五、启动和停止Redis - **直接启动** 直接运行`redis-server`命令启动Redis...

    Linux离线安装redis所需的依赖:gcc-c++.tar.gz,gcc.tar.gz,redis-5.0.4.tar.gz

    这里我们将详细介绍如何使用给定的文件:gcc-c++.tar.gz,gcc.tar.gz和redis-5.0.4.tar.gz在Linux上离线安装Redis 5.0.4。 首先,我们来看依赖文件: 1. **gcc-c++.tar.gz**:这是GNU编译器集合的C++部分,用于编译...

    详解linux下redis安装、启动与停止,redis做成服务

    如果的Linux可以链接网络,那么可以直接联网下载。...我们会看到在该目录下多了一个文件,redis-3.0.2 , 我们进入该目录,然后编译执行命令make,等待10左右,我们就会看到已经编译完了,我们看到如下

    linux免安装 redis

    在“linux免安装 redis”的主题下,我们主要关注如何在Linux环境中不通过传统安装步骤快速启动并使用Redis服务。以下是相关知识点的详细说明: 1. **Redis的免安装方式**: Redis通常可以通过编译源代码的方式在...

    Redis 简介及在 Linux 下的编译安装

    在 Linux 系统下编译安装 Redis 需要以下步骤: 1. **环境准备**: 在开始之前,确保系统已经安装了基础的开发工具,例如 `gcc` 编译器、`make` 工具等。可以使用下面的命令检查并安装: ```bash sudo apt-get ...

    linux下安装redis服务器

    Linux 下安装 Redis 服务器 Linux 下安装 Redis 服务器需要按照以下步骤进行: 一、准备安装包 在 Linux 下安装 Redis 服务器之前,需要先准备好 Redis 的安装包。可以从 Redis 的官方网站下载最新版本的安装包,...

Global site tag (gtag.js) - Google Analytics