当先锋百科网

首页 1 2 3 4 5 6 7

概述

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。

缓存策略

主要是为了提高用户获取数据的速度,让响应更快,降低用户访问物理设备的频次,要求缓存中的数据就是数据库中的数据。

缓存的设计

1、数据结构为 key-value 结构
2、C语言开发
3、被动使用LRU算法维护内存大小
4、设计时效性
5、持久化策略
6、事务控制

redis配置

修改redis.conf文件
1、关闭IP绑定
在这里插入图片描述
2、关闭保护模式
在这里插入图片描述
3、开启后台启动
在这里插入图片描述

redis持久化策略

redis有两种持久化策略,一种是RDB模式,一种是AOF模式。

redis会定期将内存中的数据保存到持久化文件中,如果redis服务器宕机重启时,会根据配置文件中的持久化文件名称实现数据的读取,从而实现了内存数据的恢复。

RDB模式

  • 1、RDB模式是redis默认开启的策略。
  • 2、RDB模式记录的是redis数据的内存快照,执行效率高,恢复数据速度快。
  • 3、RDB模式周期性的进行持久化,会导致少量的数据丢失。
  • 4、RDB模式是同步操作,持久化时会造成线程阻塞。

配置

1、指定RDB模式的名称
在这里插入图片描述
2、指定持久化文件位置,默认条件在当前目录下生成
在这里插入图片描述

持久化命令

save /bgsave
save:要求立即进行持久化,这是其他线程会陷入阻塞

bgsave:在后台进行持久化操作,但是不知道具体什么时间完成,当redis空闲时就会经型持久化,不会产生阻塞,异步操作。

RDB模式持久化策略

save 900 1          900秒内如果执行1次更新操作,则持久化1次.
save 300 10         300秒内如果执行了10次更新操作,则持久化1次.
save 60 10000       60秒内如果执行了10000次更新操作,则持久化1次.
save 1 1            1秒内如果执行了1次更新操作,则持久化1次.  效率太低

AOF模式

  • 1、AOF模式默认条件下的关闭的,需要手动开启。
  • 2、AOF模式记录的是用户的操作过程,将用户的操作命令追加到持久化文件中,所以AOF的持久化文件较大,恢复数据慢,需要定期维护该文件。
  • 3、AOF模式可以实现实时的数据持久化。
  • 4、AOF模式是异步操作,不会陷入阻塞

配置

1、开启AOF模式
在这里插入图片描述
2、指定持久化文件名称
在这里插入图片描述

AOF模式内存策略

appendfsync always					用户执行一次更新操作,则持久化一次
appendfsync everysec				每秒持久化一次.	效率较高但是低于RDB模式.
appendfsync no						持久化的时间由操作系统决定   一般不用.

关于持久化方式的选择

原则:如果允许少量的数据丢失,则首选RDB模式。如果内存数据不允许丢失,则选用AOF模式。

实际用法:
  • 1、redis当作缓存时,使用RDB模式
  • 2、redis当作数据库或消息中间件时,使用AOF模式

Redis内存策略

redis内存配置

在这里插入图片描述
1、内存大小的配置
在这里插入图片描述
2、修改内存策略为lru
在这里插入图片描述

先说两种算法

1、LRU算法

LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间 t,当须淘汰一个页面时,选择现有页面中其 t 值最大的,即最近最少使用的页面予以淘汰。

2、LFU算法

LFU(least frequently used (LFU) page-replacement algorithm)。即最不经常使用页置换算法,要求在页置换时置换引用计数最小的页,因为经常使用的页应该有一个较大的引用次数。但是有些页在开始时使用次数很多,但以后就不再使用,这类页将会长时间留在内存中,因此可以将引用计数寄存器定时右移一位,形成指数衰减的平均使用次数。

redis的内存策略

	1.volatile-lru       在设定了超时时间的数据中,采用LRU算法进行数据删除.

	2.allkeys-lru		所有的数据采用LRU算法进行删除.

	3.volatile-lfu		设定超时时间的数据采用lfu删除

	4.allkeys-lfu		 所有的数据采用lfu删除

	5.volatile-random	设定了超时时间的数据 随机删除

	6.allkeys-random	所有的数据随机删除

	7.volatile-ttl			将马上要超时的数据提前删除.

	8.noeviction			默认的策略	如果内存数据满足,但是不删除数据,直接报错返回.