技术的分类
NoSQL数据库是为了解决性能问题而产生的一种技术,而 Redis 就是典型的 NoSQL 数据库。
NoSQL (NoSQL = Not Only SQL),意即 “不仅仅是SQL”,泛指 非关系型的数据库。
NoSQL 不依赖业务逻辑方式存储,而以简单的 key-value 模式存储。因此大大的增加了数据库的扩展能力。
NoSQL适用场景
NoSQL不适用场景
NoSQL解决问题
解决 CPU 及内存压力

解决 IO 压力

| Memcache | ||
|---|---|---|
| ✔️ 很早出现的NoSql数据库 ✔️ 数据都在内存中,一般不持久化 ✔️ 支持简单的 key-value 模式,支持类型单一 ✔️ 一般是作为缓存数据库辅助持久化的数据库 |
| Redis | ||
|---|---|---|
| ✔️ 几乎覆盖了 Memcached 的绝大部分功能 ✔️ 数据都在内存中,支持持久化,主要用作备份恢复 ✔️ 除了支持简单的 key-value 模式,还支持多种数据结构的存储,比如 list、set、hash、zset 等。 ✔️ 一般是作为缓存数据库辅助持久化的数据库 |
| MongoDB | ||
|---|---|---|
| ✔️ 高性能、开源、模式自由 (schema free) 的文档型数据库 ✔️ 数据都在内存中, 如果内存不足,把不常用的数据保存到硬盘 ✔️ 虽然是 key-value 模式,但是对 value (尤其是 json) 提供了丰富的查询功能 ✔️ 支持二进制数据及大型对象 ✔️ 可以根据数据的特点替代RDBMS ,成为独立的数据库。或者配合RDBMS,存储特定的数据。 |
配合关系型数据库做高速缓存
高频次,热门访问的数据,降低数据库 I/O
分布式架构,做 session 共享

多样的数据结构存储持久化数据

| Redis官方网站 | Redis中文官方网站 |
|---|---|
| http://redis.io | http://redis.cn/ |
6.2.1 for Linux(redis-6.2.1.tar.gz)
➢ 不用考虑在windows环境下对Redis的支持
安装 C 语言的编译环境
yum install centos-release-scl scl-utils-build
yum install -y devtoolset-8-toolchain
scl enable devtoolset-8 bash
测试 gcc 版本
gcc --version

下载 redis-6.2.1.tar.gz 放置 /opt 目录

解压至当前目录
tar -zxvf redis-6.2.1.tar.gz
解压完成后进入目录
cd redis-6.2.1
在redis-6.2.1目录下再次执行 make 命令(只是编译好)
make


跳过 make test 继续执行:make install
make install

默认安装在 /usr/local/bin

redis-benchmark:性能测试工具,可以在自己本子运行,看看自己本子性能如何
redis-check-aof:修复有问题的AOF文件,rdb和aof后面讲
redis-check-dump:修复有问题的dump.rdb文件
redis-sentinel:Redis集群使用
redis-server:Redis服务器启动命令
redis-cli:客户端,操作入口
前台启动(不推荐)
前台启动,命令行窗口不能关闭,否则服务器停止。
/usr/local/bin 目录下启动 redis
redis-server
后台启动(推荐)
➢ 备份 redis.conf
安装 redis 的目录 /opt/redis-6.2.6 中将 redis.conf 复制到任意一个文件夹下
cp redis.conf /etc/redis.conf
// 将redis.conf复制到/etc/下
➢ 修改 /etc/redis.conf 配置文件
修改 redis.conf (我的在128行 ) 文件将里面的 daemonize no 改成 yes,让服务在后台启动。
vim redis.conf

➢ /usr/local/bin 目录下启动 redis
redis-server /etc/redis.conf
查询 redis 是否启动
ps -ef | grep redis

用客户端访问 redis
redis-cli

测试验证
ping

关闭 redis
➢ kill 进程
➢ 命令 shutdown

| 端口 6379 从何而来 Alessia Merz => 九键 | |
|---|---|
![]() | 默认16个数据库,类似数组下标从
0
0
0 开始,初始默认使用
0
0
0 号库 使用命令 select 来切换数据库。如: select 8。统一密码管理,所有库同样密码。 |
Redis 是单线程 + 多路 IO 复用技术
多路复用是指使用一个线程来检查多个文件描述符(Socket)的就绪状态,比如调用select和poll函数,传入多个文件描述符,如果有一个文件描述符就绪,则返回,否则阻塞直到超时。得到就绪状态后进行真正的操作可以在同一个线程里执行,也可以启动线程执行(比如使用线程池)。
串行 vs 多线程 + 锁 (memcached) vs 单线程 + 多路 IO 复用 (Redis)
