Redis安装配置.docx

上传人:b****5 文档编号:29600913 上传时间:2023-07-25 格式:DOCX 页数:16 大小:822.08KB
下载 相关 举报
Redis安装配置.docx_第1页
第1页 / 共16页
Redis安装配置.docx_第2页
第2页 / 共16页
Redis安装配置.docx_第3页
第3页 / 共16页
Redis安装配置.docx_第4页
第4页 / 共16页
Redis安装配置.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

Redis安装配置.docx

《Redis安装配置.docx》由会员分享,可在线阅读,更多相关《Redis安装配置.docx(16页珍藏版)》请在冰豆网上搜索。

Redis安装配置.docx

Redis安装配置

“纸上得来终觉浅,绝知此事要躬行。

——陆游《冬夜读书示子聿》

学习Redis最好的办法就是动手尝试它。

在介绍Redis最核心的内容之前,本章先来介绍一下如何安装和运行Redis,以及Redis的基础知识,使读者可以在之后的章节中一边学习一边实践。

1、安装Redis

安装Redis是开始Redis学习之旅的第一步。

在安装Redis前需要了解Redis的版本规则以选择最适合自己的版本,Redis约定次版本号(即第一个小数点后的数字)为偶数的版本是稳定版(如2.4版、2.6版),奇数版本是非稳定版(如2.5版、2.7版),推荐使用稳定版本进行开发和在生产环境使用。

1)在POSIX系统中安装

Redis兼容大部分POSIX系统,包括Linux、OSX和BSD等,在这些系统中推荐直接下载Redis源代码编译安装以获得最新的稳定版本。

Redis最新稳定版本的源代码可以从地址http:

//download.redis.io/redis-stable.tar.gz下载。

下载安装包后解压即可使用make命令完成编译,完整的命令如下:

wgethttp:

//download.redis.io/redis-stable.tar.gz

tarxzfredis-stable.tar.gz

cdredis-stable

make

Redis没有其他外部依赖,安装过程很简单。

编译后在Redis源代码目录的src文件夹中可以找到若干个可执行程序,最好在编译后直接执行makeinstall命令来将这些可执行程序复制到/usr/local/bin目录中以便以后执行程序时可以不用输入完整的路径。

在实际运行Redis前推荐使用maketest命令测试Redis是否编译正确,尤其是在编译一个不稳定版本的Redis时。

提示:

除了手工编译外,还可以使用操作系统中的软件包管理器来安装Redis,但目前

大多数软件包管理器中的Redis的版本都较古老。

考虑到Redis的每次升级都提供了对以往

版本的问题修复和性能提升,使用最新版本的Redis往往可以提供更加稳定的体验。

如果

希望享受包管理器带来的便利,在安装前请确认您使用的软件包管理器中Redis的版本并

了解该版本与最新版之间的差异。

http:

//redis.io/topics/problems中列举了一些在以往版本

中存在的已知问题。

2)在OSX系统中安装

OSX下的软件包管理工具Homebrew和MacPorts均提供了较新版本的Redis包,所以我们可以直接使用它们来安装Redis,省去了像其他POSIX系统那样需要手动编译的麻烦。

下面以使用Homwbrew安装Redis为例。

1.安装Homebrew

在终端下输入ruby-e"(curl-fsSkL

Homebrew。

如果之前安装过Homebrew,请执行brewupdate来更新Homebrew,以便安装较新版的

Redis。

2.通过Homebrew安装Redis

使用brewinstall软件包名可以安装相应的包,此处执行brewinstallredis来安装Redis:

$brewinstallredis

==>Downloading

Alreadydownloaded:

/Library/Caches/Homebrew/redis-2.6.9.tar.gz

==>make-C/private/tmp/redis-OV9u/redis-2.6.9/srcCC=cc

==>Caveats

Tohavelaunchdstartredisatlogin:

