Redis
文章平均质量分 78
Redis缓存相关文章
每天都要进步一点点
工作日常技术学习、积累、总结
展开
-
Redis中什么是Big Key(大key)问题?如何解决Big Key问题?
通俗易懂的讲,Big Key就是某个key对应的value很大,占用的redis空间很大,本质上是大value问题。key往往是程序可以自行设置的,value往往不受程序控制,因此可能导致value很大。redis中这些Big Key对应的value值很大,在序列化/反序列化过程中花费的时间很大,因此当我们操作Big Key时,通常比较耗时,这就可能导致redis发生阻塞,从而降低redis性能。用几个实际的例子对大Key的特征进行描述:● 一个String类型的Key,它的值为5MB(数据过大);● 一原创 2022-06-21 15:29:51 · 28884 阅读 · 4 评论 -
Redis中什么是热Key问题?如何解决热Key问题?
目录 一、什么是热Key?二、热Key产生的原因?三、热点Key的危害?四、如何识别热点Key?五、如何解决热Key问题?在Redis中,我们把访问频率高的Key,称为热Key。比如突然又几十万的请求去访问redis中某个特定的Key,那么这样会造成redis服务器短时间流量过于集中,很可能导致redis的服务器宕机。那么接下来对这个Key的请求,都会直接请求到我们的后端数据库中,数据库性能本来就不高,这样就可能直接压垮数据库,进而导致后端服务不可用。双十一秒杀商品,短时间内某个爆款商品可能被点击/购买上百原创 2022-06-16 10:15:00 · 10462 阅读 · 0 评论 -
如何解决缓存与数据库不一致?
目录一、概要二、场景一:先更新数据库,再更新缓存三、场景二:先更新缓存,再更新数据库四、场景三:先删除缓存,再更新数据库五、场景四:先更新数据库,再删除缓存六、场景五:数据库主从同步导致数据不一致七、总结一、概要缓存跟数据库不一致,指的是缓存中的数据跟数据库的数据出现了不一致,即其中一方存在脏数据的现象。需要注意的是,只有在对同一条数据并发读写的时候,才可能会出现这种问题。如果系统并发量很低,特别是读并发很低,那么它发生缓存跟数据库数据不一致的情况相对比较少,概率比较原创 2021-11-15 20:48:06 · 4803 阅读 · 0 评论 -
Redis分布式锁为什么要设置超时时间
欢迎使用Markdown编辑器Redis分布式锁借助于Redis服务来完成了,我们的应用程序只是Redis服务的客户端,一旦应用程序没有释放锁,Redis服务端就会一直持有这个锁的,这就会导致其他进程中的线程是获取不了锁,。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行原创 2021-05-01 11:01:56 · 2709 阅读 · 0 评论 -
Redis集群环境下分布式锁方案-RedLock算法
目录一、简介二、Redis集群环境下分布式锁有什么问题?三、RedLock 算法一、简介什么是分布式锁?分布式锁就是保证某个时刻,只能有一个进程访问共享资源。比如在分布式环境下,要保证定时调度不能重复执行、执行扣减库存等操作不能同时有两个进程在执行,这些都可以使用分布式锁来解决。一般分布式锁,通常要满足如下特性:1)、互斥性:同一时刻多个客户端对共享资源的访问存在互斥性; 2)、防死锁:对锁设置超时时间,防止客户端一直占用着锁,即防止死锁; 3)、可重入性:一个客户端上的原创 2021-04-30 09:55:18 · 3206 阅读 · 2 评论 -
Redis为什么这么快?
一、Redis为什么这么快?Redis采用的是基于内存的采用的是单进程单线程模型的 KV 数据库,由C语言编写,官方提供的数据是可以达到100000+的QPS(每秒内查询次数)。以下几点造就了Redis非常快的特点:单线程不用处理上下文的切换,cpu利用率会比多线程高;采用单线程避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗CPU。不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为出现死锁而导致的性能消耗。数据结构简单,操作节省时间;数据结构简单,对数据操作也原创 2020-11-18 09:41:03 · 294 阅读 · 0 评论 -
redis分布式锁学习总结
一、简介概念:分布式锁,指的是在分布式部署环境下,通过加锁来控制共享资源在多个客户端之间的互斥访问,即同一时刻只能有一个客户端对共享资源进行操作,保证数据一致性。 特点: 互斥性:同一时刻多个客户端对共享资源的访问存在互斥性; 防死锁:对锁设置超时时间,防止客户端一直占用着锁,即防止死锁; 可重入性:一个客户单上的同一个线程如果获取锁之后还可以再次获取这个锁(客户端封装,可以使用...原创 2019-12-22 15:59:05 · 511 阅读 · 0 评论 -
redis缓存穿透、缓存雪崩、缓存击穿详解
一、简介其实,redis在实际项目中应用在缓存占了绝大多数场景,缓存能够有效降低访问数据库的压力,避免频繁请求数据库,一定程度上提高了系统的响应速度。一般比如临时性的文件、微信access_token等等都比较适合放在redis缓存中。缓存工作流程图:大体步骤:【a】客户端发起一个请求;【b】首先我们先去redis缓存中查询是否存在命中的数据,如果redis缓存中存在数据,...原创 2019-12-17 10:28:53 · 404 阅读 · 0 评论 -
redis5.0.7集群搭建
一、简介前面介绍了redis主从复制和redis哨兵模式,它们能在一定程度上提高系统的稳定性,但是当数据量比较大的时候,单个主节点压力可能会过于太大,这个时候可以考虑将redis集群部署,本文将详细介绍redis集群搭建的详细过程。二、redis集群介绍Redis 集群是一个提供在多个Redis间节点间共享数据的程序集。Redis集群并不支持处理多个keys的命令,因为这需要在不同...原创 2019-12-15 11:03:51 · 919 阅读 · 0 评论 -
redis之哨兵模式
一、简介通过上篇文章主从复制的学习,相信小伙伴都成功搭建了主从复制的环境,但是我们在知道,假如master主节点发生宕机现象,那么从节点并不会接替主节点继续工作,而是在原地待命,其实这样不好,我们希望的是当主节点宕机之后,从节点可以选举产生出一个成为master主节点,然后继续工作。这就需要使用到哨兵模式sentinel,通过哨兵模式可以实现自动化的系统监控和故障恢复。哨兵作用:哨兵主要是...原创 2019-12-13 20:22:00 · 411 阅读 · 0 评论 -
redis之主从复制
一、简介概念:主从复制,即master-slave模式,指的是主机数据发生变化的时候根据配置的策略,自动将数据同步到从机上,master主机以写操作为主,slave从机以读操作为主。 主从复制作用: 可以实现读写分离,master写,slave读; 可以有效降低master的压力,可以将读操作分发到多个slave从节点上; 可以实现数据的备份; 配置方式: 从库配置:s...原创 2019-12-13 20:06:32 · 248 阅读 · 0 评论 -
redis之消息订阅发布
一、简介概念:redis消息订阅发布,指的是进程间的一种消息通信模式:发送者(publish)发送消息,订阅者(subscribe)订阅消息。通过subscribe命令可以让客户端订阅任意数量的频道,每当有新信息发送到被订阅的频道时,信息就会被发送给所有订阅指定频道的客户端。 订阅/发布消息图:发布/订阅原理: 每个 Redis 服务器进程都维持着一个表示服务器状态的 redis.h...原创 2019-12-13 10:38:04 · 407 阅读 · 0 评论 -
redis之事务
一、简介概念: redis事务,指的是可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其他命令插入,不许加塞。 作用: 一个队列中,一次性、顺序性、排他性地执行一系列命令。 常用操作命令: 命令 说明 multi 开启一个redis事务,标记事务的开始...原创 2019-12-11 21:54:55 · 238 阅读 · 0 评论 -
redis持久化之aof
一、简介aof,全称叫"append only file", aof是以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,redis重启的话根据日志文件的内容将写指令从头到尾执行一次以完成数据的恢复。AOF方式持久化默认保存的是appendonly.aof文件。 配置文件位置:# ...原创 2019-12-10 21:28:27 · 703 阅读 · 0 评论 -
redis持久化之rdb
一、简介redis持久化的方式主要有两种方式:一种是以快照的方式进行持久化,这种方式也叫作rdb方式(redis database); 另外一种方式是aof方式(append only file);通过redis的持久化,我们可以将数据保存在磁盘上,以便于在redis出现故障或者重启时恢复上次的数据。两种方式各有各的优点和缺点,当然也可以两者一起使用,但是redis会有限加载aof文件...原创 2019-12-10 21:07:42 · 406 阅读 · 0 评论 -
redis配置文件详解
一、简介redis的配置文件主要是在redis.conf中进行配置,下面我们将对常用的配置进行说明,小伙伴们在工作中根据需要自行更改相应的配置。二、常用配置说明【a】通用属性:比如进程文件名称、日志级别、日志文件、数据库等。#默认情况下,Redis不作为守护进程运行,这里设置redis在后台运行daemonize yes#redis进程文件存放位置(进程管道文件)pi...原创 2019-12-09 21:45:57 · 520 阅读 · 0 评论 -
redis数据类型之ZSet
一、简介ZSet,简称Sorted Set有序集合,和集合一样也是String类型元素的集合, 且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数Score。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 2^32 - ...原创 2019-12-08 20:12:06 · 509 阅读 · 0 评论 -
redis数据类型之Set
一、简介Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。集合中最大的成员数为 2^32- 1 (4294967295, 每个集合可存储40多亿个成员)。下面通过一张表格列出关于Set常用的操作命令:Set常用操作命令总结 命令 ...原创 2019-12-08 20:02:36 · 266 阅读 · 0 评论 -
redis数据类型之Hash
一、简介Hash是一个String类型的field和value的映射表,hash特别适合用于存储对象。Redis 中每个 hash 可以存储 2^32- 1 键值对(40多亿)。类似这种数据结构: key-value键值对模式不变,但是value里面又是field-value对应模式。{ hash1 : {name: zhangsan,age : 18, sex: male...原创 2019-12-08 19:52:10 · 303 阅读 · 0 评论 -
redis数据类型之List
一、简介Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)一个列表最多可以包含 2^32- 1 个元素 (4294967295, 每个列表超过40亿个元素)。redis中List数据类型常用命令 命令 使用说明 lpush 向列表头部添加一个或多个元素 ...原创 2019-12-08 10:01:42 · 711 阅读 · 0 评论 -
redis数据类型之String
一、简介Redis中最基本的数据类型,它是二进制安全的,可以包含任意数据类型,如图片等。Redis中String类型的数据上限的512M。下面是常用的String操作命令:String数据类型常用命令说明 命令 说明 set 设置字符串的值 get 获取字符串的值,如果 ke...原创 2019-12-08 09:08:55 · 444 阅读 · 0 评论 -
redis简介与常用数据类型介绍
一、redis简介概念:redis,全称是remote dictionary server(远程字典服务器), 免费开源,使用c语言开发。redis是一个高性能的key-value键值对分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库(非关系型数据库)。 特点 a. redis支持持久化(rdb和aof两种方式),可以将内存中的数据持久化到磁盘,当redis重启时可以恢复...原创 2019-12-07 15:20:23 · 525 阅读 · 0 评论 -
Linux下安装redis5.0.7
一、简介本文将总结如何在Linux下安装redis5.0.7内存数据库,后面也会总结一些redis方面的知识。二、安装步骤【a】首先去官网下载redis-5.0.7.tar.gz文件,下载地址为:https://redis.io/download【b】将下载好的redis压缩包使用xftp上传到服务器中mkdir rediscd redis/【c】解...原创 2019-12-06 21:02:28 · 2608 阅读 · 0 评论