当前位置: 首页 > 科技观察

如何在CentOS7上安装Redis服务器_1

时间:2023-03-20 22:20:28 科技观察

大家好,本文的主题是Redis,我们将在CentOS7上安装它。编译源代码,安装二进制文件,创建和安装文件。安装好它的组件后,我们还要配置redis,就像配置操作系统参数一样。目标是让redis运行起来更加可靠和快速。  Redis服务器  Redis是一款开源的多平台数据存储软件,使用ANSIC语言编写,直接使用内存中的数据集,效率非常高。Redis支持多种编程语言,包括Lua、C、Java、Python、Perl、PHP等。Redis的代码量很小,只有30,000行左右,它只做“很少”的事情,但它做得很好。虽然工作在内存中,但是还是有数据持久化的,而且redis可靠性高,支持集群,可以很好的保障你的数据安全。  搭建Redis  redis目前没有官方的RPM安装包,我们需要从源码编译,而为了编译,我们需要安装Make和GCC。  如果你还没有安装GCC和Make,那就用yum安装。yuminstallgccmake  从官网下载tar包。卷曲http://download.redis.io/releases/redis-3.0.4.tar.gz-oredis-3.0.4.tar.gz  解压。tarzxvfredis-3.0.4.tar.gz  进入解压目录。cdredis-3.0.4  使用Make编译源文件。make  install  进入源码目录。make  将Redis服务器和客户端复制到/usr/local/bin。cpredis-serverredis-cli/usr/local/bin  ***也复制了sentinel、benchmark和check。cpredis-sentinelredis-benchmarkredis-check-aofredis-check-dump/usr/local/bin  创建redis配置文件夹。mkdir/etc/redis  在/var/lib/redis下创建一个用于保存数据的有效目录。mkdir-p/var/lib/redis/6379  系统参数  为了让redis正常工作,需要配置一些内核参数。  配置vm.overcommit_memory为1,可以避免数据截断,详见这里。sysctl-wvm.overcommit_memory=1  修改backlog连接数的最大值超过redis.conf中的tcp-backlog值,即默认值511,具体可以参考sysctl-basedipkernel.org上的网络隧道。sysctl-wnet.core.somaxconn=512  取消对transparenthugepages的支持,因为这会在redis的使用中造成延迟和内存访问问题。echonever>/sys/kernel/mm/transparent_hugepage/enabled  redis.conf  redis.conf是redis的配置文件,但是你会看到这个文件的名字是6379.conf,这个数字就是redis监控网口。如果要运行多个redis实例,建议使用此名称。  将示例redis.conf复制到/etc/redis/6379.conf。echonever>/sys/kernel/mm/transparent_hugepage/enabled  现在编辑这个文件并配置参数。vi/etc/redis/6379.conf  daemonize  设置daemonize为no,systemd需要它在前台运行,否则redis会突然挂掉。vi/etc/redis/6379.conf  pidfile  设置pidfile为/var/run/redis_6379.pid。vi/etc/redis/6379.conf  port  如果不打算使用默认端口,可以修改。port6379  loglevel  设置日志级别。port6379  #p#logfile  修改日志文件路径。logfile/var/log/redis_6379.log  dir  设置目录为/var/lib/redis/6379dir/var/lib/redis/6379  Security  以下可以提高安全运行。  Unixsockets  很多时候,客户端程序和服务端程序运行在同一台机器上,所以不需要监听网络上的socket。如果这与你的用法类似,你可以使用unixsocket而不是网络socket,为此你需要将端口配置为0,然后配置以下选项以启用unixsocket。  为unix套接字设置套接字文件。unixsocket/tmp/redis.sock  限制socket文件的权限。unixsocketperm700  现在要使redis-cli可访问,您应该使用-s参数指向套接字文件。redis-cli-s/tmp/redis.sock  requirepass  您可能需要远程访问,如果是这样,那么您应该设置密码,以便在每次操作之前都需要输入密码。requirepass"bTFBx1NYYWRMTUEyNHhsCg"  rename-command  想象一下以下命令的输出。是的,这会输出服务器的配置,因此您应该尽可能拒绝此访问。CONFIGGET*  为了限制甚至禁止这个或其他指令,可以使用rename-command命令。您必须提供命令名称和备用名称。要禁用它,您需要将备用名称设置为空字符串,这样更安全,可以防止任何人猜测命令名称。rename-commandFLUSHDB"FLUSHDB_MY_SALT_G0ES_HERE09u09u"rename-commandFLUSHALL""rename-commandCONFIG"CONFIG_MY_S4LT_GO3S_HERE09u09u"  使用密码通过unixsocket访问,修改命令  快照  默认情况下,redis会周期性的将数据集dump到我们设置的目录下的dump.rdb文件中。您可以使用save命令配置转储频率,其第一个参数是以秒为单位的时间范围,第二个参数是对数据文件所做的修改次数。  每15分钟一次,并且至少修改过一次密钥。每5分钟保存9001  且密钥已修改至少10次。每1分钟保存30010  且密钥已被修改至少10000次。save6010000  文件/var/lib/redis/6379/dump.rdb包含自上次保存以来内存数据集的转储。因为是先创建一个临时文件,然后替换之前的dump文件,所以这里不存在数据损坏问题,大家不用担心,直接copy这个文件即可。  开机时启动  可以使用systemd将redis添加到系统启动列表中。  将示例init_script文件复制到/etc/init.d,注意脚本名所代表的端口号。cputils/redis_init_script/etc/init.d/redis_6379  现在我们要使用systemd,所以在/etc/systems/system下创建一个名为redis_6379.service的单元文件。vi/etc/systemd/system/redis_6379.service  填写以下内容,详见systemd.service。  [Unit]Description=Redisonport6379[Service]Type=forkingExecStart=/etc/init.d/redis_6379startExecStop=/etc/init.d/redis_6379stop[Install]WantedBy=multi-user.target  现在加我之前在/etc/sysctl.conf中修改了memoryovercommit和backlogvalue选项。vm.overcommit_memory=1net.core.somaxconn=512  对于transparenthugepagememory的支持,没有直接的sysctl命令来控制,所以需要将下面的命令放在/etc/rc.local的末尾。echonever>/sys/kernel/mm/transparent_hugepage/enabled  总结  这样就可以启动了。通过设置这些选项,您可以将Redis服务部署到许多简单的场景中。然而,redis.conf中还有很多其他的Redis选项,用于复杂的环境准备。在某些情况下,您可以使用复制和Sentinel来提高可用性,或者将数据分布在多个服务器上以创建服务器集群。