redis
星之宇
这个作者很懒,什么都没留下…
展开
-
点赞模块设计:Redis缓存 + 定时写入数据库实现高性能点赞功能
本文基于 SpringCloud, 用户发起点赞、取消点赞后先存入 Redis 中,再每隔两小时从 Redis 读取点赞数据写入数据库中做持久化存储。点赞功能在很多系统中都有,但别看功能小,想要做好需要考虑的东西还挺多的。点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。至于多久从 Redis 取一次数据存到数据库中,根据项目的实际情况定吧,这里暂时设了一个小时。项目需求需要查看都谁点赞了,所以要存储每个点赞的点赞人、被点赞人,不能简单的做计数。文章分四原创 2020-09-11 10:35:05 · 2573 阅读 · 2 评论 -
为什么 Redis 要比 Memcached 更火?
前言我们都知道,Redis和Memcached都是内存数据库,它们的访问速度非常之快。但我们在开发过程中,这两个内存数据库,我们到底要如何选择呢?它们的优劣都有哪些?为什么现在看Redis要比Memcached更火一些?这里就从各个方面来对比这两个内存数据库的差异,方便你在使用时,做出最符合业务需要的选择。要分析它们的区别,主要从以下几个方面对比:线程模型数据结构淘汰策略管道与事务持久化高可用集群化线程模型要说性能,必须要分析它们的服务模型。Memcached处理请求采用多线原创 2020-09-11 10:14:12 · 145 阅读 · 0 评论 -
数据库和缓存一致性推荐方式
数据存储在数据库中,为了加快业务访问的速度,我们将数据库中的一些数据放在缓存中,那么问题来了,如何确保db和缓存中数据的一致性呢?我们列出了5种方法,大家都了解一下,然后根据业务自己选择。方式1获取缓存逻辑使用过定时器,定时刷新redis中的缓存。db更新数据逻辑更新数据不用考虑缓存中的数据,直接更新数据就可以了存在的问题缓存中数据和db中数据一致性可能没有那么及时,不过最终在某个时间点,数据是一致的。方式2获取缓存逻辑c1:根据key在redis中获取对应的valuec2:如果val原创 2020-08-22 11:16:14 · 173 阅读 · 0 评论 -
实现一个 Redis 分布式锁
在我们日常开发中,难免会遇到要加锁的情景。例如扣除产品库存,首先要从数据库中取出库存,进行库存判断,再减去库存。这一波操作明显不符合原子性,如果代码块不加锁,很容易因为并发导致超卖问题。咱们的系统如果是单体架构,那我们使用本地锁就可以解决问题。如果是分布式架构,就需要使用分布式锁。方案使用 SETNX 和 EXPIRE 命令SETNX key valueEXPIRE key secondsDEL keyif (setnx("item_1_lock", 1)) { expire("ite原创 2020-07-29 23:29:39 · 182 阅读 · 0 评论 -
Redis网络模型的源码分析
Redis网络模型的源码分析Redis的网络模型是基于I/O多路复用程序来实现的。源码中包含四种多路复用函数库epoll、select、evport、kqueue。在程序编译时会根据系统自动选择这四种库其中之一。下面以epoll为例,来分析Redis的I/O模块的源码。epoll系统调用方法Redis网络事件处理模块的代码都是围绕epoll那三个系统方法来写的。先把这三个方法弄清楚,后面就不难了。epfd = epoll_create(1024);创建epoll实例参数:表示该 epoll 实例原创 2020-07-25 17:54:01 · 157 阅读 · 0 评论