Redis的相关知识|青训营

49 阅读3分钟

什么是Redis?它主要用来什么的?

Redis,英文全称是Remote Dictionary Server(远程字典服务),是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

与MySQL数据库不同的是,Redis的数据是存在内存中的。它的读写速度非常快,每秒可以处理超过10万次读写操作。因此redis被广泛应用于缓存,另外,Redis也经常用来做分布式锁。除此之外,Redis支持事务、持久化、LUA 脚本、LRU 驱动事件、多种集群方案。

Redis 作为一个内存数据库:

性能优秀,数据在内存中,读写速度非常快,支持并发 10W QPS。

单进程单线程,是线程安全的,采用 IO 多路复用机制。

丰富的数据类型,支持字符串(strings)、散列(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等。

支持数据持久化。

可以将内存中数据保存在磁盘中,重启时加载。

主从复制,哨兵,高可用。

可以用作分布式锁。

可以作为消息中间件使用,支持发布订阅。

说说Redis的基本数据结构类型?

大多数小伙伴都知道,Redis有以下这五种基本类型:

String(字符串)

Hash(哈希)

List(列表)

Set(集合)

zset(有序集合)

它还有三种特殊的数据结构类型

Geospatial

Hyperloglog

Bitmap

RDB

默认 Redis 是会以快照"RDB"的形式将数据持久化到磁盘的一个二进制文件 dump.rdb。

工作原理简单说一下:当 Redis 需要做持久化时,Redis 会 fork 一个子进程,子进程将数据写到磁盘上一个临时 RDB 文件中。子进程完成写临时文件后,将原来的 RDB 替换掉,这样的好处是可以 copy-on-write。

RDB 的优点是:这种文件非常适合用于备份:比如,你可以在最近的 24 小时内,每小时备份一次并且在每个月的每一天也备份一个 RDB 文件。这样的话,即使遇上问题,也可以随时将数据集还原到不同的版本。RDB 非常适合灾难恢复。

RDB 的缺点是:如果你需要尽量避免在服务器故障时丢失数据,那么RDB不合适你。

缓存雪奔

缓存雪奔指缓存中数据大批量到过期时间,而查询数据量巨大,请求都直接访问数据库,引起数据库压力过大甚至down机。

缓存雪奔一般是由于大量数据同时过期造成的,对于这个原因,可通过均匀设置过期时间解决,即让过期时间相对离散一点。如采用一个较大固定值+一个较小的随机值,5小时+0到1800秒。

Redis 故障宕机也可能引起缓存雪奔。这就需要构造Redis高可用集群啦。