Redis
文章平均质量分 52
罗彬桦
君子以自强不息
展开
-
redisson分布式锁
基于Redisson实现分布式锁我们一起Coding吧!引入Redisson的jar包进行Redisson与Redis的配置使用分布式锁通过JAVA API方式引入RedissonSpring项目引入RedissonSpring Boot项目引入Redisson官网redisson.org如果是引入redisson的jar包如果是springboot引入是不同的,具体看官网下面是Spring引入具体测试架构application.propertieslogging.pa原创 2021-05-29 15:05:26 · 213 阅读 · 1 评论 -
Redis集群
Redis的集群原理如何从海量数据里快速找到所需?分片:按照某种规则去划分数据,分散存储在多个节点上常规的按照哈希划分无法实现节点的动态增减一致性哈希算法:对2^32取模,将哈希值空间组织成虚拟的圆环将数据key使用相同的函数Hash计算出哈希值Node C 宕机新增服务器 Node XHash环的数据倾斜问题引入虚拟节点解决数据倾斜的问题...原创 2021-05-11 20:44:54 · 46 阅读 · 0 评论 -
Pipeline及主从同步
使用Pipeline的好处Pipeline和Linux的管道类似Redis基于请求/响应模型,单个请求处理需要一 一应答Pipeline批量执行命令,节省多次IO往返的时间Redis的同步机制主从同步原理全同步过程Salve发送sync命令到MasterMaster启动一个后台进程,将Redis中的数据快照保存到文件中Master将保存数据快照期间接收到的写命令缓存起来Master完成写文件操作后,将该文件发送给Salve使用新的AOF文件替换掉旧的AOF文件Master将这原创 2021-05-11 20:31:48 · 133 阅读 · 0 评论 -
持久化方式之AOF以及混合模式
Redis如何做持久化AOF(Append-Only-File)持久化:保存写状态记录下除了查询以外的所有变更数据库状态的指令以append的形式追加保存到AOF文件中(增量)自己通过百度搜索如何修改为AOFAOF持久化日志重写解决AOF文件大小不断增大的问题,原理如下:调用fork(),创建一个子进程子进程把新的AOF写到一个临时文件里,不依赖原来的AOF文件主进程持续将新的变动同时写到内存的原来的AOF里主进程获取子进程重写AOF的完成信号,往新AOF同步增量变动使用新的A原创 2021-05-11 20:01:31 · 142 阅读 · 0 评论 -
Redis如何做持久化之RDB
Redis如何做持久化RDB(快照)持久化:保存某个时间点的全数数据快照SAVE:阻塞Redis的服务器进此,直到RDB文件被创建完毕BGSAVE:Fork出一个子进程来创建RDB文件,不阻塞服务器进程自动化触发RDB持久化的方式根据redis.conf配置里的SAVE m n 定时触发(用的是BGSAVE)主从复制时,主节点自动触发执行Debug Reload执行Shutdown且没有开启AOF持久化BGSAVE原理系统调用fork():创建进程,实现了Copy-on-Wr原创 2021-05-11 19:23:55 · 84 阅读 · 0 评论 -
如何使用Redis做异步队列
如何使用Redis做异步队列使用List作为队列,RPUSH生产消息,LPOP消费消息rpush testlist aaa(integer) 1rpush testlist bbb(integer) 2rpush testlist ccc(integer) 3lpop testlist //弹出队列"aaa"lpop testlist"ccc" 缺点:没有等待队列里有值就直接消费弥补:可以通过在应用层引入Sleep机制去调用LPOP重试BLPOP key [key …] t原创 2021-05-11 15:59:27 · 550 阅读 · 0 评论 -
如何实现分布式锁
如何通过Redis实现分布式锁分布式锁需要解决的问题互斥性安全性死锁容错SETNX key value:如果key不存在,则创建并赋值时间复杂度:O(1)返回值:设置成功,返回1;设置失败,返回0。get locknx(nil)setnx locknx test(integer) 1setnx locknx task(integer) 0get locknx"test"上述操作是原子的,所以初期的时候被人们用来做分布式锁,咱们可以再执行某段代码逻辑的时候先进行SE原创 2021-05-11 01:51:02 · 90 阅读 · 2 评论 -
从海量Key里查询出某一固定前缀的Key
从海量Key里查询出某一固定前缀的Key留意细节摸清数据规模,即问清楚边界使用keys对线上的业务的影响KEYS pattern:查找所有符合给定模式pattern的key植入了200000010个key,如果我们一次性返回前面是k1的key速度非常慢。KEYS指令一次性返回所有匹配的key键的数量过大会使服务卡顿SCAN cursor [MATCH pattern] [COUNT count]基于游标的迭代器,需要基于上一次的游标延续之前的迭代的过程以0作为游标开始一次新原创 2021-05-11 00:45:15 · 288 阅读 · 0 评论 -
Redis常用数据类型
Redis常用数据类型供用户使用的数据类型String:最基本的数据类型,二进制安全原创 2021-05-10 01:08:16 · 64 阅读 · 0 评论 -
Redis简介
主流应用架构缓存中间件——Memcache和Redis的区别Memcache:代码层次类似Hash支持简单数据类型不支持数据持久化存储不支持主从不支持分片Redis数据类型丰富支持数据磁盘持久化存储支持主从支持分片为什么Redis能这么快100000+QPS(QPS即query per second 每秒内查询次数)完全基于内存,绝大部分请求是存粹的内存操作,执行效率高数据结构简单,对数据操作也简单采用单线程,单线程也能处理高并发请求,想多核也可启动多实例使用多原创 2021-05-09 15:44:58 · 62 阅读 · 0 评论 -
Redis笔记
Nosql概述为什么要用Nosql1、单机MySQL的年代90年代,一个基本的网站访问量一般不会太大,单个数据库完全足够!那个时候,更多的去使用静态网页 Html ~ 服务器根本没有太大的压力!思考一下,这种情况下:正规网站的瓶颈是什么?1、数据量如果太大、一个机器放不下了!2、数据的索引 (B+ Tree),一个机器内存也放不下3、访问量(读写混合),一个服务器承受不了~只要你开始出现以上的三种情况之一,那么你就必须要晋级!2、Memcached(缓存)+ MySQL + 垂直原创 2021-01-13 04:24:03 · 396 阅读 · 0 评论