澳门新萄京:Linux下安装和铺排Redis,Linux下Redi
分类:澳门新萄京

一、下载与安装Redis

Redis学习---初级篇,安装与配置,redis学习---初级

阅读目录:

   1.  Redis基本介绍

   2.  Redis基于centOs 环境下安装步骤

   3.  Redis常见配置说明

<一>Redis 基本介绍

     1. Redis的官网:

     2. Redis 是一种C语言编写,支持网络,可基于内存并可持久化,日志型,以Key-Value存储形式的存储系统,并且提供各种语言API。

     3. Redis 比Memchace 支持更丰富的数据类型,包括String(mc所支持)、List(链表)、Set(集合)、ZSet(有序集合)、Hash(哈希类型) 数据类型

        与Mc一样,为了保证数据效率,数据都是缓存在内存中,与Mc不一样的地方是,Redis会按照一定的持久化策略,将缓存的数据持久化到存储设备磁盘上面,

       并且可以把修改操作写入到记录文件(AOF)以便服务器重启时继续更新操作,保持数据不丢失。在此基础上支持Master-Slave数据同步,主服务器的数据可以向任意从服务器进行同步。

    4. Redis支持事务操作,并且所有的操作是原子性的,即要么所有的操作成功,要么一起失败。

<二>Redis 安装(基于CentOs环境下安装)

     1. Redis 目前(2017年4月13日) 官网放出的最新的版本是3.2.8版本.

     2. 在CentOs下使用 wget  即可下载.如下图所示:

澳门新萄京:Linux下安装和铺排Redis,Linux下Redis安装试行。          澳门新萄京 1

        (wget 命令没有安装,使用yum install wget 安装即可使用)

    3. 使用tar zxvf 解压redis-3.2.8.tar.gz 。即 tar zxvf redis-3.2.8.tar.gz 

    4. 在redis-3.2.8 目录下,使用make && make install 安装redis服务

        澳门新萄京 2

       (编译安装Redis 需要GCC环境,没有,安装GCC即可 yum install gcc)

    5. 启动redis ,src/redis-server 启动redis。如图:

      澳门新萄京 3

      redis默认端口是6379.

    <三> Redis常见配置说明与常见命令使用

           1. Redis 所有的配置在redis-3.2.8目录下的redis.conf文件,使用vim redis.conf即可查看所有的配置以及配置值说明.

           2. Redis常见配置:

               2.1  datafilename  是指持久化数据的数据库文件名,默认值是dump.rdp,默认放置在redis3.2.8当前目录下

                      若想更改目录,则需要修改dir 配置 默认为dir ./当前目录

               2.2  maxmemory  是指redis 允许最大的缓存内存,单位是字节.默认情况下maxmemory是被注释的,即不限制内存大小.

               2.3 maxmemory**-**policy 是指最大内存的数据淘汰策略,如果设置了最大内存,则通常会配置淘汰策略,常见的策略有

                    volatile-lru 最近最少使用算法,这个策略可以实现保持内存数据都是热数据

               2.4. bind 配置,默认情况下redis的bind 127.0.0.1,这里bind并非想象中的绑定指定请求来源IP实现安全访问,

                      而是,监听来自哪个网卡的请求,若当前redis服务器存在多个网卡,那则可以配置其他网卡的IP地址,配置如下

                      bind 127.0.0.1 10.0.0.1 空格隔开。如果只存在一个网卡配置多个IP时,则启动时报错:

                      Creating Server TCP listening socket 10.0.0.1:6379: bind: Cannot assign requested address

                      如果bind 配置127.0.0.1 则只监听本机的请求,即使是同一个内网的客户端也无法请求到redis服务器,

                      如果想允许与当前redis服务器同一个内网客户端能访问到redis服务器,则可以配置redis服务器真实的IP地址

                      如:bind 192.168.110.210

                2.5 protected-mode,requirepass 配置, 默认情况下proetect-mode  yes 即开启保护模式,相反的配置值no,这个配置与bind配置有关系

                      如果bind配置是允许所有的外部请求连接(即把bind配置注释掉),那么就会触发protect-mode 模式。通过protect-mode yes 

                      模式则可以实现一定的安全访问,请求redis服务器连接时,则需要输入AUTH权限密码。如:src/redis-cli -a 123456

                      Auth权限密码requirepass 配置有关,requeirepass 123456 即是配置AUTH访问权限密码

             

              

 

     

  

  

