redis学习-p01-介绍与安装

NoSQL数据库

NoSQL(Not Only SQL),意即”不仅仅是SQL”,泛指非关系型的数据库

NoSQL 不依赖业务逻辑方式存储,而以简单的key-value模式存储,因此大大的增加了数据库的扩展能力。

  • 不遵循SQL标准
  • 不支持ACID
  • 远超于SQL的性能

NoSQL适用场景

  • 对数据高并发的读写
  • 海量数据的读写
  • 对数据高可扩展性的

NoSQL不适用场景

  • 需要失误支持
  • 基于SQL的结构化查询存储,处理复杂的关系,需要即席查询

NoSQL数据库:Memcache

  • 出现的NoSQL数据库
  • 数据都在内存中,一般不持久化
  • 支持简单的key-value模式,支持类型单一

**NoSQL数据库:Redis

  • 几乎覆盖了Memcache的绝大部分功能
  • 数据都在内存中,支持持久化,主要用作备份恢复
  • 除了支持简单的key-value模式,还支持多种数据结构的存储,比如:list,set,hash,zset等

NoSQL数据库:MongoDB

  • 高性能,开源,模式自由的文档型数据库
  • 数据都在内存中,如果内存不足,把不常用的数据保存到硬盘
  • 虽然是key-value模式,但是对value(尤其是json)提供了丰富的查询功能
  • 支持二进制数据大型对象
  • 可以根据数据的特点替代RDBMS,成为独立的数据库,或者配合RDBMS存储特定的数据

Redis概述

  • Redis 是一个开源key-value存储系统

  • 和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(有序集合)和hash(哈希类型)。

  • 这些数据类型都支持 push/pop、add/remove及取交集、并集和差集等更丰富的操作,而且这些操作都是原子性的。

  • 在此基础上,Redis支持各种不同方式的排序

  • 与memcached一样,为了保证效率,数据都是缓存在内存中。

  • 与memcached区别的是,Redis会周期性的把更新的数据写入磁盘 或者把修改操作写入追加的记录文件。

image-20220406221613619

Redis安装

通过docker安装

  1. 创建宿主机持久化数据挂载目录,redis配置文件
mkdir  -p /usr/local/docker/data
cd /usr/local/docker/ 
wget http://download.redis.io/redis-stable/redis.conf
cp redis.conf redis.temp.conf
  1. 编辑redis.conf文件如下内容
#bind 127.0.0.1 #注释掉这部分,使redis可以外部访问
protected-mode no # 默认yes,开启保护模式,限制为本地访问;改为no,允许外部访问
daemonize yes #用守护线程的方式启动
appendonly yes #redis持久化  默认是no
tcp-keepalive 60 #默认是300,检查心跳的时间
  1. 启动redis
docker run -p 6379:6379 --name redis_v1 -v /usr/local/docker/redis.conf:/etc/redis/redis.conf  -v /usr/local/docker/data:/data -d redis --appendonly yes
  • -p 6379:6379:把容器内的6379端口映射到宿主机6379端口

  • –name redis_v1 容器名称叫 redis_v1

  • -v /usr/local/docker/redis.conf:/etc/redis/redis.conf 把宿主机配置好的redis.conf放到容器内

  • -v /usr/local/docker/data:/data 把redis持久化的数据在宿主机内显示,做数据备份

  • –appendonly yes:redis启动后数据持久化

  1. 测试redis

    [root@iZwz9f92w7soch5m251ghgZ ~]# docker exec -it redis_v1 /bin/bash
    root@3b86bce8591a:/data# redis-cli
    127.0.0.1:6379> ping
    PONG
    127.0.0.1:6379> 

通过源码安装

redis官网:https://redis.io/

环境准备

  1. 下载redis源码文件redis-6.2.7.tar.gz

    网盘链接: https://pan.baidu.com/s/1EfzleJhzfMKFVZsPHqB6QQ?pwd=4kxc

  2. 安装redis依赖

    Redis是基于C语言编写的,因此首先需要安装Redis所需要的gcc依赖:

    yum -y install gcc gcc-c++
  1. 修改系统limits配置

    编辑/etc/security/limits.conf文件,在文件最后添加以下内容

    * soft nofile 65535
    * hard nofile 65535
    [root@izwz9f92w7soch5m251ghgz ~]# ulimit -n
    65535
  2. 修改内核参数somaxconn,提高TCP端口监听队列的长度

    查看默认值

    [root@izwz9f92w7soch5m251ghgz ~]# cat /proc/sys/net/core/somaxconn
    128

    编辑/etc/sysctl.conf文件,在最后增加下面内容(注意:该值不要超过ulimit -n 值的一半)

    net.core.somaxconn = 20480

    执行以下命令,使修改生效

    sysctl -p
  3. 关闭防火墙

    查看防火墙状态,如果是运行状态,则继续关闭

    firewall-cmd --state

    停止防火墙

    systemctl stop firewalld.service

    禁止防火墙开机启动

    systemctl disable firewalld.service

