写在前面
今天我们来学习一下 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
- 支持持久化:将数据保存到磁盘
- 单线程、单进程:线程安全性较高
下载与安装
-
准备环境
- VMware 12.x+
- CentOS 7.x+
-
下载 Redis 源码包
-
将下载的 Redis 源码包上传到 Linux 中
-
解压缩文件
tar -zxvf redis-7.0.10.tar.gz
-
安装 GCC
yum install -y gcc
-
进入解压缩目录,执行编译命令
yum install -y tcl make MALLOC=libc
-
编译完成后,安装 Redis
make install PREFIX=/usr/local/soft/redis
-
启动 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