zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    API学习
    某社区的常用免费图床 free image hosting websites,如何用Ruby与Perl启动浏览器, 打开指定网页
    Delphi7下SuperObject的JSON使用方法
    Delphi中使用ISuperObject解析Json数据
    Delphi 数据存储到oracle数据库TBLOB/TCLOB的方法 包括JSON串的解析
    Delphi7 JSON的读取和拼接
    SQL查看所有表大小的语句
    ora12541监听程序无法识别连接
    oracle新建用户类问题
    Delphi版本插值Lagrange
  • 原文地址:https://www.cnblogs.com/shaojiang/p/10350269.html
Copyright © 2011-2022 走看看