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