![](https://img-blog.csdnimg.cn/4c426e65b6ae4b0e9f15701956a6e7fc.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Redis
文章平均质量分 78
讲解redis相关知识,方便用时查找
想养一只萨摩耶~
请在合适的地方掉头并重新规划路线
展开
-
如何保证数据库和redis的双写一致性
1 Mysql单点情况对于缓存和数据库一致性的问题,有一个很经典的解决方案就是Cache Aside Pattern1 命中:程序先从缓存中读取数据,如果命中,则直接返回2 失效:程序先从缓存中读取数据,如果没有命中,则从数据库中读取,成功之后放到缓存3 更新:程序先更新数据库,在删除缓存但是对于更新的这个操作,有很多种情况,哪一种情况更合适呢?我们以此来分析一下:1 先更新缓存,再更新数据库2 先更新数据库,再更新缓存3 先删除缓存,再更新数据库4 先更新数据库,再原创 2022-03-31 14:30:15 · 2871 阅读 · 5 评论 -
布隆过滤器
1 概述缓存穿透:去缓存层中没有命中数据,进而去mysql中查询数据只要用了redis,就不能避免缓存穿透。但是我们可以避免高频的缓存穿透。举例:有人恶意攻击一个网站,拿一个不存在的id去访问,此时redis中肯定没有这条数据,就会去请数据库,而数据库中同样的也不可能有。假使他的访问频率比较高,那么就会对数据库造成很大的压力。解决方案:1)缓存空数据,当从redis中访问不到,再去数据库中也访问不到时,就在redis中存取一个null值,这样每回他再次访问的时候就直接将null返回了。原创 2022-03-09 11:20:24 · 2676 阅读 · 0 评论 -
Linux环境安装redis
步骤一:创建一个redis的安装目录[root@VM-16-7-centos ~]# mkdir -p /usr/local/src/redis步骤二:查看安装程序(若之前安装过redis,下次安装之前一定要删除干净)[root@VM-16-7-centos ~]# rpm -qa | grep -i redis步骤三:命令下载redis包[root@VM-16-7-centos ~]# wget http://download.redis.io/releases/redis-原创 2022-03-08 22:29:18 · 12485 阅读 · 0 评论 -
Redis的发布订阅简单介绍
1 简单介绍Redis发布订阅是一种消息通信模式:发送者发送消息,订阅者接收消息2 发布订阅命令行实现步骤一:打开一个客户端订阅一个channellSUBSCRIBE channel1步骤二:打开另外一个客户端,给channell发布消息hellopublish channel1 hello步骤三:打开第一个客户端查看发送的消息当客户端订阅了channel1中的信息,channel1中发布了信息,那么在客户端就会收到该信息...原创 2022-01-28 16:04:41 · 486 阅读 · 0 评论 -
Redis中Jedis操作
1 前言之前我们使用的redis命令都是通过命令行的形式实现的,那么如何使用Java来操作redis呢?联想到之前可以通过jdbc来操作数据库,同理也可以通过jedis来操作redis。2 相关操作Jedis相关依赖:<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.3原创 2022-02-02 11:23:17 · 861 阅读 · 0 评论 -
Redis新数据类型(1)-Bitmaps
目录1 前言2 操作命令3 Bitmap和Set对比1 前言Redis提供了Bitmaps这个“数据类型”,可以实现对应的位操作:1)Bitmaps本身不是一种数据类型,实际上它就是字符串(key-value),但是它可以对字符串进行位操作2)Bitmaps单独提供了一套命令,所以在redis命令中使用Bitmaps和使用字符串的方法不太相同。可以将Bitmaps想向成一个以位为单位的数组,数组的每个单位只能存储0和1,数组的下标在Bitmaps中叫作偏移量2 操作命.原创 2022-01-30 20:32:17 · 686 阅读 · 0 评论 -
Redis新数据类型(2)-HyperLogLog
1 前言在平时开发中我们经常会用到对某个同样的数据进行去重,在mysql中,使用distinct count计算不重复个数,在redis中,使用其提供的hash,set,bitmaps等数据结构来处理。但是当数据量较大时,导致其占用的空间越来越大,对于非常大的数据并不适用,所以可以通过降低一定的精度来平衡存储空间,这就出现了Redis的HyperLogLog。在redis里面,每个HyperLogLog只需要花费12kb的内存,就可以计算接近2^64个不同元素的基数。这和计算基数时,元素越多耗费原创 2022-01-31 17:16:10 · 691 阅读 · 0 评论 -
Redis中事务
目录1 概述2 事务相关操作2.1Multi、Exec、discard2.2 事务的错误处理3 如何解决事务冲突1 概述Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化,按顺序的执行。事务在执行的过程中,不会被其他客户端发送来的命令所打断。Redis事务中的主要作用是串联多个命令防止别的命令插队2 事务相关操作2.1Multi、Exec、discard从输入Multi开始,就相当于开启了事务,...原创 2022-02-03 11:21:09 · 771 阅读 · 0 评论 -
Redis新数据类型(3)-Geospatial
1 前言Redis3.2中增加了对GEO类型的支持。GEO,Geospatial,地理信息的缩写。该类型,就是元素的二维坐标,在地图上是经纬度。redis基于该类型,提供经纬度设置,查询,范围查询。距离查询,经纬度hash等常见操作。2 操作命令geoadd <key><longitude><latiude><member>两极无法直接添加,一般会下载城市数据,直接通过Java程序一次性导入有效的精度从-180度到1...原创 2022-01-31 17:43:45 · 490 阅读 · 0 评论 -
SpringBoot整合redis
1 前言在平时开发中,redis肯定是我们必不可少的一个工具,那今天就将springBoot与redis整合起来。准备一:创建一个springBoot工程准备二:redis相关依赖准备三:application.properties配置redis配置准备四:添加redis配置类准备五:测试项目工程结构如图:2 步骤实施步骤一:创建一个springBoot工程springBoot工程自己创建,记得选择web环境,方便后续访问准备二:redis相关依赖.原创 2022-02-02 16:37:13 · 5052 阅读 · 0 评论 -
Redis缓存/穿透/击穿/雪崩
目录1 缓存穿透1.1 问题描述1.2产生原因1.3 解决方案2 缓存击穿2.1 问题描述2.2 解决方案3 缓存雪崩3.1 问题描述3.2 解决方案:1 缓存穿透1.1 问题描述key对应的数据在数据源中并不存在,每次针对此key的请求从缓存获取不到,请求都会压到数据库,从而导致压垮数据库。比如用一个不存在的用户id获取用户信息,不论缓存还是数据库都没有,若黑客利用此漏洞攻击可能压垮数据库1.2产生原因1)redis查询不...原创 2022-02-04 21:30:57 · 1092 阅读 · 0 评论 -
Redis持久化-RDB
目录1 官网介绍2 什么是RDB3 Fork4 dump.rdb 文件4 如何触发RDB快照5 RDB的优缺点1 官网介绍在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照直接读到内存里2 什么是RDBRedis会单独创建一个(fork)子进程来进行持久化,会先将数据写到一个临时文件中,待持久化过程都结束了,在用这个临时文件替换上次持久化的文件。整个过程中,主进程是不进行任何IO...原创 2022-02-03 17:30:45 · 959 阅读 · 0 评论 -
Redis持久化-AOF
目录1 什么是AOP2appendonly.aof文件3 Rewrite3.1 什么是rewrite3.2 重写原理 3.3 触发机制4 AOF的优缺点5 总结5.1 rdb和aof比较5.2 同时开启两种持久化方式1 什么是AOP以日志的形式记录每个写操作,将redis执行过的所有写指令记录下来(读操作不记录),只许追加文件,但不许改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就是根据日志文件的内容将写指令从前到后执...原创 2022-02-03 21:53:06 · 675 阅读 · 0 评论 -
SpringBoot 缓存之 @Cacheable介绍
目录1 概述2@Cacheable注解使用详细介绍 2.1 @Cacheable注解使用2.2Cacheable注解的属性1 概述 Spring高版本引入了cache的注解技术。该技术是一种规范。Redis的cache技术,底层使用的是Spring Data Redis。cache技术的使用需要掌握的有@EnableCaching、@Cacheable、@CacheEvict、@Caching、@CacheConfig注解的使用,这...原创 2022-02-05 17:52:13 · 14930 阅读 · 2 评论 -
Redis基本数据类型(5)-----Zset
目录1 简单介绍2 常用命令3. 数据结构1 简单介绍Redis有序集合zset与普通集合set非常相似,是一个没有重复元素的字符串集合。不同之处是有序集合的每个成员变量都关联了一个评分(score),这个评分被用来按照从最高分的方式排序集合中的成员。集合中的成员是唯一的,但是评分是可以重复的。因为元素是有序的,所以可以很快的根据评分或者次序来获得一个范围内的元素2 常用命令zadd<key><score1><value1><sco原创 2022-01-22 18:19:15 · 1156 阅读 · 1 评论 -
Redis常用数据类型(1)-----String字符串
1 Redis字符串String是Redis最基本的数据类型,一个key对应一个value。String类型是二进制安全的,说明Redis的string可以包含任何数据,比如jpg图片或者序列化的对象String类型是Redis最基本的数据类型,一个Redis中字符串value最多可以是512M2 常用命令set <key><value> 添加键值对当key重复时,value值会覆盖append<key><value&g原创 2022-01-18 21:45:42 · 1074 阅读 · 0 评论 -
Redis常用数据类型(3)-----Set集合
1 简单介绍原创 2022-01-20 21:31:16 · 216 阅读 · 0 评论 -
Redis配置文件
1 Redis配置文件配置大小单位:定义了一些基本的度量单位,只支持bytes,不支持bit,大小写不敏感## 1k => 1000 bytes# 1kb => 1024 bytes# 1m => 1000000 bytes# 1mb => 1024*1024 bytes# 1g => 1000000000 bytes# 1gb => 1024*1024*1024 bytes## units are case insensitiv原创 2022-01-25 20:12:45 · 787 阅读 · 0 评论 -
Redis常用数据类型(2)-----列表(List)
目录1 简单介绍2 常用命令3 数据结构1 简单介绍Redis列表是简单的字符串列表,按照插入顺序排序,你可以添加一个元素到列表的头部(左边)或者尾部(右边)它的底层是个双向列表,对于两端的操作性很高,通过索引下标操作中间的节点性能会较差。2 常用命令lpush/rpush <key> <value1><value2><value3>...从左边或右边插入一个或多个值从左边放时,下一个放入的值会将上一个放...原创 2022-01-19 22:17:35 · 100 阅读 · 0 评论 -
Redis常用数据类型(4)-----hash
1 简单介绍Redis hash是一个键值对集合Redis hash 是一个string类型的field和value的映射表,hash特别适合存储对象,类似于Java里面的Map<String,Object>如果我们想将一个对象存进redis中,有好几种方式:第一种:user:{id=1,name=zhangsan,age=20}如果用这种方式进行存储,想要修改值时需要将整个对象全部拿出来,再取出相应的值进行修改,再转为json串,最后放进redis中,及其不方便。原创 2022-01-22 14:17:17 · 862 阅读 · 0 评论