
NoSQL
自由圣骑士
喜欢学习、喜欢接近新事物。
展开
-
Spring Boot 监听 Redis Key 失效事件实现定时任务
业务场景我们以订单功能为例说明下:生成订单后一段时间不支付订单会自动关闭。最简单的想法是设置定时任务轮询,但是每个订单的创建时间不一样,定时任务的规则无法设定,如果将定时任务执行的间隔设置的过短,太影响效率。还有一种想法,在用户进入订单界面的时候,判断时间执行相关操作。方式可能有很多,在这里介绍一种监听 Redis 键值对过期时间来实现订单自动关闭。实现思路在生成订单时,向 Redis 中增加一个 KV 键值对,K 为订单号,保证通过 K 能定位到数据库中的某个订单即可,V 可为任意值。假设,生转载 2020-05-21 16:27:39 · 253 阅读 · 0 评论 -
redis的详细介绍
一、概述Redis是一个开源的,基于内存的结构化数据存储媒介,可以作为数据库、缓存服务或消息服务使用。Redis支持多种数据结构,包括字符串、哈希表、链表、集合、有序集合、位图、Hyperloglogs等。Redis具备LRU淘汰、事务实现、以及不同级别的硬盘持久化等能力,并且支持副本集和通过Redis Sentinel实现的高可用方案,同时还支持通过Redis Cluster实现的数据自动...原创 2020-02-21 12:23:07 · 637 阅读 · 0 评论 -
Redis 缓存+定时写入数据库实现高性能点赞功能!
本文基于 SpringCloud, 用户发起点赞、取消点赞后先存入 Redis 中,再每隔两小时从 Redis 读取点赞数据写入数据库中做持久化存储。点赞功能在很多系统中都有,但别看功能小,想要做好需要考虑的东西还挺多的。点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。至于多久从 Redis 取一次数据存到数据库中,根据项目的实际情况定吧,我是暂...原创 2019-11-29 14:25:03 · 4245 阅读 · 6 评论 -
10分钟彻底理解Redis 的持久化机制:RDB和AOF
1、redis持久化的概念Redis作为一个键值对内存数据库(NoSQL),数据都存储在内存当中,在处理客户端请求时,所有操作都在内存当中进行,如下所示:这样做有什么问题呢?其实,只要稍微有点计算机基础知识的人都知道,存储在内存当中的数据,只要服务器关机(各种原因引起的),内存中的数据就会消失了不仅服务器关机会造成数据消失,Redis服务器守护进程退出,内存中的数据也一样会消失。对于...原创 2019-09-17 10:12:00 · 181 阅读 · 0 评论 -
高并发环境下,先操作数据库还是先操作缓存
1、前言在分布式系统中,缓存和数据库同时存在时,如果有写操作的时候,先操作数据库还是先操作缓存呢?先思考一下,可能会存在哪些问题,再往下看。下面我分几种方案阐述。2、缓存维护方案一假设有一写(线程A)一读(线程B)操作,先操作缓存,在操作数据库,如下流程图所示:1)线程A发起一个写操作,第一步del cache2)线程A第二步写入新数据到DB3)线程B发起一个读操作,cache m...原创 2019-08-31 10:49:53 · 254 阅读 · 0 评论 -
redis事务、通讯协议、复制流程、数据恢复方式、key的过期策略
问题1:redis的通讯协议是什么?回答:Redis 的通讯协议是文本协议,是的,Redis 服务器与客户端通过 RESP(Redis Serialization Protocol)协议通信。没错,文本协议确实是会浪费流量,不过它的优点在于直观,非常的简单,解析性能极其的好。我们不需要一个特殊的 Redis 客户端仅靠 Telnet 或者是文本流就可以跟 Redis 进行通讯。客户端的命令...原创 2019-08-12 12:35:28 · 199 阅读 · 0 评论 -
redis相关的问答
Redis主要有哪些功能?1.哨兵(Sentinel)和复制(Replication)Redis服务器毫无征兆的罢工是个麻烦事,如何保证备份的机器是原始服务器的完整备份呢?这时候就需要哨兵和复制。Sentinel可以管理多个Redis服务器,它提供了监控,提醒以及自动的故障转移的功能,Replication则是负责让一个Redis服务器可以配备多个备份的服务器。Redis也是利用这两个功能...原创 2019-08-08 19:31:49 · 130 阅读 · 0 评论 -
redis的持久化存储和Redis适用场景
Redis支持两种数据持久化方式:RDB方式和AOF方式。前者会根据配置的规则定时将内存中的数据持久化到硬盘上,后者则是在每次执行写命令之后将命令记录下来。两种持久化方式可以单独使用,但是通常会将两者结合使用。RDB持久化原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化。指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时...原创 2019-08-08 17:11:10 · 789 阅读 · 0 评论 -
解决redis缓存穿透、redis缓存雪崩问题
redis缓存雪崩数据未加载到缓存中,或者缓存同一时间大面积的失效,从而导致所有请求都去查数据库,导致数据库CPU和内存负载过高,甚至宕机。比如一个雪崩的简单过程:1、redis集群大面积故障2、缓存失效,但依然大量请求访问缓存服务redis3、redis大量失效后,大量请求转向到mysql数据库4、mysql的调用量暴增,很快就扛不住了,甚至直接宕机5、由于大量的应用服务依赖mys...原创 2019-08-08 16:32:04 · 2204 阅读 · 0 评论 -
redis单线程的原因和并发快的原因
Redis的高并发和快速原因1、redis是基于内存的,内存的读写速度非常快;2、redis是单线程的,省去了很多上下文切换线程的时间;3、redis使用多路复用技术,可以处理并发的连接。非阻塞IO 内部实现采用epoll,采用了epoll+自己实现的简单的事件框架。epoll中的读、写、关闭、连接都转化成了事件,然后利用epoll的多路复用特性,绝不在io上浪费一点时间。为什么redis...原创 2019-08-08 16:27:58 · 366 阅读 · 0 评论 -
Redis哨兵、复制、集群的设计原理,以及区别
谈到Redis服务器的高可用,如何保证备份的机器是原始服务器的完整备份呢?这时候就需要哨兵和复制。哨兵(Sentinel):可以管理多个Redis服务器,它提供了监控,提醒以及自动的故障转移的功能。复制(Replication):则是负责让一个Redis服务器可以配备多个备份的服务器。Redis正是利用这两个功能(哨兵+复制)来保证Redis的高可用。哨兵哨兵是Redis集群架构中非常重...原创 2019-08-08 14:47:21 · 187 阅读 · 0 评论 -
Redis数据与数据库数据的一致性解决方案
业务场景在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节。所以,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问MySQL等数据库。这个业务场景,主要是解决读数据从Redis缓存,一般都是按照下图的流程来进行业务操作。读取缓存步骤一般没有什么问题,但是一旦涉及到数据更新:数据库和缓存更新,就容易出现缓存(Redis)和数据库(MySQL)间的...原创 2019-08-08 11:53:49 · 848 阅读 · 0 评论 -
解决redis并发key的竞争问题-比如多个客户端set操作导致的并发问题
Redis高并发的问题以及今天要谈到的Redis并发竞争问题,这里的并发指的是多个redis的client同时set key引起的并发问题。比如:多客户端同时并发写一个key,一个key的值是1,本来按顺序修改为2,3,4,最后是4,但是由于并发设置的原因,最后顺序变成了4,3,2,最后变成的key值成了2。如何解决Redis的并发竞争key问题第一种方案:分布式锁1.整体技术方案这种...原创 2019-08-08 11:20:36 · 4397 阅读 · 1 评论 -
Redis实现分布式锁的核心机制
分布式锁的概念与分布式锁相对应的是线程锁、进程锁。线程锁主要用来给方法、代码块加锁。当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该代码段。线程锁只在同一JVM中有效果,因为线程锁的实现在根本上是依靠线程之间共享内存实现的,比如Synchronized、Lock等。进程锁为了控制同一操作系统中多个进程访问某个共享资源,因为进程具有独立性,各个进程无法访问其他进程的资源,因此无...原创 2019-08-08 11:06:58 · 255 阅读 · 0 评论 -
Redis的内存回收原理,及内存过期淘汰策略详解
Redis内存回收机制Redis的内存回收主要围绕以下两个方面:1.Redis过期策略:删除过期时间的key值2.Redis淘汰策略:内存使用到达maxmemory上限时触发内存淘汰数据Redis的过期策略和内存淘汰策略不是一件事,实际研发中不要弄混淆了,下面会完整的介绍两者。Redis过期策略定时过期每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除。该策略可以立...原创 2019-08-08 10:28:31 · 273 阅读 · 0 评论