前言
- Redis是一个高性能的key-value数据库
- Redis的出现,很大程度补偿了Memcached这类key-value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。
- 它提供了Python、Ruby、Erlang、Php客户端,使用很方便
常用场景
-
场景一(数据量比较大,但不是经常更新的场景:比如用户排行)
前台用户对数据进行查询,后台会先去Redis中判断数据是否存在,如果存在,则直接返回缓存中的数据。而如果不存在的话,就会去DB中,读取数据,并把数据缓存到Redis中。 -
场景二(大数据的频繁更新:比如微博的互动)
前台用户对数据进行更新,后台会先去Redis中判断数据是否存在,如果存在,则会直接更新Redis中对应的数据,同时记录每次操作的key信息,并把更新后的数据直接反馈给前台(PS:后台存在定时任务去执行队列中存在的更新操作)。如果不存在的话,则会先更新DB中的数据,更新完成后将数据保存在Redis中,同时将更新完成的数据反馈给前台。
优点:Redis是内存级操作,执行效率比DB快很多
缺点:对Redis的依赖很大,要做好宕机时的数据保存,不过可以使用Redis的快照AOF,快速恢复的话,应该不会有多大影响,因为就算Redis不工作了,也不会影响后续数据的处理。
难点:前期规划key的格式,存储类型很重要,因为这会影响能否把数据同步到DB
文章参考转载:seapeak007:redis与DB数据同步问题