一.redis的概述
Redis 是一个基于内存的高性能key-value数据库。
redis是一个非关系型的数据库(not-only-sql即nosql),以键值对的方式存储数据,将数据存放在内存中,存取速度快,但是对持久化的支持不够好,所以redis一般配合关系型数据库使用,redis可以做分布式缓存,用在数据量大,高并发的情况下.redis通过很多命令进行操作,而且redis不适合保存内容大的数据.
二.Redis有哪些数据类型
- redis有五种数据类型
- 数据类型详解
数据类型 | 应用场景 |
---|---|
String | 最常规的 set/get 操作,Value 可以是 String 也可以是数字。一般做一些复杂的计数功能的缓存。使用场景:常规key-value缓存应用。常规计数: 微博数, 粉丝数 |
Hash | 这里 Value 存放的是结构化的对象,比较方便的就是操作其中的某个字段。我在做单点登录的时候,就是用这种数据结构存储用户信息,以 CookieId 作为 Key,设置 30 分钟为缓存过期时间,能很好的模拟出类似 Session 的效果 |
List | 使用List结构,我们可以轻松地实现最新消息排行等功能。List的另一个应用就是消息队列 |
Set | 因为 Set 堆放的是一堆不重复值的集合。所以可以做全局去重的功能。例如:点赞点踩 |
Sorted Set | Sorted Set多了一个权重参数 Score,集合中的元素能够按 Score 进行排列。可以做排行榜应用。 |
三.redis的持久化方案RDB和AOF
Redis是一个支持持久化的内存数据库,通过持久化机制把内存中的数据同步到硬盘文件来保证数据持久化。当Redis重启后通过把硬盘文件重新加载到内存,就能达到恢复数据的目的。
1)RDB:快照形式,定期把内存中当前时刻的数据保存到磁盘。Redis默认支持的持久化方案。
速度快但是服务器断电的时候会丢失部分数据。
Redis会将数据集的快照dump到dump.rdb文件中。此外,我们也可以通过配置文件来修改Redis服务器dump快照的频率,在打开6379.conf文件之后,我们搜索save,可以看到下面的配置信息:
- RDB持久化配置
配置信息 | 解释 |
---|---|
save 900 1 | 在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照。 |
save 300 10 | 在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照。 |
save 60 10000 | 在60秒(1分钟)之后,如果至少有10000个key发生变化,则dump内存快照。 |
2)AOF:append only file。持久化以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。
- AOF持久化配置(在Redis的配置文件中存在三种同步方式)
配置信息 | 解释 |
---|---|
appendfsync always | 每次有数据修改发生时都会写入AOF文件。 |
appendfsync everysec | 每秒钟同步一次,该策略为AOF的缺省策略。 |
appendfsync no | 从不同步。高效但是数据不会被持久化。 |
3)优劣势小结
- 性能上:相比于AOF机制,如果数据集很大,RDB的启动效率会更高。
- 数据完整性:如果你想保证数据的高可用性,即最大限度的避免数据丢失,建议使用AOF。
四.redis的优点
①读写速度快. 数据存放在内存中,数据结构类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)
②支持丰富的数据类型,string,hash,list,set,sorted
③支持事务,而且操作都是原子性.(原子性就是事务要么操作成功,要么失败回滚)
④丰富的特性:可以用于缓存,消息队列,按key设置过期时间,到期后自动删除
⑤支持数据持久化(将内存数据持久化到磁盘),支持AOF和RDB两种持久化方式,从而进行数据恢复操作,可以有效地防止数据丢失
⑥支持主从(master-slave)复制来实现数据备份,主机会自动将数据同步到从机
五.单线程的redis为什么这么快?
六.Memcache与Redis的区别?
1)Memcache简介
- MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统。
- MemCaChe是一个存储键值对的HashMap。
- 在内存中对任意的数据(比如字符串、对象等)使用key-value存储。
2)为什么要使用Memcache?
- 主要用于动态Web应用以减轻数据库的负载。
- 它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。
3)Redis相比memcached有哪些优势?
- memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型。
- redis的速度比memcached快很多
- 存储方式 Memecache把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小。 Redis有部份存在硬盘上,redis可以持久化其数据。
- value 值大小不同:Redis 最大可以达到 1gb;memcache 只有 1mb。
- Redis支持数据的备份,即master-slave模式的数据备份。
The best preparation for tomorrow is doing your best today.
2020.02.27
转载:https://blog.csdn.net/weixin_45393094/article/details/104537579