ln-sfv/usr/local/opt/redis/*.plist~/Library/LaunchAgents

Thentoloadredisnow:

launchctlload~/Library/LaunchAgents/homebrew.mxcl.redis.plist

Or,ifyoudon'twant/needlaunchctl,youcanjustrun:

redis-server/usr/local/etc/redis.conf

/usr/local/Cellar/redis/2.6.9:

9files,740K,builtin6seconds

OSX系统从Tiger版本开始引入了launchd工具来管理后台程序,如果想让Redis随系统自

动运行可以通过以下命令配置launchd:

ln-sfv/usr/local/opt/redis/*.plist~/Library/LaunchAgents

launchctlload~/Library/LaunchAgents/homebrew.mxcl.redis.plist

通过launchd运行的Redis会加载位于/usr/local/etc/redis.conf的配置文件。

3)在Windows中安装

Redis官方不支持Windows。

2011年微软①向Redis提交了一个补丁,以使Redis可以在Windows下编译运行,但被SalvatoreSanfilippo拒绝了,原因是在服务器领域上Linux已经得到了广泛的使用,让Redis能在Windows下运行相比而言显得不那么重要。

并且Redis使用了如写时复制等很多操作系统相关的特性,兼容Windows会耗费太大的精力而影响Redis其他功能的开发。

尽管如此微软还是发布了一个可以在Windows运行的Redis分支②,但是考虑到其版本更新速度比较慢(截至本书交稿,其最新的版本是基于Redis2.4进行开发的),并不建议使用。

注释:

①微软开放技术有限公司(MicrosoftOpenTechnologiesInc.),专注于参与开源项

目、开放标准工作组以及提出倡议。

注释:

②见SOpenTech/Redis。

如果想使用Windows学习或测试Redis可以通过Cygwin软件或虚拟机(如VirtualBox)来完成。

Cygwin能够在Windows中模拟Linux系统环境。

Cygwin实现了一个LinuxAPI接口,使得大部分Linux下的软件可以重新编译后在Windows下运行。

Cygwin还提供了自己的软件包管理工具,让用户能够方便地安装和升级几千个软件包。

借助Cygwin,我们可以在Windows上通过源代码编译安装最新版的Redis。

1.安装Cygwin

从Cygwin官方网站()下载setup.exe程序,setup.exe既是Cygwin的安装包,又是Cygwin的软件包管理器。

运行setup.exe后进入安装向导。

前几步会要求选择下载源、安装路径、代理和下载镜像等,可以根据具体需求选择,一般来说一路单击“Next”即可。

之后会出现软件包管理界面,如下图所示。

编译安装Redis需要用到的包有gcc和make,二者都可以在“Devel”分类中找到。

在“New”字段中标记为“Skip”的包表示不安装,单击“Skip”切换成需要安装的版本号即可令Cygwin在稍后安装该版本的包。

图中所示gcc包的状态为“Keep”是因为作者之前已经安装过该包了,同样如果读者在退出安装向导后还想安装其他软件包,只需要重新运行setup.exe程序再次进入此界面即可。

为了方便使用,我们还可以安装wget(用于下载Redis源代码,也可以手动下载并使用Windows资源管理器将其复制到Cygwin对应的目录中,见下文介绍)和vim(用于修改Redis的源代码使之可以在Cygwin下正常编译)。

之后单击下一步,安装向导就会自动完成下载和安装工作了。

安装成功后打开CygwinTerminal程序即可进入Cygwin环境,Cygwin会将Windows中的目录映射到Cygwin中。

如果安装时没有更改安装目录,Cygwin环境中的根目录对应的Windows中的目录是C:

\cygwin。

2.修改Redis源代码

下载和解压Redis的过程和1)节中介绍的一样,不过在make之前还需要修改Redis的源

代码以使其可以在Cygwin下正常编译。

首先编辑src目录下的redis.h文件,在头部加入:

#ifndefSA_ONSTACK

#defineSA_ONSTACK0

#endif

而后编辑src目录下的object.c文件,在头部加入:

#definestrtold(a,b)((longdouble)strtod((a),(b)))

3.编译Redis

同1)节一样,执行make命令即可完成编译。

注意Cygwin环境无法完全模拟Linux系统,比如Cygwin的fork不支持写时复制;另

外,Redis官方也并不提供对Cygwin的支持,Cygwin环境只能用于学习Redis,运行Redis的最佳系统是Linux和OSX,官方推荐的生产系统是Linux。

2、启动和停止Redis

安装完Redis后的下一步就是启动它,本节将分别介绍在开发环境和生产环境中运行

Redis的方法以及正确停止Redis的步骤。

在这之前首先需要了解Redis包含的可执行文件都有哪些,下表中列出了这些程序的名

称以及对应的说明。

如果在编译后执行了makeinstall命令,这些程序会被复制到/usr/local/bin

目录内,所以在命令行中直接输入程序名称即可执行。

我们最常使用的两个程序是redis-server和redis-cli,其中redis-server是Redis的服务器,启

动Redis即运行redis-server;而redis-cli是Redis自带的Redis命令行客户端,是学习Redis的重要工具。

1)启动Redis

启动Redis有直接启动和通过初始化脚本启动两种方式,分别适用于开发环境和生产环

境。

1.直接启动

直接运行redis-server即可启动Redis,十分简单:

$redis-server

[5101]14Dec20:

58:

59.944#Warning:

noconfigfilespecified,usingthedefault

config.Inordertospecifyaconfigfileuseredis-server/path/to/redis.conf

[5101]14Dec20:

58:

59.948*Maxnumberofopenfilessetto10032

...

[5101]14Dec20:

58:

59.949#Serverstarted,Redisversion2.6.9

[5101]14Dec20:

58:

59.949*Theserverisnowreadytoacceptconnectionsonport6379

Redis服务器默认会使用6379端口①,通过--port参数可以自定义端口号:

注释:

①6379是手机键盘上MERZ对应的数字,MERZ是一名意大利歌女的名字。

$redis-server--port6380

2.通过初始化脚本启动Redis

在Linux系统中可以通过初始化脚本启动Redis,使得Redis能随系统自动运行,在生产环境中推荐使用此方法运行Redis,这里以Ubuntu和Debian发行版为例进行介绍。

在Redis源代码目录的utils文件夹中有一个名为redis_init_script的初始化脚本文件,内容如下:

#!

/bin/sh

##

SimpleRedisinit.dscriptconceivedtoworkonLinuxsystems

#asitdoesuseofthe/procfilesystem.

REDISPORT=6379

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[-fPIDFILE]

then

echo"PIDFILEexists,processisalreadyrunningorcrashed"

else

echo"StartingRedisserver..."

EXECCONF&

fi

;;

stop)

if[!

-fPIDFILE]

then

echo"PIDFILEdoesnotexist,processisnotrunning"

else

PID=(catPIDFILE)

echo"Stopping..."

CLIEXEC-pREDISPORTshutdown

while[-x/proc/{PID}]

do

echo"WaitingforRedistoshutdown..."

sleep1

done

echo"Redisstopped"

fi

;;

*)

echo"Pleaseusestartorstopasfirstargument"

;;

esac

我们需要配置Redis的运行方式和持久化文件、日志文件的存储位置等,具体步骤如下。

(1)配置初始化脚本。

首先将初始化脚本复制到/etc/init.d目录中,文件名为redis_端口号,

其中端口号表示要让Redis监听的端口号,客户端通过该端口连接Redis。

然后修改脚本第6行的REDISPORT变量的值为同样的端口号。

(2)建立需要的文件夹。

建立表中列出的目录。

(3)修改配置文件。

首先将配置文件模板复制到/etc/redis目录中,以端口号命名(如“6379.conf”),然后按照下表对其中的部分参数进行编辑。

下表需要修改的配置及说明

现在就可以使用/etc/init.d/redis_端口号start来启动Redis了,而后需要执行下面的命令使

Redis随系统自动启动:

Debian(Ubuntu)系统:

sudoupdate-rc.dredis_端口号defaults

Redhat(Centos,Oracle)系统

在初始化脚本文件(redis_init_script)是第2行添加如下内容,

#chkconfig:

23458090

然后执行,

chkconfig --add redis_端口号

2)停止Redis

考虑到Redis有可能正在将内存中的数据同步到硬盘中,强行终止Redis进程可能会导致

数据丢失。

正确停止Redis的方式应该是向Redis发送SHUTDOWN命令,方法为:

redis-cli>>SHUTDOWN

当Redis收到SHUTDOWN命令后,会先断开所有客户端连接,然后根据配置执行持久化,

最后完成退出。

Redis可以妥善处理SIGTERM信号,所以使用“killRedis进程的PID”也可以正常结束

Redis,效果与发送SHUTDOWN命令一样。

3、Redis集群

1)创建Redis实例

参见第二章,创建至少六个Redis实例,比如:

10.10.10.123:

6379

10.10.10.123:

7379

10.10.10.123:

6479

10.10.10.123:

7479

10.10.10.123:

6579

10.10.10.123:

7579

Redis配置参照下面的样例:

#GENERAL

daemonizeno

tcp-backlog511

timeout0

tcp-keepalive0

loglevelnotice

databases16

dir/opt/redis/data

slave-serve-stale-datayes

#slave只读

slave-read-onlyyes

#notusedefault

repl-disable-tcp-nodelayyes

slave-priority100

#打开aof持久化

appendonlyyes

#每秒一次aof写

appendfsynceverysec

#关闭在aofrewrite的时候对新的写操作进行fsync

no-appendfsync-on-rewriteyes

auto-aof-rewrite-min-size64mb

lua-time-limit5000

#打开redis集群

cluster-enabledyes

#节点互连超时的阀值

cluster-node-timeout15000

cluster-migration-barrier1

slowlog-log-slower-than10000

slowlog-max-len128

notify-keyspace-events""

hash-max-ziplist-entries512

hash-max-ziplist-value64

list-max-ziplist-entries512

list-max-ziplist-value64

set-max-intset-entries512

zset-max-ziplist-entries128

zset-max-ziplist-value64

activerehashingyes

client-output-buffer-limitnormal000

client-output-buffer-limitslave256mb64mb60

client-output-buffer-limitpubsub32mb8mb60

hz10

aof-rewrite-incremental-fsyncyes

2)配置集群和主从

在终端命令中键入:

redis-cli-h10.10.10.123-p6379,

然后在当前环境下键入:

CLUSTERMEET10.10.10.1237379,

以此类推,把六个redis实例加入集群中。

把10.10.10.123:

7379设置为10.10.10.123:

6379的从库,

在终端命令中键入:

redis-cli-h10.10.10.123-p7379,

然后在当前环境键入:

CLUSTERREPLICATE<6379的node_id>(可以通过CLUSTERNODES命令查看各个实例的node_id),

以此类推,把10.10.10.123:

7479设置为10.10.10.123:

6479的从库,把10.10.10.123:

7579设置为10.10.10.123:

6579的从库。

3)分配Slots(槽)

可以通过“CLUSTERADDSLOTS[slot...]将一个或多个槽(slot)指派(assign)给当前节点。

”命令给Redis实例分配Slots。

可以通过init_redis_slots.sh脚本批量分配Slots,脚本如下:

#!

/bin/bash

#AuthorWangWei

host=$1

port=$2

begin=$3

end=$4

if[!

${host}]

then

echo"pleaseinputhostip!

"

readhost

fi

if[!

${port}]

then

echo"pleaseinputhostport!

"

readport

fi

if[!

${begin}]

then

echo"pleaseinputredisslotsbeginposition!

"

readbegin

fi

if[!

${end}]

then

echo"pleaseinputredisslotsendposition!

"

readend

fi

slots=""

while[${begin}-le${end}]

do

if[${#slots}-gt0]

then

slots=${slots}''${begin}

else

slots=${begin}

fi

begin=`expr${begin}+1`

done

#executeredis-cli

echo`redis-cli-h${host}-p${port}CLUSTERADDSLOTS${slots}`

在终端依次键入:

./init_redis_slots.sh10.10.10.123637905000

./init_redis_slots.sh10.10.10.1236479500110000

./init_redis_slots.sh10.10.10.12365791000116383

可以通过CLUSTERNODES查看Slots的分配情况

注:

slots共有16384个,slots只能分配给主库

4、常用集群命令

CLUSTERINFO打印集群的信息

CLUSTERNODES列出集群当前已知的所有节点(node),以及这些节点的相关信息。

节点

CLUSTERMEET将ip和port所指定的节点添加到集群当中,让它成为集群的一份子。

CLUSTERFORGET从集群中移除node_id指定的节点。

CLUSTERREPLICATE将当前节点设置为node_id指定的节点的从节点。

CLUSTERSAVECONFIG将节点的配置文件保存到硬盘里面。

槽(slot)

CLUSTERADDSLOTS[slot...]将一个或多个槽(slot)指派(assign)给当前节点。

CLUSTERDELSLOTS[slot...]移除一个或多个槽对当前节点的指派。

CLUSTERFLUSHSLOTS移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。

CLUSTERSETSLOTNODE将槽slot指派给node_id指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。

CLUSTERSETSLOTMIGRATING将本节点的槽slot迁移到node_id指定的节点中。

CLUSTERSETSLOTIMPORTING从node_id指定的节点中导入槽slot到本节点。

CLUS

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1