Redis 概述与安装

Redis 概述

Remote Dictionary Server(远程字典服务)是完全开源的,使用 ANSIC 语言编写遵守 BSD 协议,是一个高性能的 Key-Value 数据库提供了丰富的数据结构,例如 String、Hash、List、Set、SortedSet 等等。数据是存在内存中的,同时 Redis 支持事务、持久化、LUA 脚本、发布 / 订阅、缓存淘汰、流技术等多种功能特性提供了主从模式、Redis Sentinel 和 Redis Cluster 集群架构方案。

作者 GitHub (opens in a new tab)Blog (opens in a new tab)

Redis 功能概述

Redis 优势

  • 性能极高 - Redis 能读的速度是 110000 次/秒,写的速度是 81000 次/秒;
  • Redis 数据类型丰富,不仅仅支持简单的 key-value 类型的数据,同时还提供 list, set, zset, hash 等数据结构的存储;
  • Redis 支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用;
  • Redis 支持数据的备份,即 master-slave 模式的数据备份。

官网地址

文档资料

Redis 迭代演化和 Redis7 新特性

  • 命令规则

    Redis 从发布至今,已经有十余年的时光了,一直遵循着自己的命名规则: 版本号第二位如果是奇数,则为非稳定版本,如 2.7、2.9、3.1 版本号第二位如果是偶数,则为稳定版本,如 2.6、2.8、3.0、3.2 当前奇数版本就是下一个稳定版本的开发版本,如 2.9 版本是 3.0 版本的开发版本,我们可以通过 redis.io 官网来下载自己感兴趣的版本进行源码阅读,历史发布版本的源码:https://download.redis.io/releases/ (opens in a new tab)

  • 新特性概述

    功能描述
    多 AOF 文件支持7.0 版本中一个比较大的变化就是 aof 文件由一个变成了多个,主要分为两种类型:基本文件 (base files)、增量文件 (incr files),请注意这些文件名称是复数形式说明每一类文件不仅仅只有一个。在此之外还引入了一个清单文件 (manifest) 用于跟踪文件以及文件的创建和应用顺序(恢复)。
    config 命令增强对于 Config Set 和 Get 命令,支持在一次调用过程中传递多个配置参数。例如,现在我们可以在执行一次 Config Set 命令中更改多个参数:config set maxmemory 10000001 maxmemory-clients 50% port 6399。
    限制客户端内存使用 Client-eviction一旦 Redis 连接较多,再加上每个连接的内存占用都比较大的时候, Redis 总连接内存占用可能会达到 maxmemory 的上限,可以增加允许限制所有客户端的总内存使用量配置项,redis.config 中对应的配置项,两种配置形式:指定内存大小、基于 maxmemory 的百分比:maxmemory-clients 1g maxmemory-clients 10%
    listpack 紧凑列表调整listpack 是用来替代 ziplist 的新数据结构,在 7.0 版本已经没有 ziplist 的配置了(6.0 版本仅部分数据类型作为过渡阶段在使用)listpack 已经替换了 ziplist 类似 hash-max-ziplist-entries 的配置。
    访问安全性增强 ACLV2在 redis.conf 配置文件中,protected-mode 默认为 yes,只有当你希望你的客户端在没有授权的情况下可以连接到 Redis server 的时候可以将 protected-mode 设置为 no。
    Redis FunctionsRedis 函数,一种新的通过服务端脚本扩展 Redis 的方式,函数与数据本身一起存储。简言之,redis 自己要去抢夺 Lua 脚本的饭碗。
    RDB 保存时间调整将持久化文件 RDB 的保存规则发生了改变,尤其是时间记录频度变化。
    命令新增和变动Zset (有序集合) 增加 ZMPOP、BZMPOP、ZINTERCARD 等命令;
    Set (集合) 增加 SINTERCARD 命令;
    LIST (列表) 增加 LMPOP、BLMPOP ,从提供的键名列表中的第一个非空列表键中弹出一个或多个元素。
    性能资源利用率、安全、等改进自身底层部分优化改动,Redis 核心在许多方面进行了重构和改进;
    主动碎片整理 V2:增强版主动碎片整理,配合 Jemalloc 版本更新,更快更智能,延时更低;
    HyperLogLog 改进:在 Redis5.0 中,HyperLogLog 算法得到改进,优化了计数统计时的内存使用效率,Redis7 更加优秀,更好的内存统计报告。

Linux 版安装 Redis

环境安装

1.安装 gcc

Terminal
yum install -y gcc

2.查看 gcc 版本

Terminal
gcc -v

安装 redis7

1.下载 redis7

Terminal
wget https://download.redis.io/releases/redis-7.0.0.tar.gz
tar -zxvf redis-7.0.0.tar.gz

2.编译安装 redis

Terminal
cd redis-7.0.0
make && make install

启动 redis

1.安装目录文件说明

Terminal
cd /usr/local/bin
ls -la
# redis-benchmark:性能测试工具,服务启动后运行该命令,查看机器性能如何
# redis-check-aof:修复有问题的 AOF 文件
# redis-check-dump:修复有问题的 dump.rbd
# redis-cli:客户端,操作入口
# redis-sentinel:Redis 集群使用
# redis-server:Redis 服务器启动命令

2.备份 redis.conf

Terminal
cp redis.conf redis.conf.bak

3.修改 redis.conf 配置文件做初始化设置,改完后确保生效,记得重启,记得重启

默认daemonize no 改为 daemonize yes
默认protected-mode yes 改为 protected-mode no
默认bind 127.0.0.1 改为 直接注释掉(默认bind 127.0.0.1只能本机访问)或改成本机IP地址,否则影响远程IP连接
添加redis密码 改为 requirepass 你自己设置的密码

4.启动服务

Terminal
/usr/local/bin/redis-server /path/redis.conf

连接 redis

Terminal
redis-cli
auth password
ping
redis-cli -a password -p 6379

关闭连接

bash
# 单实例关闭:redis-cli -a password shutdown
# 多实例关闭,指定端口关闭:redis-cli -p 6379 shutdown

Docker 安装 Redis

docker-compose.yml
services:
  redis:
    image: redis:latest
    hostname: redis
    container_name: redis
    restart: always
    command: redis-server --requirepass password
    ports:
      - 6379:6379
    volumes:
      - /etc/localtime:/etc/localtime:ro
    privileged: true
    environment:
      - TZ=Asia/Shanghai
      - LANG=en_US.UTF-8