redis的5中数据类型

String hash list set 和 zset(有序集合)

(1)String

Redis中最基本的数据存储结构,其他类型数据都是以string作为基础去存储的

String可以是简单的字符串,也可以是复杂的字符串(xml,json) 数字(浮点数、整数);二进制(图片、音频、视频)

最大不能超过512M

应用场景:

缓存功能: 减轻数据库压力

计数器:

共享session: 在分布式服务中,可能会将用户信息的访问负载均衡到不同的服务器上,用户刷新一次可能就需重新登录,为了避免这个问题,可以将用户的session保存到redis中,在这种情况下只要保证redis的高可用和扩展性,每次获取用户信息从redis中获取即可

限速:在发送短信的时候,为了限制短信接口不被频繁访问,限制用户每分钟发送验证码的频率

(2)Hash

保存用户信息

Key:{
 Key1:value1,
 Key2:value2,
 Key3:value3
 }

(3)List

特点:用来存储多个有序的字符串,每个字符串又称为元素,一个列表可以存储2的32次方-1个元素,在redis中可以从列表的两端查询和弹出数据,还可以获取指定范围的元素列表,获取指定索引的数据,列表是一种比较灵活的数据结构

优点:列表的元素是有序的、列表内的元素可以重复

应用场景:可以简单模拟消息队列

(4)Set

特点:用来保存多个字符串,但是和列表不同的是set不允许有重复的元素,并且集合中的元素的都是无序的,redis除了支持集合的增删改查之外,还提供了多个集合交集、并集、差集。

应用场景:在项目中上传图片功能中,将上传的图片地址保存在redis的set集合中,通过set集合可以计算差集,判断垃圾图片,定时清理垃圾图片

(5)Zset(有序集合)

特点:保留了set集合的特性。但是zset集合是可以排序的,但是和列表的索引是不一样的,zset给每个元素设置一个分数score,按照分数进行排序,列表的索引是不可重复的,但是zset的分数数可以重复的

应用场景:排行榜,视频播放量、点赞数等等

redis做session挂了 redis存储session用什么数据类型_字符串

redis中过期键的删除策略

(1)、定时删除:在设置键的过期时间的同时,创建一个定时器,当键在过期时间的时候自动删除该键
(2)、惰性删除:放任过期时间不管,每次从redis中获取该键的时候,都会检查该键是否过期,如果过期了就删除,去过过期就返回该键
(3)、定期删除:每个一段时间检查一次,即使键已经过期,但是还没有到定期检查的时间,也不会删除键,到了定期时间,程序就会检查所有的键是否过期,将已过期的键删除

redis持久化机制

Redis有两种持久化机制,RDB和AOF

redis做session挂了 redis存储session用什么数据类型_字符串_02


1)RDB(Redis Database)持久化机制:通过数据集快照的方式,在某个时间点,将redis中的所有键值对写入一个临时文件,持久化结束之后,用这个临时文件替换上次持久化的文件,达到数据恢复的效果

优点:

1.只有一个dump.rdb文件,方便持久化

2.容灾性好,一个文件可以保存到安全的磁盘

3.性能最大化,使用子进程来完成写的操作,而主进程继续处理命令,所以是IO最大化,保证了redis的高性能

4.相对数据集较大的时候,比AOF的启动效率更高

缺点:

数据安全性低。(RDB是间隔一段时间才进行持久化,如果在此期间,redis发生故障,会导致数据丢失。所以这种方式更适合对数据要去不严谨的时候使用)

2)AOF(Appeng-only file)持久化方式:所有的命令记录以redis命令请求协议的格式持久化保存为aof文件

优点:

1、数据安全,配置appendfsync属性实现持久化,每进行一次命令操作,都会记录到aof文件中一次。

2、通过append模式写文件,及时中途redis宕机,可以通过redis-check-aof工具解决数据一致性问题

缺点:

1、AOF文件比RDB文件大,且恢复速度慢

2、数据集较大的时候,比RDB启动效率低