redis缓存逻辑问题

自渡96 2019-09-26 10:21:37
加精
博客将文章数据放入redis,当文章有修改的时候才清楚缓存,文章数据有个字段为浏览量,因为打开文章即浏览量就要+1,按照逻辑来说文章数据改变了,应该要写入数据库了,这个逻辑下来那么缓存完全没用了,毕竟一打开这篇文章数据就发生了改变,就要清除缓存从数据库过去。这个问题该怎么处理呢,是我的逻辑不太对吗?
...全文
1414 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
4231?2567 2020-03-14
  • 打赏
  • 举报
回复
访问量我们设计了一个单独的模块来存储,而不是直接保存在文章表上的,
qq_46450752 2020-03-02
  • 打赏
  • 举报
回复
看评论学习了
luj_1768 2020-01-31
  • 打赏
  • 举报
回复
你要讨论的是个数据库服务底层实现有关的问题。redis是个大型服务集群方案,为了提供更大的访问通过能力需要进行非常复杂的优化措施。类似的系统,比较常见的优化有:针对检索和常用查询进行优化的方案;针对频繁写入和改变进行优化的方案;针对通讯负载进行的优化;针对分发复制与同步进行的优化。这些优化大都需要消耗大量的系统存储资源,一个几十k的数据集,可能需要占用几百M、甚至上G的内存来进行服务。所以,你们对于数据库系统的解题思路缺乏了解。
qq391497043 2019-10-11
  • 打赏
  • 举报
回复
TiggerRun 2019-10-05
  • 打赏
  • 举报
回复
设计上的繁琐带来运行上的高效分两表,先缓存再写入
疯子来来 2019-10-04
  • 打赏
  • 举报
回复
good 不错不错
游北亮 2019-09-30
  • 打赏
  • 举报
回复
如果是要做大做强,那应该拆分成2个服务, 一个文章服务,只负责维护博客的增删改查,根本不管访问、评论、点赞啥的, 该服务把所有的操作,都发消息出去 另一个统计服务,接收消息,进行访问统计、编辑统计、点赞统计啥的,并提供查询接口(缓存实现也是统计服务完成)
游北亮 2019-09-30
  • 打赏
  • 举报
回复
个人博客,那肯定只有一台服务器,用什么Redis啊?直接存内存就好了,然后5分钟刷一次数据库,实时高效。 多一个中间件,故障概率多一层
自渡96 2019-09-30
  • 打赏
  • 举报
回复
引用 27 楼 水边2 的回复:
比如网易的点赞,点一下加1,刷新页面又变回原来的数值了,等一段时间才是正确数值。 也可以写入本地内存,异步线程定时入库,但是如果存在多台服务器,可能出现数据不一致的现象。 关键还是你们对这个浏览量是否要求实时。
这个东西应该不需要实时,只是搭建个人博客,碰到这个问题了,就来问问各位大佬的想法,自己有点凌乱
游北亮 2019-09-30
  • 打赏
  • 举报
回复
比如网易的点赞,点一下加1,刷新页面又变回原来的数值了,等一段时间才是正确数值。 也可以写入本地内存,异步线程定时入库,但是如果存在多台服务器,可能出现数据不一致的现象。 关键还是你们对这个浏览量是否要求实时。
咕噜橙 2019-09-29
  • 打赏
  • 举报
回复
可以将文章内容,点赞浏览,评论这几个分开,浏览和点赞这种实时变化的数据先存储在redis再定时更新到数据库,请求时直接读取数据库
maradona1984 2019-09-29
  • 打赏
  • 举报
回复
引用 24 楼 自渡96 的回复:
[quote=引用 22 楼 maradona1984 的回复:] 访问量我们设计了一个单独的模块来存储,而不是直接保存在文章表上的,这样就避免了你的问题,也减少文章表的读写频率
好主意[/quote] 关键是有很多模块都需要访问量,所以拆分出来也能减少其他模块的工作量,也能单独优化
自渡96 2019-09-29
  • 打赏
  • 举报
回复
引用 22 楼 maradona1984 的回复:
访问量我们设计了一个单独的模块来存储,而不是直接保存在文章表上的,这样就避免了你的问题,也减少文章表的读写频率
好主意
自渡96 2019-09-29
  • 打赏
  • 举报
回复
引用 17 楼 Salted-fish 的回复:
将文章内容和浏览量这样的数据分开使用不同的key来缓存。 这个解决方案是最好的。
好的,感谢
maradona1984 2019-09-29
  • 打赏
  • 举报
回复
访问量我们设计了一个单独的模块来存储,而不是直接保存在文章表上的,这样就避免了你的问题,也减少文章表的读写频率
自渡96 2019-09-29
  • 打赏
  • 举报
回复
引用 16 楼 宝良_阳明子 的回复:
文章内容为什么放redis,这种比较大的数据建议另外选择存储结构,如果存储过多会触发LRU,如果非要放的话可以选择hash结构,将内容与浏览量放不同的key,更新只更新浏览量就行了。个人建议。
使用Redis只是希望访问的时候可以快些,感谢建议
自渡96 2019-09-29
  • 打赏
  • 举报
回复
引用 15 楼 oh_Maxy 的回复:
浏览量还有有一些逻辑的,比如相同ip或者账号访问多次,也只算一次。 浏览量准确度一般要求不是特别高。缓存起来实时性不特别准,影响也不大。
有考虑过,现在想先把现有的问题解决下再处理这个问题
自渡96 2019-09-29
  • 打赏
  • 举报
回复
引用 14 楼 亲爱的Joe 的回复:
浏览量增加了,为什么不单独修改浏览量,而把文章缓存删除掉呢?
这样的话需要从缓存取数据,修改数据,再填入缓存
Salted-fish 2019-09-29
  • 打赏
  • 举报
回复
楼主是用的php吗?
Salted-fish 2019-09-29
  • 打赏
  • 举报
回复
将文章内容和浏览量这样的数据分开使用不同的key来缓存。 这个解决方案是最好的。
加载更多回复(16)

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