阅读目录: 1. Redis基本介绍 2. Redis基于centOs 环境下安装步骤 3. Redis常见配置说明 一 Redi...

Redis是一个高性能的key-value数据库,和Memcached类似, 它的数据都是缓存在内存中,区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

在Debian下其实可以用apt-get一键安装Redis,但是安装的版本不是最新的。为了安装最新的Redis版本,需要从官方下载源码编译安装,过程也比较简单。

Github下载地址:

我们最近需要使用多台机器,分布式爬取数据,采用的框架是scrapy-redis,所以需要在一台服务器上安装Redis。

目前Redis最新的stable版本是4.0.6,源码下载地址是:

下载.MSI后下一步安装即可

而今天上午,在阿里云服务器上安装部署Redis时,遇到一些问题,没有在网上找到解决办法,记录一下。

首先把源码下载回来,在Linux终端输入下面的命令:

二、验证安装

安装

安装这个步骤很简单,主要参考Linux下Redis的安装和部署,下面说下步骤。

wget http://download.redis.io/releases/redis-4.0.6.tar.gz

1、 在“计算管理”中确保“Redis”已启动

1、到官网下载压缩包,然后解压

#直接复制下载链接,通过wget下载
$ wget http://download.redis.io/releases/redis-4.0.1.tar.gz
#解压
$ tar zxvf redis-4.0.1.tar.gz

下载完后解压:

澳门新萄京 4

2、进入Redis目录,对解压后的文件进行编译

# 进入目录
$ cd redis-4.0.1/
# 编译
$ make
tar -zxvf redis-4.0.6.tar.gz

 

3、进入src目录,执行make install安装Redis

$ cd src
# 安装
$ make install

然后,在终端输入redis-server看到如下界面,说明安装成功。

澳门新萄京 5

解压好后进入redis-4.0.6目录进行编译安装:

2、 使用命令测试Readis读写

部署

cd redis-4.0.6
make
sudo make install

 澳门新萄京 6

1、修改配置文件

回退到redis-4.0.1/目录,修改redis.conf文件

$ cd ..
# 查看当前目录
$ pwd
/root/redis-4.0.1
$ vim redis.conf

我这里的需求是希望外部机器能访问,所以注释掉bind 127.0.0.1

澳门新萄京 7

但是不能随便一台电脑都能连接,所以通过requirepass设置一个密码,最好设置长一点

澳门新萄京 8

这样,基本的就设置好了

编译安装结束对Redis实例进行设置:

 

2、debug模式,调试连接

(1)首先,我们用debug模式启动服务器,这样能更好的查看状态和分析问题

redis-server redis.conf  --loglevel debug

(2)然后,我们另开一个终端,使用ssh登录到服务器,在服务器上使用客户端连接Redis

$ redis-cli

这里,我们也可以在Redis服务器的终端,看到有一个连接到我们服务器。

澳门新萄京 9

(3)之后,我们在redis客户端进行简单操作,使用keys *查看Redis数据库存了key值。

127.0.0.1:6379> keys *
(error) NOAUTH Authentication required.

出现了错误,这是因为我们Redis服务器设置了需要密码。这里,我们可以输入auth 1234567来进行获得权限,也可以在登录Redis服务器时,给定密码,例如:redis-cli -a 1234567

127.0.0.1:6379> auth 1234567
OK
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set name liuchungui
OK
127.0.0.1:6379> get name
"liuchungui"

从上可以看出来,我们将name的liuchungui字段成功的存入Redis,并且取出来展示。

(4)其后,我们试一下,在本地电脑上连接Redis有没有问题

$ redis-cli -h 192.168.0.299 -a 1234567

注意: 将所有的192.168.0.299换成你自己的服务器ip

