redis总结(一)

1.redis支持5种数据结构

1)String

2)hash

可以作为单点登录,把cookieid储存起来,设置过期时间

3)set

set本身无序的,可以作为全局去重功能,jvm的set也是无序不重复的,如果是集群的话就起不到这个作用,所以redis可以很好解决

4)sorted set

有序集合,可以完成排名榜的功能,如果用mysql建立索引查询,速度会比较慢

5)list


2.redis优点

1)redis是单线程工作模型,避免了频繁的上下文切换

2)纯内存操作

3)采用无堵塞IO多路复用机制(一个线程,记录多个IO状态,来管理多个IO流)


3.redis缺点

1)缓存击穿,雪崩

2)缓存高并发竞争问题

3)缓存和数据库一致性问题

解决方案:

缓存击穿,雪崩都是缓存失效,直接怼上数据库,造成数据库连接失败

所以:

可以让他们抢分布式锁,抢到了再查询数据库

或者是让数据失效的时间+随机数,不至于同一个时间集体失效


缓存和数据库一致性问题

采用先删缓存,再更新数据库做法。为啥不更新缓存,再更新数据库呢?由于网络延迟,高并发,要保持缓存和数据库强一致性是比较难的,如果数据要求强一致性,建议不要使用缓存。只能保证最后缓存和数据库最终一致性。

还有一个是这个方案可以产生的读到脏数据的情况:

A删缓存,

B发现没有缓存,去数据库读取旧数据,

A更新数据库,

B更新缓存。

so缓存一直是旧数据。

解决方案是:在A写入数据库之后隔着一个时间(如1秒)删除缓存,即删除脏数据。


4.redis key失效策略

采用定期删除和惰性删除




猜你喜欢

转载自blog.csdn.net/weixin_38336658/article/details/80522089
今日推荐