Redis组件介绍(一)

写在前面

今天我们来学习一下 Redis 。Redis 是一个高性能的开源内存数据存储系统,支持多种数据结构,如字符串、列表、集合、有序集合和哈希表。

NoSQL 概述

随着大数据的兴起,数据量的暴增,数据类型的丰富,传统的关系数据库在应付动态网站,特别是超大规模和高并发的纯动态网站时已经显得力不从心,暴露了很多难以克服的问题。例如:

  • 商城网站中对商品数据频繁查询
  • 对热搜商品的排行统计
  • 订单超时问题
  • 微信朋友圈(音频,视频)存储等

传统的关系型数据库虽然可以实现相应功能,但在性能上并不理想。NoSQL 技术的出现解决了这些问题,它展示了世界上不仅仅存在 SQL 的可能性。

Redis 是一个高性能的开源内存数据存储系统,支持多种数据结构,如字符串、列表、集合、有序集合和哈希表。它不仅用作数据库,也常用于缓存和消息中间件。Redis 提供了丰富的功能,包括持久化数据、事务处理、发布/订阅机制以及高可用性支持。由于其单线程设计,Redis 在处理高并发请求时表现出色。

NoSQL 的四大分类

键值存储数据库

  • Tokyo Cabinet/Tyrant
  • Redis: 基于内存的数据存储,运行在软件 → 磁盘 → 内存中
  • SSDB: 基于磁盘的,直接与磁盘交互 → IO
  • Voldemort
  • Oracle BDB

列存储数据库

  • HBase
  • Cassandra
  • ClickHouse

文档型数据库

  • MongoDB
  • CouchDB
  • SequoiaDB: 国内的文档型数据库,已开源

图形数据库

  • Neo4J
  • InfoGrid
  • Infinite Graph
  • OSS

NoSQL 的应用场景

  • 数据模型比较简单
  • 需要灵活性更强的 IT 系统
  • 对数据库性能要求较高
  • 不需要高度的数据一致性(NoSQL 数据库对事务的支持较差)

什么是 Redis

Redis 是一个开源的内存型数据存储,遵循 BSD 许可证。它被广泛用于数据库、缓存和消息中间件。总结来说,Redis 是一个内存型的数据库。

Redis 特点

  • 高性能的 Key/Value 内存型数据库
  • 支持丰富的数据类型:string, list, set, sorted set, hash
  • 支持持久化:将数据保存到磁盘
  • 单线程、单进程:线程安全性较高

下载与安装

  1. 准备环境

    • VMware 12.x+
    • CentOS 7.x+
  2. 下载 Redis 源码包

  3. 将下载的 Redis 源码包上传到 Linux 中

  4. 解压缩文件

    tar -zxvf redis-7.0.10.tar.gz
    
  5. 安装 GCC

    yum install -y gcc
    
  6. 进入解压缩目录,执行编译命令

    yum install -y tcl
    make MALLOC=libc
    
  7. 编译完成后,安装 Redis

    make install PREFIX=/usr/local/soft/redis
    
  8. 启动 Redis 服务

    ./usr/local/soft/redis/bin/redis-server
    

配置环境变量

/etc/profile 文件中添加:

export JAVA_HOME=/usr/local/soft/jdk1.8.0_171
export REDIS_HOME=/usr/local/soft/redis
export PATH=.:$PATH:$JAVA_HOME/bin:$REDIS_HOME/bin

基本使用

  • 查看 Redis 进程

    ps -aux | grep redis
    
  • 进行客户端连接操作

    ./redis-cli -h localhost -p 6379
    

    如果在同一台机器上,可以省略主机和端口:

    ./redis-cli
    

Redis 中的库

Redis 默认存在 16 个库,编号从 0 到 15。可以使用 select 命令选择一个库。

  • 清空当前库

    FLUSHDB
    
  • 清空全部库

    FLUSHALL
    

Redis 客户端显示中文

./redis-cli -p 7000 --raw

操作 Key 相关指令

  • 删除 Key

    DEL key [key ...]
    
  • 检查 Key 是否存在

    EXISTS key [key ...]
    
  • 设置 Key 的过期时间(秒)

    EXPIRE key seconds
    
  • 查找所有符合给定模式的 Key

    KEYS pattern
    
  • 将 Key 移动到指定数据库

    MOVE key db
    
  • 设置 Key 的过期时间(毫秒)

    PEXPIRE key milliseconds
    
  • 设置 Key 的过期时间戳(毫秒)

    PEXPIREAT key milliseconds-timestamp
    
  • 查看 Key 的剩余生存时间(秒)

    TTL key
    
  • 查看 Key 的剩余生存时间(毫秒)

    PTTL key
    
  • 随机返回一个 Key

    RANDOMKEY
    
  • 重命名 Key

    RENAME key newkey
    
  • 查看 Key 的类型

    TYPE key