然后发现,连接不上,出现Operation timed out

192:~ liuchungui$ redis-cli -p 6379 -h 192.168.0.299 -a 1234567
Could not connect to Redis at 192.168.0.299:6379: Operation timed out
Could not connect to Redis at 192.168.0.299: Operation timed out
not connected> keys *

这时,我通过telnet 192.168.0.299 6397测试服务器的6379端口,居然不通。经过各种google之后,最后找到了解决之法:原来这是因为阿里云没有开放6379端口,只需要到阿里云那里设置一下安全组就行了

澳门新萄京 10

阿里云安全组具体添加方法,请参考添加安全组规则

当这里设置好了之后,我在本地就能连接服务器的Redis了。

(5)最后,调试没有问题,我们将Redis设置为后台运行。

编辑redis.conf,然后将daemonize属性改为yes

澳门新萄京 11

运行服务器

$ redis-server redis.conf
6997:C 10 Sep 15:10:17.034 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
6997:C 10 Sep 15:10:17.034 # Redis version=4.0.1, bits=64, commit=00000000, modified=0, pid=6997, just started
6997:C 10 Sep 15:10:17.034 # Configuration loaded

到此,我们部署完成。

cd utils
sudo ./install_server.sh

三、必要配置

三、问题与总结

在这里我碰到最主要的一个大问题是本地电脑无法连接服务器上的Redis,然后尝试了各种失败的方法

  • 刚开始以为是redis.conf这个配置文件没配置好,所以尝试在bind后面添加本地的ip,后来发现不行。后来才知道,bind后面添加ip,指定是Redis所在服务器网卡的ip,不是指定某些IP可以访问本机Redis实例,这是一个误区。这可以参考Redis bind 限制和指定IP访问和What does the bind parameter do in Redis?
  • 各种搜索通过防火墙来开启端口,即通过iptables来实现,后来发现还是不行。这在自己建立的服务器应该有作用,可以限制固定的ip来访问。而阿里云,是在阿里云网站进行配置。
  • 当出现MISCONF Redis is configured to save RDB snapshots错误时,可以使用redis-cli登录,然后输入config set stop-writes-on-bgsave-error no设置来解决,参考:MISCONF Redis is configured to save RDB snapshots

运行install_server.sh后会提示你配置Redis实例的一些参数

1、 密码限制

补充

  • 2017.9.30:最好在redis.conf中,设置下logfile,这样在redis出错误时,能看到相关错误信息。

端口:默认为6379,可以更改为别的端口,能增加安全性

缓存信息通常比较敏感,通过设置密码可有效降低缓存数据外泄可能。设置如下:

参考

Linux下Redis的安装和部署

redis进阶:密码设置、访问权限控制等安全设置

阿里云开放端口权限

Redis bind 限制和指定IP访问

What does the bind parameter do in Redis?

Please select the redis port for this instance: [6379]

 澳门新萄京 12

 

 

配置文件:/etc/redis/端口号.conf
Please select the redis config file name [/etc/redis/6379.conf]

2、限制IP访问

 

默认限制了只能本机使用Redis,在想供外部访问则需要在安装目录中找到redis.windows-service.conf文件,找到下图中的文件位置:

日志文件:默认为/var/log/redis_端口号.log
Please select the redis log file name [/var/log/redis_6379.log] /var/log/redis/redis.log

 澳门新萄京 13

 

 

数据目录:默认为/var/lib/redis/端口号
Please select the data directory for this instance [/var/lib/redis/6379] /data/redis

注意标红的地方,配置规则:

 

1)、 改为“# bind 127.0.0.1”则是不限制IP访问(前面加符号 # ),如果本机有多个IP,则使用任意一个IP均能访问;

最后是redis执行目录:默认为/usr/local/bin/redis-server
Please select the redis executable path [/usr/local/bin/redis-server]

2)、 改为“bind 127.0.0.1 10.16.161.16“,表示限制只能使用【本机】这几个IP才能访问。可用于 假设本机有三个IP,但只允许两个IP能访问到Redis的情况。各个IP之间通过一个”空格“符区分开。

