同学们好,今天我们要一起走进NoSQL数据库的世界,去探索其中的佼佼者——Redis。
Redis,全称是Remote Dictionary Server(远程字典服务器),它不仅是一个简单的键值对存储系统,更是一个高性能的内存数据库。在现代互联网架构中,如果说MySQL等关系型数据库是存储数据的“大仓库”,那么Redis就是那个反应极快、伸手就能拿到的“桌面收纳盒”。
一、Redis的核心特性
1、极高的性能 Redis最引以为傲的就是其处理速度。由于数据完全存储在内存中,读写操作不涉及磁盘IO,它的读速度可以达到每秒11万次左右,写速度也能达到每秒8万次以上。这是传统关系型数据库无法比拟的。
2、丰富的数据结构 不同于传统的Memcached只支持字符串,Redis支持五种核心数据类型:
String(字符串):最基本、最常用的类型,可以存储文本或二进制。
List(列表):有序列表,可以实现消息队列。
Hash(哈希):类似于Java中的HashMap,适合存储对象。
Set(集合):无序且唯一的集合,支持并集、交集计算。
Sorted Set(有序集合):在Set基础上增加了权重,常用于排行榜。
3、原子性操作 Redis的所有操作都是原子的,这意味着操作要么全部执行成功,要么全部不执行。在高并发场景下,这对于保证数据的准确性至关重要。
4、数据持久化 虽然它是内存数据库,但Redis提供了RDB(快照)和AOF(日志)两种机制,能将内存中的数据定期保存到硬盘中,防止服务器宕机导致数据丢失。
5、简单易用 Redis采用简单的C语言编写,代码精简,且支持多种主流编程语言的客户端,上手非常快。
二、Redis的应用场景
在实际开发中,我们什么时候该用到Redis呢?
缓存:这是最常见的用法。将热点数据存入Redis,可以极大地减轻后端数据库的压力。
秒杀系统:利用Redis的单线程架构和高性能,处理高并发抢购。
排行榜:利用Sorted Set轻松实现积分排名。
会话管理:在分布式架构中,将Session信息存入Redis,实现多机共享。
计数器:如网站的PV/UV统计。
在生产环境中,Redis通常运行在Linux服务器上。接下来我们以CentOS/Ubuntu系统为例,手把手教大家如何从源码编译安装Redis。
1、环境准备,Redis是基于C语言开发的,所以我们需要安装GCC编译器。 执行命令:
sudo yum install gcc-c++ (CentOS)
sudo apt-get install build-essential (Ubuntu)
2、下载源码包,我们通常去Redis官网下载稳定的版本。 命令:
wget https://download.redis.io/releases/redis-7.0.0.tar.gz
3、解压并进入目录:
tar -zxvf redis-7.0.0.tar.gz cd redis-7.0.0
4、编译安装,直接在源码目录下运行:make 编译完成后,为了方便在任意位置调用Redis,我们运行:sudo make install 这时,Redis的可执行文件会被安装到 /usr/local/bin 目录下。
5、启动Redis,直接运行:
redis-server
即可启动。但为了让它在后台运行,我们需要修改配置文件。
在Redis解压目录下有一个非常重要的文件:redis.conf。建议先备份该文件,然后再进行修改。
以下是几个必须掌握的核心配置项:
1、daemonize:是否以守护进程方式运行。默认为no,建议改为yes,这样Redis启动后会在后台运行。
2、port:监听端口。默认为6379。
3、bind:绑定的IP地址。如果想允许远程连接,可以注释掉这一行,或者设置为0.0.0.0。
4、requirepass:设置访问密码。在生产环境中,为了安全必须设置复杂的密码。
5、dbfilename:持久化文件名,默认为dump.rdb。
6、dir:数据库文件存放目录。建议设置为一个专门的存储路径。
7、maxmemory:最大内存限制。当内存占满时,Redis会根据淘汰策略删除数据。
修改完配置文件后,启动时需要指定该文件:
redis-server /path/to/redis.conf
Redis自带了一个命令行客户端工具:redis-cli。
1、连接服务器 redis-cli -h 127.0.0.1 -p 6379 如果有密码,连接后输入:auth 你的密码。
2、基本命令练习
SET key value:存储一个键值对。例如 SET name "Gemini"。
GET key:获取对应的值。GET name。
EXISTS key:检查键是否存在。
DEL key:删除指定的键。
KEYS *:查看当前数据库所有的键(生产环境慎用,会阻塞服务器)。
FLUSHALL:清空所有数据库的所有数据(极度危险命令)。
SELECT index:切换数据库。Redis默认有16个数据库,编号0-15。
通过今天的学习,我们了解了Redis为什么快,它能做什么,以及如何在Linux环境下部署它。Redis的学习不仅仅是记住命令,更重要的是理解它的内存模型和持久化策略。
在接下来的课程中,我们将深入探讨Redis的持久化机制、哨兵模式以及集群架构,带你解锁更高级的Redis玩法。
那个喝下“敌草快”的23岁女孩,死在了最亲的人手里?
800元片酬,让婴儿淋雨,孩子啼哭声撕心肺,淋透了谁的底线?