redis常用操作,缓存击穿,缓存雪崩,缓存穿透,序列化,以及整合springboot,五种数据的常见操作


普通的项目开发仅仅只是将热点数据储存到缓存当中,提高访问速度,其他更加深奥的根本用不到


1.reids是键值对数据库,键的类型只能为字符串,值:字符串、列表、集合、散列表、有序集合

2.Redis 的数据是存在内存中的,所以读写速度非常快, 因此 redis 被广泛应用于缓存方向,数据结构丰富,除了支持string类型的value外还支持hash、set、zset、list等
数据结构

3.将热点数据放到内存中,设置内存的最大使用量以及淘汰策略来保证缓存的命中 率
其他操作:
token生成、session共享、分布式锁、自增id、验证码、好友关注 、信息缓存,验证码

缓存穿透问题:redis缓存和数据库中都没有数据,用户查询不到数据返回为空会一直进行查询。解决方案:查询为空后,将空值存进redis缓存中,并设置过期时间,不会占用内存,再次查询会只查到为空。

缓存雪崩问题:在同一时间大量的redis缓存key同时失效,使redis数据库宕机,导致查询压力全部集中在数据库上,带来巨大压力。解决方案:1.查询key设计随机TTL过期时间。2.利用redis主从提高服务可用性,要注意数据的一致性3.增加降级限流策略4.添加多级缓存

缓存击穿问题:因为设置了缓存过期时间,导致某一个热点数据失效,并且重新读入缓存非常麻烦,导致数据写入数据库压力过大。解决方案:1.设置互斥锁,在发现缓存失效后,获取锁,读取数据库并在重新写入缓存后释放锁,这段时间其他线程无法访问。2.逻辑过期。开启一个新线程,重新设置缓存过期时间


序列化


4.StringRedisTemplate继承了RedisTemplate,对key、value 、hashkey、hashvalue提供了不同的序列化策略
5.GenericToStringSerializer: 可以将任何对象泛化为字符串并序列化
6.Jackson2JsonRedisSerializer: 跟JacksonJsonRedisSerializer实际上是一样的
7.JacksonJsonRedisSerializer: 序列化object对象为json字符串
8.JdkSerializationRedisSerializer: 序列化java对象(被序列化的对象必须实现Serializable接口),无法转义成对象
9.StringRedisSerializer: 简单的字符串序列化
10.GenericToStringSerializer:类似StringRedisSerializer的字符串序列化
11.GenericJackson2JsonRedisSerializer:类似Jackson2JsonRedisSerializer,但使用时构造函数不用特定的类参考以上序列化,自定义序列化类;
12.key和hashKey:推荐使用 StringRedisSerializer: 简单的字符串序列化
13.value和hashValue:推荐使用GenericJackson2JsonRedisSerializer:类似Jackson2JsonRedisSerializer,但使用时构造函数不用特定的类
14.自定义序列化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值