参数输入完成后或让你确认设置是否正确,如果没问题按enter键进行确认,然后redis会安装服务并启动服务。

注意:Redis不对访问来源IP做限制,为数据安全可设置访问密码。

 

 

注册为系统服务

3、.NET平台下的Web.config文件配置

在目录 /etc/systemd/system 下新建文件:redis.service

  基本格式如下:

输入以下内容:

<appSettings>
  <add key="配置Key名称" value="Redis服务器IP:相应端口,password=设置的访问密码,syncTimeout=同步超时时间单位是这毫秒,abortConnect=在链接不到有效的服务器的时候是否
会创建一个链接实例" />
</appSettings>
[Unit]
Description=Redis
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/redis/redis.pid
ExecStart=/usr/local/redis/src/redis-server /usr/local/redis/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID 
ExecStop=/bin/kill -s QUIT $MAINPID 
PrivateTmp=true

[Install]
WantedBy=multi-user.target

  示例配置:

 

<appSettings>
  <add key="RedisServer" value="127.0.0.1:6379,password=123456,syncTimeout=3000,abortConnect=false" />
</appSettings>

然后重新加载systemctl服务:

注意:

sudo systemctl daemon-reload

1)、abortConnect有时可省,但对于有些服务器而言是必不可少,否则会报错:It was not possible to connect to the redis server(s); to create a disconnec.
2)、而abortConnect的值也通常设置为false,可参考:

 

4、线程控制

就可以用下面的命令启动Redis服务了

在目录:C:WindowsMicrosoft.NETFramework64v4.0.30319Config中找到文件machine.config,

sudo systemctl start redis

将配置 <processModel autoConfig="true"/>

 

修改为 <processModel autoConfig="false" maxIoThreads="250" minIoThreads="50"/>

 

下面对Redis进行一些其他的配置

Redis默认的系统服务为 /etc/init.d/redis_6379,6379是端口号,是前面配置的端口

为了好记,把它更名为/etc/inti.d/reids-server

sudo mv /etc/init.d/redis_6379 /etc/init.d/redis-server

 然后重启服务:

sudo service redis-server restart

  

设置Redis可被远程访问
默认情况下,为了安全Redis服务器不允许远程访问,只允许本机访问。

如果需要远程访问的功能,需要进行设置。

用vi打开Redis服务器的配置文件redis.conf

sudo vi /etc/redis/redis.conf

 

找到 bind 127.0.0.1 配置项,在前面加上#,注释掉bind配置

#bind 127.0.0.1

保存文件后,重启Redis服务。

sudo service redis-server restart

 

这样就可以远程访问Redis服务了。

当然这样设置并不安全,如果是生成环境,最好设置为服务器IP

 

设置访问密码
默认情况下,访问Redis服务器是不需要密码的

如果开启了远程访问,这样是极不安全滴

为了安全需要设置Redis的访问密码

假如设置访问密码为 R7i8V51hK4。

用vi打开Redis服务器的配置文件redis.conf

sudo vi /etc/redis/redis.conf

 

找到 # requirepass foobared配置项,把前面的#去掉,修改foobared为想要设置的密码R7i8V51hK4

requirepass R7i8V51hK4

 

 保存文件后,重启Redis服务。

sudo service redis-server restart

这样访问就需要密码了

登录测试一下,如果是本地测试的话,输入以下命令:

redis-cli -h 127.0.0.1 -p 6379 -a R7i8V51hK4

 

-h 指定主机,-p指定端口,-a 指定密码

回车,人品好的话,屏幕上应该会显示:

127.0.0.1:6379>

表示成功连接上Redis服务了

来ping-pong一下,输入ping

ping

 

回车会返回 PONG 表示Redis服务运行正常啦

到此Redis就安装成功了。

 

本文由澳门新萄京发布于澳门新萄京,转载请注明出处:澳门新萄京:Linux下安装和铺排Redis,Linux下Redi

上一篇:经验不等同,Ubuntu双系统安装 下一篇:没有了
猜你喜欢
热门排行
精彩图文