单机安装Redis

  1. 解压到redis压缩包,并进入redis解压文件夹

    # wget https://download.redis.io/releases/redis-6.2.7.tar.gz
    tar -zxvf redis-6.2.7.tar.gz -C /usr/local/
    cd /usr/local/redis-6.2.7/
  2. 创建安装目录

    mkdir -p /usr/local/redis-6.2.7/{data,conf,logs,pid}

    data:数据目录
    conf:配置文件目录
    logs:日志目录
    pid:redis进程文件目录

  3. 编译安装redis

    编译Redis,如果没有打印出错误信息则表示编译成功

    make

    安装Redis并指定安装目录

    make install PREFIX=/usr/local/redis-6.2.7
  4. 完成后自动在安装目录下生成bin文件夹及命令

    [root@izwz9f92w7soch5m251ghgz redis-6.2.7]# ll /usr/local/redis-6.2.7/bin/
    total 18920
    -rwxr-xr-x 1 root root 4828984 Jul 14 10:04 redis-benchmark
    lrwxrwxrwx 1 root root      12 Jul 14 10:04 redis-check-aof -> redis-server
    lrwxrwxrwx 1 root root      12 Jul 14 10:04 redis-check-rdb -> redis-server
    -rwxr-xr-x 1 root root 5003152 Jul 14 10:04 redis-cli
    lrwxrwxrwx 1 root root      12 Jul 14 10:04 redis-sentinel -> redis-server
    -rwxr-xr-x 1 root root 9536632 Jul 14 10:04 redis-server
    • redis-server:Redis服务器启动脚本

    • redis-cli:Redis客户端脚本

    • redis-sentinel:Redis集群使用

    • redis-check-rdb:修复有问题的rdb文件

    • redis-check-aof:修复有问题的aof文件

    • redis-benchmark : 性能测试工具

  5. 复制默认配置到conf目录中

    cd /usr/local/redis-6.2.7
    cp redis.conf conf/redis.conf
  6. 编辑conf/redis.conf基础配置

    port 6379
    pidfile /usr/local/redis-6.2.7/pid/redis_6379.pid
    logfile "/usr/local/redis-6.2.7/logs/redis_6379.log"
    dir /usr/local/redis-6.2.7/data
    dbfilename dump.rdb

启动Redis

cd /usr/local/redis-6.2.7/bin
  • 前台启动(不推荐)
./redis-server
  • 后台启动(推荐)

前提:将conf/redis.conf文件中的daemonize no 改成daemonize yes

./redis-server /usr/local/redis-6.2.7/conf/redis.conf

redis.conf 配置解析

  • daemonize no :是否为后台进程,默认前台启动,如果需要后台启动,将其改成yes

  • bind 127.0.0.1 -::1: 默认表示只能接受本机的访问请求,如果需要远程访问,需将其注释掉

  • protected-mode yes:默认开启保护模式,只能本机访问,如果需要远程访问,需将其改成 no

  • port 6379:端口号,默认6379

  • tcp-backlog 511:backlog 是一个连接队列,在高并发环境下,你需要一个高backlog值来避免慢客户端连接问题

  • timeout 0:默认客户端连接永不超时,可以设定超时时间N秒

  • tcp-keepalive 300:tcp心跳时间,默认300s。300s内检测到没有心跳,断开连接

  • pidfile /var/run/redis_6379.pid: redis 进程号保存到对应文件

  • loglevel notice: redis日志级别

  • logfile "":redis日志输出路径

  • databases 16:redis默认16个数据库

  • # requirepass foobared:redis中默认不需要访问密码,如果需要密码鉴权,可编辑指定密码

  • # maxclients 10000 :最大客户端连接数,即redis同时可以与多少个客户端进行连接

  • # maxmemory <bytes>:设置redis可以使用的内存(建议必须设置,否则将内存占满,造成服务器宕机)。一旦到达内存使用上限,redis将会试图移除内部数据,移除规则可以通过maxmemory-policy来指定

  • dir ./: 指定本地数据库存放目录


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。
My Show My Code