• Redis——认识Redis


    简单介绍

    Redis诞生于2009年,全称是Remote Dictionary Server,远程词典服务器,是一个基于内存的键值型NoSQL数据库

    特征

    • 键值(Key-value)型,value支持多种不同数据结构,功能丰富
    • 单线程,每个命令具有原子性
    • 低延迟,速度快(基于内存,IO多路复用,良好的编码)
    • 支持数据的持久化
    • 支持主从集群和分片集群
    • 支持多语言客户端

    安装Redis

    对于Redis的安装,我们选择使用Linux作为环境进行安装,毕竟这种服务一经开发就是用作服务端,而服务端一般采用的操作系统就是Linux,所以我们选择直接安装在Linux上,省去了因为Windows的兼容问题到导致的出错。并且Redis的官方程序并没有支持Win版的格式,之前使用的Win版的Redis都是微软编译出来的。

    我们使用的环境是CentOS7,所以在开始之前我们需要提前装好一个Linux的虚拟机,并保证虚拟机和宿主机之间可以互相ping通。

    Redis的官网:雷迪斯 (redis.io)

    然后,我们在官网找到下载界面,然后下载当前版本的最新版本:

    我下载的时候,最新版本是7.2.0,然后下载好之后,他就是一个tar包,我们把这个tar包上传到Linux的虚拟机上:

    先不着急解压,安装Redis的第一步是安装依赖,因为Redis是基于C语言编写的,所以在安装之前要先安装C语言的依赖:

    yum install -y gcc tcl

    解压Redis的tar包

    tar -zxvf redis-7.2.0.tar.gz -C ../software

    解压完成之后就是下面这样的

    这个地方的软件安装路径可能不一样,这个就因人而异。

    解压完成之后,我们需要进行一次编译,我们进入这个解压之后的目录:

    make && make install

    编译安装的过程会比较长,耐心等待即可。

    默认的安装路径在`/usr/local/bin`目录下,我们可以来到这个目录看一下里面生成的文件:

    这些文件中,比较重要的就是两个,一个是客户端一个是服务端。

    redis-cli:是redis提供的命令行客户端

    redis-server:是redis的服务端启动脚本

    redis-sentinel:是redis的哨兵启动脚本

    启动

    前台启动

    在刚才的编译安装的过程中,这些文件已经加入了环境变量中,也就是说我们在任何的位置都可以使用这个命令,最简单的启动命令就是直接运行这些脚本即可:

    redis-server

    当你看到这个redis的LOGO的时候,就表示这个Redis已经开始运行了。

    这种方式叫做前台启动,这种启动方式会占用你的当前活动窗口,如果你要再启动一个客户端那你只能再次创建一个SSH连接才能再次开启一个活动窗口的方式去启动它。

    指定配置文件启动

    除了前台启动,还有一种方式叫做指定配置文件启动。

    如果要让Redis以后台方式启动,则必须修改Redis的配置文件,就在我们之前解压的Redis安装包下,名字叫做redis.conf:

    修改这个文件之前,首先对配置文件进行一个备份,防止因为错误操作而找不到原来的配置文件:

    cp redis.conf redis.conf.bak

    然后我们就可以去修改这个文件里面的内容了:

    这个里面的内容非常的多,具体的修改的内容如下:

    首先是bind的值:

    # bind表示监听的地址,也就是允许访问的地址,默认的值就是127.0.0.1也就是只有本机才能访问,但是当我们在宿主机上 # 使用的时候就会造成很多的不便,这时候改成0.0.0.0就表示在任意的主机都可以访问这个Redis bind 0.0.0.0

    然后是daemonize的值:

    # 守护进程,默认值为no,设置为yes即可后台运行 # daemonize no daemonize yes

    还有密码:

    # 设置密码是为了保证安全性 requirepass 123456

    以及其他的一些常见的配置:

    # 监听的端口,端口号一般使用默认,但是如果端口号被其他的服务占用了就只能使用其他的端口号 port 6379 # 工作目录,默认是当前目录,也就是运行时候产生的日志,命令,持久化等都会保存在这个目录,默认是启动服务的目录 dir . # 数据库数量,设置为1,代表只使用1个库,默认有16个库,编号0-15 databases 1 # 设置redis能够使用的最大内存 maxmemory 512mb # 日志文件,默认为空,不记录日志,可以指定日志文件名,这里只写了文件名并没有写文件的路径,那么这个文件的路径默认就是和上面的dir路径是保持一致的。 logfile "redis.log"

    然后就是带着配置文件启动,就是将配置文件的路径和文件名写在启动命令之后即可:

    redis-server redis.conf

    这次启动之后是不会有任何的结果出现在控制台上的,那么查看Redis有没有启动就要查看Linux的进程:

    ps -ef | grep redis

    可以看到已经存在一个Redis的进程,就说明Redis已经启动成功了:

    然后如果你要停止Redis,那么就使用kill -9的杀死进程的命令即可。

    开机自启

    通过将Redis服务加入到系统服务中的方式实现开机自启。

    首先要新建一个系统服务文件:

    vim /etc/systemd/system/redis.service

    文件的内容如下:

    1. [Unit] Description=redis-server
    2. After=nerwork.target [Service]
    3. Type=forking
    4. ExecStart=/usr/local/bin/redis-server /home/morningstar/software/redis-7.2.0/redis.conf PrivateTmp=true
    5. [Install]
    6. WantedBy=multi-user.target

    然后重新加载系统服务

    systemctl daemon-reload

    现在,我们就可以使用系统命令的方式查看Redis的状态,以及控制Redis的启停:

    systemctl start redis systemctl status redis systemctl stop redis

    注意,因为这个地方的启动和原来的进程启动有冲突,所以如果你没有关闭之前启动的Redis进程,则这里会报错,也就是这个绿色的点会变成红色,显示启动失败,但其实就是因为之前的Redis已经被启动了。

    设置开机自启

    systemctl enable redis

    这样就可以设置开机自启了。

    Redis客户端

    命令行客户端

    Redis安装完成之后就自带了命令行客户端:redis-cli,使用方式如下:

    redis-cli [options] [commonds]

    其中常见的options有:

    • -h 127.0.0.1:指定要连接的redis节点的IP地址,默认是127.0.0.1
    • -p 6379:指定要连接的redis节点的端口,默认是6379
    • -a 123456:指定redis的访问密码

    其中commonds就是Redis的操作命令,例如:

    • ping:与Redis服务做心跳测试,服务端正常会返回pong

    不指定commond时,会进入redis-cli的交互控制台:

    在命令行中使用-a参数输入密码的方式会不安全,从而导致会出现一个警告,那么安全的做法是不使用密码登陆之后,在交互界面中校验密码:

    使用AUTH命令校验密码,校验通过之后会出现一个【OK】,然后我们测试与服务器的连接则显示正常响应,如果在不使用密码进入交互命令行之后,不校验密码就进行操作,则会提示没有权限。

    图形化客户端

    对于Redis的图形化客户端,一般有使用Gethub上的项目,比如rdm,或者直接使用IDEA的客户端:

    根据个人喜好选择即可。

  • 相关阅读:
    【软件安装&环境配置】vscode 安装界面没有出现安装路径的选择 的解决,以及vscode的删除的问题
    在互联网寒冬,我们应届生应如何提高竞争力?
    保证接口安全的11个小技巧
    【Rust 日报】2022-6-23 Jon Gjengset 的关键字小技巧系列
    51单片机存储篇:EEPROM(I2C)
    ICML2021 | RSD: 一种基于几何距离的可迁移回归表征学习方法
    SpringBoot学习笔记(项目创建,yaml,多环境开发,整合mybatis SMM)
    java的Timer全网最详细总结
    【C语言学习笔记---内存函数】
    枚举,进制转换,char*,补码,算法,链表,位运算,NULL的含义
  • 原文地址:https://blog.csdn.net/hssjsh/article/details/132636259