作者简介
目录
1.概述
2.下载安装
3.基础操作
4.集群
5.实战场景
1.概述
诸如数mysql、Oracle之类的关系型数据库或者NTFS、HDFS之类的文件存储系统,其本质上数据都是存在磁盘上的。这是现代计算机体系架构的架构所决定的,要持久化存储的数据都会落磁盘。但是正如我们所知的,访问磁盘是个很慢的操作,很显然如果在软件系统中每次访问数据都走磁盘,系统的吞吐量会很差,内存数据库的出现是为了提升数据访问的速度,拉升整个系统的性能。将数据存在内存中,访问内存要比访问磁盘要快得多。Redis(Remote Dictionary Server)应该说是目前为止用的对多的内存数据库。本文是博主Redis系列专栏的合集,每个章节就对应一到多篇文章,从Redis的基础操作一直将到高级场景。
2.下载安装
文章链接:
Linux安装redis(含报错解决)_linux下安装redis常见错误__BugMan的博客-CSDN博客
上文中会详细介绍Linux环境中Redis的下载安装,redis的整个下载安装过程不算麻烦,需要注意的
是Redis是C语言写的,需要先进行编译才可以使用,编译和服务器环境是相关的,有时候编译会过不了,文中针对常见的编译报错如何处理进行了讲解。
3.数据操作
文章链接:
【Redis】五大基本数据类型操作大全__BugMan的博客-CSDN博客
Redis支持多种数据类型,包括字符串、列表、集合、有序集合、散列等。这些数据类型使得Redis非常适合解决各种不同的问题。上面文章中将会详细介绍Redis的数据基础操作。
Redis一共提供了五种数据结构:String、List、Hash、Set、zSet。
很多时候无法记全这五种数据结构,这里教大家一种办法,这样来记忆即可:
- Redis是一个KV形式的内存数据库,所以其数据组织方式其实就是以KV为基准然后进行扩展,由KV的一对一到List的一对多再到Map的一类KV的集合。
- 实际业务场景中,Redis中存的数据很可能具有唯一性(比如用户信息)或者顺序性(比如需要根据用户VIP等级来顺序拿用户),所以额外提供了”辨重“、”排序“的两种数据结构。
于是有String,1key对1value;List,1key对多value;Hash,1key对1类kv,Set,去重的List;zSet可排序的List。
上面文章中将会对Redis各类数据结构的操作做详细讲解。
4.集群
文章链接:
redis 主从复制(读写分离)集群搭建(含错误处理)__BugMan的博客-CSDN博客
redis集群详细搭建方式(含原理、操作指令、异常处理)_创建redis集群__BugMan的博客-CSDN博客
redis解除(删除)主从关系_redis取消主从__BugMan的博客-CSDN博客
Redis的集群搭建主要分为两类:
- 读写分离集群
- 分片集群
读写分离集群是在垂直方向上分散压力:
分片集群是在水平方向上分散压力:
上面的文章中将会详细讲解两种集群的架构和搭建方法。
5.实战业务场景和问题
文章链接:
redis的热key、大key_redis 大key 热key__BugMan的博客-CSDN博客
Redis常用的业务场景:
-
缓存:Redis最常见的用途之一是作为缓存。它可以存储热门数据,如数据库查询结果、API调用响应或计算结果,以提高读取速度,减轻后端数据库或服务的负载。
-
会话管理:Redis可用于存储用户会话数据,以实现分布式Web应用程序的会话管理。这允许用户在多个应用服务器之间保持相同的会话状态。
-
计数器和排行榜:Redis的原子操作使其非常适合构建计数器和排行榜。你可以轻松地实现点赞计数、访问次数统计、排行榜等功能。
-
分布式锁:Redis的SETNX命令可以用于实现分布式锁,防止多个客户端同时修改共享资源,确保数据的一致性和安全性。
-
用户会话队列:Redis可用于构建聊天应用程序、消息队列、通知系统等需要实时性的应用。
-
配置管理:Redis可用于动态配置管理,允许实时更改应用程序配置参数,而无需重新启动应用。
在实际业务场景中,Redis相关的经典性能问题会有两个:
- 热key
- 大key
上面的文章中会详细介绍如何处理热key和大key。