![](https://img-blog.csdnimg.cn/23c4069d29aa429d9099565a6a5560ab.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Redis
文章平均质量分 93
Redis
汪了个王
学习知识,目光坚毅
展开
-
缓存穿透利器之「布隆过滤器」
BitMap现代计算机用二进制(bit,位)作为信息的基础单位,1 个字节等于 8 位,例如big字符串是由 3 个字节组成,但实际在计算机存储时将其用二进制表示,big分别对应的 ASCII 码分别是 98、105、103,对应的二进制分别是 01100010、01101001 和 01100111。许多开发语言都提供了操作位的功能,合理地使用位能够有效地提高内存使用率和开发效率。Bit-map 的基本思想就是用一个 bit 位来标记某个元素对应的 value,而 key 即是该元素。由于采用了 b原创 2022-03-16 14:32:26 · 1989 阅读 · 0 评论 -
如何用 Redis 实现一个分布式锁
场景模拟一般电子商务网站都会遇到如团购、秒杀、特价之类的活动,而这样的活动有一个共同的特点就是访问量激增、上千甚至上万人抢购一个商品。然而,作为活动商品,库存肯定是很有限的,如何控制库存不让出现超买,以防止造成不必要的损失是众多电子商务网站程序员头疼的问题,这同时也是最基本的问题。在秒杀系统设计中,超卖是一个经典、常见的问题,任何商品都会有数量上限,如何避免成功下订单买到商品的人数不超过商品数量的上限,这是每个抢购活动都要面临的难点。针对大量的并发请求,我们可以通过 Redis 来抗,也就是说对于库存原创 2022-03-10 10:06:42 · 2624 阅读 · 6 评论 -
Redis 做缓存常见的几个问题总结
1. 数据一致性我们知道,Redis 主要是用来做缓存使用,只要使用到缓存,无论是本地内存做缓存还是使用 Redis 做缓存,那么就会存在数据同步的问题。一般情况下,我们都是先读缓存数据,缓存数据有,则立即返回结果;如果没有数据,则从数据库读数据,并且把读到的数据同步到缓存里,提供下次读请求返回数据。这样能有效减轻数据库压力,但是如果修改删除数据库中的数据,而内存是无法感知到数据在数据库的修改。这样就会造成数据库中的数据与缓存中数据不一致的问题,那该如何解决呢?通常的方案有以下几种:先更新缓.原创 2022-01-13 23:08:31 · 954 阅读 · 0 评论 -
了解 Redis 缓存穿透、缓存击穿、缓存雪崩
1. 缓存穿透是指查询一个根本不存在的数据,缓存层和存储层都不会命中,如果从存储层查不到数据则不写入缓存层。缓存穿透将导致不存在的数据每次请求都要到存储层去查询,失去了缓存保护后端存储的意义。缓存穿透问题可能会使后端存储负载加大,由于很多后端存储不具备高并发性,甚至可能造成后端存储宕掉。通常可以在程序中分别统计总调用数、缓存层命中数、存储层命中数,如果发现大量存储层空命中,可能就是出现了缓存穿透问题。1.1 原因分析造成缓存穿透的基本原因有两个:1、自身业务代码或者数据出现问题比如,我们数据库原创 2022-01-12 11:32:35 · 614 阅读 · 0 评论 -
如何保障 MySQL 和 Redis 之间的数据一致性
1. 数据一致性我们知道,Redis 主要是用来做缓存使用,只要使用到缓存,无论是本地内存做缓存还是使用 Redis 做缓存,那么就会存在数据同步的问题。一般情况下,我们都是先读缓存数据,缓存数据有,则立即返回结果;如果没有数据,则从数据库读数据,并且把读到的数据同步到缓存里,提供下次读请求返回数据。这样能有效减轻数据库压力,但是如果修改删除数据库中的数据,而内存是无法感知到数据在数据库的修改。这样就会造成数据库中的数据与缓存中数据不一致的问题,那该如何解决呢?通常的方案有以下几种:先更新缓存原创 2022-01-11 10:14:33 · 666 阅读 · 3 评论 -
如何保证 Redis 高可用和高并发(主从+哨兵+集群)
1. 概述Redis 作为一种高性能的内存数据库,普遍用于目前主流的分布式架构系统中。为了提高系统的容错率,使用多实例的 Redis 也是必不可免的,但同样复杂度也相比单实例高出很多。那么如何保证 Redis 的高并发和高可用?Redis 主要有三种集群方式用来保证高并发和高可用:主从复制,哨兵模式和集群。2. 主从复制在分布式系统中为了解决单点问题,通常会把数据复制多个副本部署到其他机器,满足故障恢复和负载均衡等需求。Redis 也是如此,它为我们提供了复制功能,实现了相同数据的多个 Redis原创 2022-01-03 10:53:04 · 5101 阅读 · 11 评论 -
一文理解 Redis 持久化:RDB和AOF
1. 概述我们知道 Redis 是一个内存数据库,也就意味着如果我们的电脑异常重启或者服务器宕机的情况下,存储在 Redis 中的数据会丢失。Redis 虽然是个内存数据库,但是 Redis 支持 RDB 和 AOF 两种持久化机制,将数据写往磁盘,可以有效地避免因进程退出造成的数据丢失问题,当下次重启时利用之前持久化的文件即可实现数据恢复。2. RDBRDB(Redis DataBase) 持久化是把当前进程数据生成快照保存到硬盘的过程。什么是快照?你可以理解成把当前时刻的数据拍成一张照片保存下来原创 2021-12-29 21:23:04 · 1345 阅读 · 5 评论 -
Redis高级特性【事务】
什么是事务对事务的说法已经说得不能再多了,简单来说就是示一组动作,要么全部执行,要么全部不执行。如在社交网站上用户 A 关注了用户 B,那么需要在用户 A 的关注表中加入用户 B,并且在用户 B 的粉丝表中添加用户 A,这两个行为要么全部执行,要么全部不执行,否则会出现数据不一致的情况。Redis 中的事务Redis 事务的本质是一组命令的集合。事务支持一次执行多个命令,一个事务中所有命令都会被序列化。在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不会插入到事务执行命令序原创 2021-12-27 23:25:08 · 678 阅读 · 0 评论 -
Redis高级特性【Pipeline】
圣诞节怎么啦,就卷原创 2021-12-25 02:29:31 · 925 阅读 · 1 评论 -
Redis高级特性【慢查询】
什么是慢查询许多存储系统(例如 MySQL)提供慢查询日志帮助开发和运维人员定位系统存在的慢操作。所谓慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阀值,就将这条命令的相关信息(例如:发生时间,耗时,命令的详细信息)记录下来,Redis 也提供了类似的功能。Redis 客户端执行一条命令分为如下 4 个部分:需要注意的是,慢查询只统计步骤 3 的时间,所以没有慢查询并不代表客户端没有超时问题。慢查询配置对于任何慢查询功能,需要明确两件事:多慢算慢,也就是预设阀值怎么设置?慢原创 2021-12-23 23:25:14 · 606 阅读 · 0 评论 -
Redis常用数据结构及应用场景
1. 概述Redis 一个开源的基于键值对(Key-Value)NoSQL 数据库。使用 ANSIC 语言编写、支持网络、基于内存但支持持久化。性能优秀,并提供多种语言的 API。我们要首先理解一点,我们把 Redis 称为 KV 数据库,键值对数据库,那就可以把 Redis 内部的存储视为存在着一个巨大的 Map,对 Map 的操作无非就是get 和 put,然后通过 key 操作这个 key 所对应的 value,而这个 value 的类型可以多种多样,也就是 Redis 为我们提供的那些数据结构,原创 2021-12-22 09:43:23 · 968 阅读 · 0 评论