
redis
文章平均质量分 83
缘来如此09
度,恒
展开
-
数据库与缓存数据一致性方法总结
一、背景工作中我们经常会有以下的场景(1)先查缓存,缓存有数据就直接返回(2)缓存没数据就查数据库,数据库有数据返回,并且将数据写入缓存(3)数据库也没有数据就返回空如果只是简单的查询和新增但是这个流程存在几个问题(1)如果需要更新缓存中的数据,更新失败,...原创 2021-11-08 17:18:20 · 264 阅读 · 0 评论 -
redis--缓存管理、穿透、击穿、雪崩
一、缓存简介缓存能够有效地加速应用的读写速度,同时也可以降低后端负载,对日 常应用的开发至关重要。但是将缓存加入应用架构后也会带来一些问题,接下来会重点将穿透、击穿、雪崩1.缓存作用(1)加速读写:因为缓存通常都是全内存的(例如Redis、Memcache),而存储层通常读写性能不够强悍(例如MySQL),通过缓存的使用可以有效地加速读写,优化用户体验。 (2)降低后你端负载:帮助后端减少访问量和复杂计算(例如很复杂的SQL语句),在很大程度降低了后端的负载。2.缓存更新..原创 2021-05-03 09:53:40 · 390 阅读 · 0 评论 -
redis--集群Cluster模式
一、简介Redis Cluster是Redis的分布式解决方案,在3.0版本正式推出,有效地解决了Redis分布式方面的需求,本篇文章只讲理论不讲实操二、分区规则分布式数据库首先要解决把整个数据集按照分区规则映射到多个节点的问题,即把数据集划分到多个节点上,每个节点负责整体数据的一个子集,redis是采用哈希分区的方式,接下来介绍几种常见的哈希分区算法1.节点取余分区使用特定的数据,如Redis的键或用户ID,再根据节点数量N使用公式: hash(key)%N计算出哈希值,用来决定.原创 2021-04-30 08:58:55 · 675 阅读 · 1 评论 -
redis--哨兵(Sentinel)架构
一、主从复制存在的问题Redis的主从复制模式下,一旦主节点由于故障不能提供服务,需要人工将从节点晋升为主节点,同时还要通知应用方更新主节点地址,对于很多应用场景这种故障处理的方式是无法接受的。可喜的是Redis从2.8开始正式 提供了Redis Sentinel(哨兵)架构来解决这个问题二、哨兵的高可用行当主节点出现故障时,Redis Sentinel能自动完成故障发现和故障转移,并通知应用方,从而实现真正的高可用。三、哨兵的工作内容1.监控不断的检查mast...原创 2021-04-28 09:13:14 · 303 阅读 · 2 评论 -
redis--lua实现漏桶算法限流
纯粹无聊写的,没啥大用,本来是想保证原子性,但是写完发现虽然内部逻辑保证了但是,调用时还是会无法保证原子性,实际完全可以写在java里然后加个分布式锁优雅解决,不过既然写了直接删了太可惜了,存起来纪念下吧 String lua = "local lastTimekey=KEYS[1]\n" + "local speedkey=ARGV[1]\n" + //获取该渠道桶的初始.原创 2021-04-26 18:50:23 · 1180 阅读 · 0 评论 -
redis--内存模型
一、简介Redis所有的数据都存在内存中,当前内存虽然越来越便宜,但跟廉价的硬盘相比成本还是比较昂贵,因此如何高效利用Redis内存变得非常重要介绍Redis内存之前首先说明如何统计Redis使用内存的情况。二、内存消耗划分Redis进程内消耗主要包括:自身内存+对象内存+缓冲内存+内存碎片, 其中Redis空进程自身内存消耗非常少,通常used_memory_rss在3MB左右,used_memory在800KB左右,一个空的Redis进程消耗内存可以忽略不计。 1...原创 2021-04-26 08:56:01 · 1493 阅读 · 0 评论 -
redis--堵塞
一、简介众所周知Redis是典型的单线程架构,所有的读写操作都是在一条主线程中完成的。当Redis用于高并发场景时,这条线程就变成了它的生命线。如果出现阻塞,哪怕是很短时间,对于我们的应用来说都是噩梦...原创 2021-04-25 08:56:52 · 2521 阅读 · 0 评论 -
redis--主从复制
一、简介:在分布式系统中为了解决单点问题,通常会把数据复制多个副本部署到其他机器,满足故障恢复和负载均衡等需求。Redis也是如此,它为我们提 供了复制功能,实现了相同数据的多个Redis副本。复制功能是高可用Redis的基础二、Redis的复制拓扑结构1.一主一从结构一主一从结构是最简单的复制拓扑结构,用于主节点出现宕机时从节点提供故障转移支持2.一主多从结构(又称为星形拓扑结构)使得应用端可以利用多个从节点实现读写分离。对于读占比较大的场景,可以把读命令发送到从节点来..原创 2021-04-23 09:08:02 · 461 阅读 · 1 评论 -
redis--持久化
一、简介:Redis支持RDB和AOF两种持久化机制,持久化功能有效地避免因进程退出造成的数据丢失问题,当下次重启时利用之前持久化的文件即可实现数据恢复。理解掌握持久化机制对于Redis运维非常重要。二、RDB 1.概念:RDB持久化是把当前进程数据生成快照保存到硬盘的过程,触发RDB持久化过程分为手动触发和自动触发2.触发机制:2.1手动触发(1)save命令阻塞当前Redis服务器,直到RDB过程完成为止,对于内存 比较大的实例会造成长时间阻塞,线上环境不建议使用.原创 2021-04-19 09:15:04 · 171 阅读 · 0 评论 -
Redis--事务与Lua脚本
一、简介:Redis从2.6版本开始引入对Lua脚本的支持,通过在服务器中嵌入Lua环境,Redis客户端可以使用Lua脚本,直接在服务端原子的执行多个Redis命令。它是由C语言实现的,虽然简单小巧但是功能强大,所以许多应用都选用它作为脚本语言二、redis中的事务1.概述如果熟悉关系型数据库应该对事务比较了解,简单地说,事务表示一 组动作,要么全部执行,要么全部不执行,但是reids中的事务是没有原子性的只是简单的事务有异常会直接跳过并不支持回滚2.不支持回滚的原因(1).原创 2021-04-02 08:09:06 · 1156 阅读 · 0 评论 -
Redis--客户端输入、输出缓存区
一、输入缓冲区1,简介:Redis为每个客户端分配了输入缓冲区,它的作用是将客户端发送的命 令临时保存,同时Redis从会输入缓冲区拉取命令并执行,输入缓冲区为客户端发送命令到Redis执行命令提供了缓冲功能,避免出现因为数据和命令的处理速度慢于发送速度而导致的数据丢失和性能问题。但缓冲区的内存空间有限,如果发生溢出,就会丢失数据。2、应用场景Redis缓冲区有两个应用场景:(1)在客户端和服务器端之间进行通信时,用来暂存客户端发送的命令数据,或者是服务器端返回给客户端的数据结.原创 2021-03-30 09:11:51 · 903 阅读 · 2 评论 -
Redis--数据结构(一)基础数据结构极其内部编码简介
一、概述redis对外提供五种基本数据结构分别为string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合),另外在这五种基础上扩展了hyperloglogs(用来做基数统计的算法), bitmap(二进制数组),geospatial(GEO地理位置),piepeline(管道),stream(消息队列5.0支持),实际上每种基本数据结构都有两种以上的内部编码实现...原创 2021-03-27 11:10:55 · 324 阅读 · 0 评论 -
Redis--数据结构(二)六种底层数据结构详解
一、简介底层数据结构和编码的关系redis有八种内部编码却只有六种底层数据结构的实现,所以编码基于底层数据结构,比如执行命令:lpush cache:type"redis""memcache""tair""levelDB",链表的编码是linkedlist和ziplist,但是底层Redis首先创建"cache:type"键字符串,然后创建链表对象,链表对象内再包含四个字符串对象,排除 Redis内部用到的字符串对象之外至少创建5个字符串对象二、String字符串1.简介字符串对象是Re原创 2021-03-28 12:56:16 · 452 阅读 · 0 评论