
redis
文章平均质量分 79
要争气
人生来平凡,因奋斗进取而不凡。
展开
-
基于Redis实现秒杀系统
系统架构客户端发起秒杀请求,请求经网关处理转发到对应的服务节点上,进行业务层处理,最后数据入库。业务处理: 验证秒杀活动是否已经开启; 对流量进行限制; 验证订单信息(验证重复秒杀、验证库存是否足够); 订单数据异步入库;验证秒杀活动是否开启,需要用到Redis实现,因为服务是分布式的,多个节点上的系统时间可能存在略微差异,可以采用Redis来管理秒杀活动的开启状态。由于秒杀开启后,会有大量流量进入,需要对访问流量进...原创 2021-12-22 16:11:53 · 2566 阅读 · 0 评论 -
BloomFilter布隆过滤器
布隆过滤器是一种数据结构,由一个很长的二进制位数组和一系列随机映射函数组成,用于判断某个key一定不存在或者可能存在于某个集合中,它在存储空间占用和查询效率上非常有优势,但是存在一定的误算率,数据越多误算率越高。 当使用布隆过滤初始化一个key时,先对key使用一系列的映射函数映射后得出它在二进制数组中的一系列位置,然后把这些位置上的值设置为1。当进行查找时,同样对key使用一系列的映射函数进行映射得出它在数组中的一系列位置,如果这些位置上存在为0的值说明key一定不在集合...原创 2021-12-21 14:03:11 · 935 阅读 · 0 评论 -
雪花算法的原理和实现Java
SnowFlake 算法,是 Twitter 开源的分布式 id 生成算法。其核心思想就是:使用一个 64 bit 的 long 型的数字作为全局唯一 id。在分布式系统中的应用十分广泛,且ID 引入了时间戳,基本上保持自增的,后面的代码中有详细的注解。这 64 个 bit 中,其中 1 个 bit 是不用的,然后用其中的 41 bit 作为毫秒数,用 10 bit 作为工作机器 id,12 bit 作为序列号。给大家举个例子吧,比如下面那个 64 bit 的 long 型数字:第一个部转载 2021-12-17 15:52:18 · 225 阅读 · 0 评论 -
Redis过期key是怎么清理的
过期删除策略删除到达过期时间的 key 。第一种:定时检查删除对于每一个设置了过期时间的 key 都会创建一个定时器,一旦达到过期时间都会删除。这种方式立即清除过期数据,对内存比较好,但是有缺点是:占用了大量 CPU 的资源去处理过期数据,会影响 redis 的吞吐量 和 响应时间。第二种:惰性检查删除当访问一个 key 的时候,才会判断该 key 是否过期,如果过期就删除。该方式能最大限度节省 CPU 的资源。但是对内存不太好,有一种比较极端的情况:出现大量的过期 key 没有转载 2021-12-16 18:14:43 · 917 阅读 · 0 评论 -
redis过期策略和内存淘汰机制
定期删除redis 会将每个设置了过期时间的 key 放入到一个独立的字典中,以后会定期遍历这个字典来删除到期的 key。Redis 默认会每秒进行十次过期扫描(100ms一次),过期扫描不会遍历过期字典中所有的 key,而是采用了一种简单的贪心策略。从过期字典中随机 20 个 key;删除这 20 个 key 中已经过期的 key;如果过期的 key 比率超过 1/4,那就重复步骤 1;redis默认是每隔 100ms就随机抽取一些设置了过期时间的key,检查其是否过期,如果过期就删除。注转载 2021-12-16 18:13:32 · 228 阅读 · 0 评论 -
Redis Cluster集群搭建、管理、springboot整合
安装Redis下载Redis源码包到安装目录解压:# 解压 tar -zxvf redis-6.2.6.tar.gz# 进入解压后的redis目录cd redis-6.2.6安装gccyum install gcc-c++ -y执行编译make MALLOC=libc安装make install安装完成,为了方便使用可以拷贝常用的配置和脚本到指定目录[root@localhost redis]# mkdir bin[ro...原创 2021-12-15 14:39:28 · 1257 阅读 · 0 评论 -
Sentinel主从架构
Redsi主从架构中,从节点可以分摊主节点的读取压力,并且当主机点宕机后可以让从节点充当主节点,实现故障转移,但是普通的主从架构故障转移不是自动完成的,需要手工处理。手工模拟故障转移:创建一个一主两从的主机架构:# 启动3个redis节点 (端口:6379 6380 6381)[root@localhost redis]# ./redis-server 6379/redis.conf[root@localhost redis]# ./redis-server 6380/redis.conf原创 2021-12-13 14:11:46 · 1727 阅读 · 0 评论 -
Redis面试飞扬跋扈
一、Redis基本概念 面试官心理: 靠!手上活都没干完又叫我过来面试,这不耽误我事么,今儿又得加班补活了........咦,这小伙子简历不错啊,先考考它redis.......... 面试官: 谈谈你对Redis的理解? 我: Redis是 ANSI C 语言编写的一个基于内存的高性能键值对(key-value)的NoSQL数据库,一般用于架设在Java程序与数据库之间用作缓存层来弥补DB性能与Java程序之间的差距所带来的请求阻塞造成的响应缓慢以及DB并发吞吐跟不上系统转载 2021-12-09 10:46:57 · 268 阅读 · 0 评论 -
Redis如何做数据备份和读写分离
Redis的主从复制是面试中经常会被问的,我最近面试的几家公司只要聊到Redis,都会问我主从复制的原理。1.为什么需要主从复制?在本系列的上一篇博客中,我们讲到了Redis的持久化机制,它很好的解决了单台Redis服务器由于意外情况导致Redis服务器进程退出或者Redis服务器宕机而造成的数据丢失问题。但持久化机制还原数据有个前提:你的Redis服务器得能正常启动。如果遇到极端的断电情况(虽然概率小,但是有可能),Redis服务器启都启动不了,怎么还原数据?怎么保证它的高可用。就算R转载 2021-12-09 10:36:29 · 312 阅读 · 0 评论 -
redis事务
一、事务的四大特性关系型数据库的事务具有四个特性:1. 原子性2. 一致性3. 隔离性4. 持久性二、而在我们redis数据库中,事务回事什么样子的呢?首先我们给出一个定义:redis的事务中,一次执行多条命令,本质是一组命令的集合,一个事务中所有的命令将被序列化,即按顺序执行而不会被其他命令插入在redis中,事务的作用就是在一个队列中一次性、顺序性、排他性的执行一系列的命令。事务的生命周期:1. 事务的创建:使用MULTI开启一个事务2. 加入队列:在开启事务转载 2021-12-07 15:06:22 · 938 阅读 · 0 评论 -
Redis分布式锁
简单实现获取锁流程如下:setnx 如果key不存在,设置值成功,否则设置失败;setex 设置值附带过期时间;关键代码: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> .原创 2021-12-08 14:29:13 · 959 阅读 · 0 评论