redis的安装与配置

 

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication)LUA脚本(Lua scripting), LRU驱动事件(LRU eviction)事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。

 

在传统JavaWeb项目中,使用数据库进行存储数据,但是有一个致命的弊端,这些弊端主要来自于性能方面,由于数据库持久化的数据主要面向的是磁盘,而磁盘读写的速度比较慢,在一般的系统中,由于不牵扯到高并发,其实没有什么不同。但是在一些高并发的场景下尤其重要,比如抢红包场景,多人同时访问一个网页的数据,成千上万的人同时请求数据库,可想而之,数据库肯定是承受不了的,及其容易造成数据库系统瘫痪。最终导致服务宕机。

 

为了应用这个高并发的场景,在传统JavaWeb项目中于是引用了NoSql技术,NoSql工具也是一种简易的数据库,它主要是一种基于内存的数据库。数据主要存储在内存中。redis目前也是使用最为广泛的NoSql之一。

 

一般redis在javaWeb中的应用,主要存在两个主要的场景,一个是缓存常用的数据,另一个是在需要高度读写的场合使用它快速读写。

 

下面讲解redis的安装、配置、启动

 

首先进入https://redis.io/官网下载redis最新版本,我下载的是redis-5.0.3.tar.gz

 

然后远程登录linux服务器,将下载好的文件拷贝到/usr/local路径下

 

ssh 登录linux服务器,并使用scp命令将本地文件上传至服务器指定文件夹内

ssh xx@localhost

 

 

上传本地文件到服务器指定文件夹

scp /Users/mac/soft/redis05.0.3.tar.gz  root@localhost:/usr/local/

/Users/mac/soft/redis05.0.3.tar.gz  本地文件路径

root@localhost:/usr/local/ 服务器指定的文件夹

 

 

 

我用的是Mac版本FinalShell终端进行的远程登录,如图

 

 

 

 

 

解压redis

使用命令:tar xzvf redis-5.0.3.tar.gz  即可将文件解压到当前目录,可以得到redis-5.0.3文件夹

 

 

编译redis,把源码编译成可执行文件

执行命令:cd redis-5.0.3   进入redis-5.0.3文件夹首先要进行make编译,执行编译命令:make,下图是编译成功的画面

 

 

 

 

编译过程中可能出现的错误

 

错误1:若出现如下提示,则说明未安装gcc,使用命令安装

1)yum –y install gcc

2)yum –y install gcc-c++

 

root@localhost redis-5.0.3]# make

cd src && make all

make[1]: Entering directory `/root/redis-5.0.3/src‘

    CC adlist.o

/bin/sh: cc: command not found

make[1]: *** [adlist.o] Error 127 make[1]: Leaving directory `/root/redis-5.0.3/src‘

make: *** [all] Error 2

 

 

 

错误2:若出现如下提示,则进入redis下的deps下的运行如下命令,就OK了

 

cd deps

make lua hiredis linenoise

 

cc: error: ../deps/hiredis/libhiredis.a: No such file or directory

cc: error: ../deps/lua/src/liblua.a: No such file or directory

cc: error: ../deps/jemalloc/lib/libjemalloc.a: No such file or directory

make: * [redis-server] Error 1

 

 

错误3:若出现如下提示,推测是因为编译库的问题,执行一下命令进行编译:

make MALLOC=libc

 

root@localhost redis-5.0.3]# make

cd src && make all

make[1]: Entering directory `/root/redis-5.0.3/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-5.0.3/src‘

make: *** [all] Error 2

 

 

错误4:运行make test时若出现如下提示,需要安装tcl

yum install tcl

 

 

[root@openstack-control redis-5.0.3]# make test
cd src && make test
make[1]: Entering directory /root/redis-5.0.3/src'
You need tcl 8.5 or newer in order to run the Redis test
make[1]: *** [test] Error 1
make[1]: Leaving directory/root/redis-5.0.3/src’
make: * [test] Error 2

 

 

 

安装编译后的redis

 

进入到redis-5.0.3同级目录下,创建一个redis-bin文件夹,用于存放redis可执行文件

执行命令:mkdir redis-bin

进入到redis-5.0.3 目录下,运行以下命令,将redis的可执行文件安装到指定的目录下

执行命令:make install PREFIX=/usr/local/redis-bin/

 

将/usr/local/redis-5.0.3/redis.conf文件拷贝一份至可执行文件的文件夹bin内, myredis.conf是拷贝并重命名为myredis.conf

执行命令:cd redis-bin/bin

执行命令:cp /usr/local/redis-5.0.3/redis.conf  myredis.conf

 

 

 

启动redis-server

 进入到redis-bin/bin文件夹内:

执行命令:./redis-server

 

如果启动成功,会出现以下画面

 

 

 

如果看到上图,说明启动成功了,但是没有在后台运行,只在前台运行,并且阻塞了线程。

 

启动redis时注意有这么一句话:

Warning: no config file specified, using the default config. In order to specify a config file use ./redis-server /path/to/redis.conf

警告:没有指定配置文件,使用默认配置。要指定配置文件,请使用./redis-server /path/to/redis.conf

 

先关闭redis服务器,按Control+C

 

配置文件的修改

 

进入执行文件目录

cd /usr/local/redis-bin/bin

先关闭redis服务器

./redis-cli shutdown

然后执行命令:vi myredis.conf 打开刚才拷贝并重命名的配置文件

:$跳至文件末尾

:set nu设置显示行号

 

输入/daemonize查找守护,找到这句话

135 # By default Redis does not run as a daemon. Use 'yes' if you need it.

136 # Note that Redis will write a pid file in /var/run/redis.pid when daemonized. 默认情况下,Redis不作为守护进程运行。如果你需要,用“是”。

将daemonize 设置为yes 将以守护模式运行,后台运行,这样就不会阻塞线程了

 

 

 

设置远程访问,允许所有计算机访问

第一步:注释掉#bind 127.0.0.1

# By default protected mode is enabled. You should disable it only if

# you are sure you want clients from other hosts to connect to Redis

# even if no authentication is configured, nor a specific set of interfaces

# are explicitly listed using the "bind" directive.

第二步:把protected-mode yes改为no关闭保护模式

 

 

 

设置redis登录密码:

/requirepass 查找

requirepass foobared 将本行取消注释后,将默认的foobared密码改为自己需要的密码即可

 

 

按下esc后,输入:wq确认保存退出

 

 

指定配置文件启动redis-server

 

 进入到redis-bin/bin文件夹内:

执行命令:./redis-server myredis.conf

 

使用命令:

ps aux | grep redis

查看redis进程可以看到已经启动成功

 

也可以使用命令:通过端口号查询进程

[root@VM_16_16_centos bin]# lsof -i:6379

 

 

 

本机连接redis服务器:在bin目录下执行命令:./redis-cli,默认的是连接本机127.0.0.1:6379

 

远程连接redis服务器

[root@VM_16_16_centos bin]# redis-cli -h 192.168.1.14 -p 6379

 

查看数据时,需要验证密码,输入命令:auth 密码 后即可通过验证

 

 

使用客户端关闭服务器

 

第一种:已连接的情况下:直接shutdown

第二种:未连接的情况下:[root@VM_16_16_centos bin]# ./redis-cli shutdown(配置文件设置密码后,此方法无法使用),可以使用:/redis-cli -a  密码 shutdown

 

 

posted @ 2019-02-03 13:52  将哥  阅读(12261)  评论(0编辑  收藏  举报