![](https://img-blog.csdnimg.cn/20210812220818111.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
redis
文章平均质量分 55
redis学习笔记
妙先森
这个作者很懒,什么都没留下…
展开
-
reids学习笔记汇总
笔记根据尚硅谷redis6视频教程和菜鸟教程学习过程中自己整理手敲的笔记、按顺序看完可以入门绝对没问题。如果对你有帮助,来个赞。bilibili尚硅谷视频教程:【尚硅谷】2021 最新 Redis 6 入门到精通 超详细 教程菜鸟教程:redis菜鸟教程redis基础阿里服务器linux安装和启动redis 6redis的键redis数据类型-字符串redis数据类型-列表(List)redis数据类型-set集合redis数据结构-hashredis数据类型 - Zset(有序集合s原创 2021-06-20 00:55:02 · 92 阅读 · 0 评论 -
Jedis对redis分布式锁的操作(设置过期时间,UUID,LUA脚本)
编写代码@GetMapping("testLock")public void testLock(){ //1获取锁,setne Boolean lock = redisTemplate.opsForValue().setIfAbsent("lock", "111"); //2获取锁成功、查询num的值 if(lock){ Object value = redisTemplate.opsForValue().get("num"); //2.原创 2021-06-19 19:20:10 · 2649 阅读 · 2 评论 -
redis分布式锁
尚硅谷bilibili官方视频教程: bilibili.com/video/BV1Rv41177Af?p=43问题描述随着业务发展的需要,原单体单机部署的系统被演化成分布式集群系统后,由于分布式系统多线程、多进程并且分布在不同机器上,这将使原单机部署情况下的并发控制锁策略失效,单纯的Java API并不能提供分布式锁的能力。为了解决这个问题就需要一种跨JVM的互斥机制来控制共享资源的访问,这就是分布式锁要解决的问题!分布式锁主流的实现方案:基于数据库实现分布式锁基于缓存(Redis等)基于Zo原创 2021-06-19 18:21:37 · 128 阅读 · 0 评论 -
redis面试常问--缓存雪崩
尚硅谷官方bilibili视频教程:https://www.bilibili.com/video/BV1Rv41177Af?p=43一、什么是缓存雪崩概念:key对应的数据存在,但在redis中过期,此时若有大量并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮。缓存雪崩与缓存击穿的区别在于这里针对很多key缓存,前者则是某一个key.正常访问:缓存失效瞬间二、解决方案缓存失效时的雪崩效应对底层系统的冲击非常可怕!解原创 2021-06-19 15:16:07 · 99 阅读 · 0 评论 -
redis面试常问--缓存击穿
尚硅谷官方bilibili视频教程:https://www.bilibili.com/video/BV1Rv41177Af?p=41什么是缓存击穿和缓存穿透的是在缓存击穿中key对应的数据存在,但在redis中过期,此时若有大量并发请求过来访问这个过了期的key,这些请求发现缓存过期一般都会从后端数据库中加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端数据库压垮。解决方案key可能会在某些时间点被超高并发地访问,是一种非常“热点”的数据。这个时候,需要考虑一个问题:缓存被“击穿”的问题。原创 2021-06-19 14:11:45 · 227 阅读 · 0 评论 -
redis面试常问--缓存穿透
尚硅谷官方bilibili视频教程:https://www.bilibili.com/video/BV1Rv41177Af?p=40一、什么是缓存穿透我们在访问网站时、在有redis服务的情况下通常是一些常用数据会缓存在redis中、当从redis中获取不到数据时会访问数据库查找数据然后再将数据缓存到reids中,下次再访问时会直接从redis中拿数据。这是常规的情况。当访问的数据既不在redis中,也在数据库中查找不到,那么这时候会每次去访问数据库,假设当有成千上百万甚至过亿的请求都是这种请求原创 2021-06-19 13:46:02 · 170 阅读 · 0 评论 -
Jedis操作reids集群
public class JedisClusterTest { public static void main(String[] args) { Set<HostAndPort>set =new HashSet<HostAndPort>(); set.add(new HostAndPort("你的ip地址",端口号)); JedisCluster jedisCluster=new JedisCluster(set); jedisClust原创 2021-06-19 00:27:38 · 68 阅读 · 0 评论 -
redis中集群的故障恢复
想三个问题如果主节点下线?从节点能否自动升为主节点?主节点恢复后,主从关系会如何?主节点回来变成从机。如果所有某一段插槽的主从节点都宕掉,redis服务是否还能继续?问题一和二当主机宕机时,他的从机晋升为主机提供服务。当主机再次重启时,会变成从机的从机。比如:在一个集群的节点中,有A、B两台服务器组成。A为主机,B为从机。当A机发生意外宕机,B机会替代A机成为这个节点的主机,继续提供服务,当A机再次重启时会变成B的从机。问题三如果某一段插槽的主从都挂掉,而在配置文件中clust原创 2021-06-19 00:10:50 · 1226 阅读 · 0 评论 -
redis中的插槽
redis插槽是什么Redis Cluster中有一个16384长度的槽的概念,他们的编号为0、1、2、3……16382、16383。这个槽是一个虚拟的槽,并不是真正存在的。正常工作的时候,Redis Cluster中的每个Master节点都会负责一部分的槽,当有某个key被映射到某个Master负责的槽,那么这个Master负责为这个key提供服务,至于哪个Master节点负责哪个槽,这是可以由用户指定的,也可以在初始化的时候自动生成(redis-trib.rb脚本)。集群中的每个节点负责处理一部分原创 2021-06-18 23:22:55 · 3050 阅读 · 0 评论 -
redis集群
尚硅谷bilibili视频教程:https://www.bilibili.com/video/BV1Rv41177Af?p=36参考博文:https://www.cnblogs.com/vieta/p/11192137.html一、集群的概念所谓的集群,就是通过添加服务器的数量,提供相同的服务,从而让服务器达到一个稳定、高效的状态。1.使用集群的必要性问题:我们已经部署好了redis,并且能启动一个redis,实现数据的读写,为什么还要学习redis集群?答:(1)单个redis存在不稳定性原创 2021-06-18 17:48:26 · 108 阅读 · 0 评论 -
redis中的哨兵模式
尚硅谷官方bilibili教学视频:https://www.bilibili.com/video/BV1Rv41177Af?p=35&spm_id_from=pageDriver一、什么是哨兵模式能够监控主机是否故障了,如果故障了根据投票数自动将从库转化为主库。二、怎么使用哨兵模式1.配置哨兵自定义目录下创建哨兵的配置文件sentinel.conf,文件名不能错。在配置文件中填写以下内容:sentinel monitor mymaster 127.0.0.1 6379 1其中mym原创 2021-06-13 14:26:35 · 234 阅读 · 0 评论 -
redis主从复制
尚硅谷官方bilibili教学视频:https://www.bilibili.com/video/BV1Rv41177Af?p=31&spm_id_from=pageDriver一、主从复制概述主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。原创 2021-06-13 00:08:40 · 155 阅读 · 0 评论 -
redis持久化之AOF
尚硅谷bilibili视频教程:https://www.bilibili.com/video/BV1Rv41177Af?p=30AOF是什么以日志的形式来记录每个写操作(增量保存),将Redis执行过的所有写指令记录下来(读操作不记录), 只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis 重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作AOF持久化流程客户端的请求写命令会被append追加到AOF缓冲区内;AOF缓冲区根据A原创 2021-06-06 19:55:14 · 174 阅读 · 0 评论 -
redis持久化之RDB
尚硅谷bilibili视频教程:https://www.bilibili.com/video/BV1Rv41177Af?p=28&spm_id_from=pageDriverRDB是什么RDB是redis一种持久化技术、它是在指定的时间间隔内将内存中的数据集快照写入磁盘,恢复时将磁盘中的快照文件直接读到redis内存里。dump.rdb文件这个文件就是redis使用rdb技术持久化后的文件,在redis.conf配置文件可以更改文件名,默认是dump.rdb。配置文件中配置dump.rd原创 2021-06-06 16:36:00 · 190 阅读 · 0 评论 -
redis事务冲突问题 - 乐观锁和悲观锁
事务冲突很容易就想到是并发带来的问题。例子马上618了、假如一个场景:有很多人有你的账户并且该账户只有10000,同时去参加618抢购,同时发送了三个请求一个请求想给金额减8000一个请求想给金额减5000一个请求想给金额减1000这三个请求同时发出,假如都执行成功了,那么此时账户的余额就变成了10000-8000-5000-1000 = -4000,此时账户余额变成负的了,显然这在实际生活中是很不合理的。这时我们能想到的就是加锁了。悲观锁和乐观锁1. 悲观锁顾名思义,就是很悲观的那原创 2021-06-06 00:30:29 · 609 阅读 · 1 评论 -
redis中的事务
菜鸟教程:https://www.runoob.com/redis/redis-transactions.html尚硅谷视频教程:https://www.bilibili.com/video/BV1Rv41177Af?p=21redis事务Redis 事务可以一次执行多个命令, 并且带有以下三个特征:没有隔离级别的概念:批量操作在发送 EXEC 命令前被放入队列缓存。不保证原子性:收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。单独的隔离操作:在事务执行过程原创 2021-06-05 23:42:01 · 93 阅读 · 0 评论 -
springboot整合redis
配置在pom.xml文件中引入redis相关依赖 <!-- redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>原创 2021-06-05 16:23:47 · 49 阅读 · 0 评论 -
redis练习-模拟手机验证码的发送
需求输入手机号,点击发送后随机生成6位数字码,2分钟有效输入验证码,点击验证,返回成功或失败每个手机号每天只能输入3次实现思路在redis中设置两个字符串类型的数据:手机号为键,验证码为值,并设置过期时间为2分钟。手机号+当前年月日为键,次数为值。实现每日三次次数验证时取出redis中的验证码与自己输入的验证码对比。实现代码发送验证码:/** * 发送验证码 * @param phone */ public static void se原创 2021-06-05 14:38:07 · 257 阅读 · 0 评论 -
Java使用Redis(jedis)
菜鸟教程:https://www.runoob.com/redis/redis-java.html安装普通工程要导入下载好了的jedis的jar包maven工程导入jedis依赖<dependencies> <!-- Jedis 所需要的jar包 --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis原创 2021-06-05 00:21:43 · 592 阅读 · 1 评论 -
redis新数据类型-Geospatial
尚硅谷bilibili视频讲解:https://www.bilibili.com/video/BV1Rv41177Af?p=17简介Redis 3.2 中增加了对GEO类型的支持。GEO,Geographic,地理信息的缩写。该类型,就是元素的2维坐标,在地图上就是经纬度。redis基于该类型,提供了经纬度设置,查询,范围查询,距离查询,经纬度Hash等常见操作。命令# 添加地理位置(经度,纬度,名称)geoadd <key> <longitude> <latit原创 2021-06-04 19:23:44 · 146 阅读 · 0 评论 -
redis新数据类型-HyperLogLog
菜鸟教程:https://www.runoob.com/redis/redis-hyperloglog.html简介Redis 在 2.8.9 版本添加了 HyperLogLog 结构。Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算原创 2021-06-04 18:58:34 · 124 阅读 · 0 评论 -
redis新数据类型-bitmaps
尚硅谷bilibili视频讲解:https://www.bilibili.com/video/BV1Rv41177Af?p=15简介现代计算机用二进制(位) 作为信息的基础单位, 1个字节等于8位, 例如“abc”字符串是由3个字节组成, 但实际在计算机存储时将其用二进制表示, “abc”分别对应的ASCII码分别是97、 98、 99, 对应的二进制分别是01100001、 01100010和01100011,如下图合理地使用操作位能够有效地提高内存使用率和开发效率。(1)Bitmaps本身不原创 2021-06-04 18:39:09 · 167 阅读 · 1 评论 -
redis的发布和订阅
菜鸟教程:https://www.runoob.com/redis/redis-pub-sub.html什么是发布和订阅Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。Redis 客户端可以订阅任意数量的频道。Redis的发布和订阅客户端可以订阅频道如下图当给这个频道发布消息后,消息就会发送给订阅的客户端发布订阅命令行实现打开一个客户端订阅channel1SUBSCRIBE channel1打开另一个客原创 2021-06-04 16:11:30 · 67 阅读 · 0 评论 -
redis数据类型 - Zset(有序集合sorted set)
菜鸟教程:https://www.runoob.com/redis/redis-sorted-sets.html简介Redis有序集合zset与普通集合set非常相似,是一个没有重复元素的字符串集合。不同之处是有序集合的每个成员都关联了一个评分(score),这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分可以是重复了 。因为元素是有序的, 所以你也可以很快的根据评分(score)或者次序(position)来获取一个范围的元素。访问有序集合的中原创 2021-06-04 15:03:30 · 238 阅读 · 0 评论 -
redis数据结构-hash
菜鸟教程:https://www.runoob.com/redis/redis-hashes.html简介Redis hash 是一个键值对集合。Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。类似Java里面的Map<String,Object>常用命令# 给<key>集合中的 <field>键赋值<value>hset <key> <field> <va原创 2021-06-04 11:09:15 · 581 阅读 · 0 评论 -
redis数据类型-set集合
菜鸟教程:https://www.runoob.com/redis/redis-sets.html简介Redis set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的。Redis的Set是string类型的无序集合。它底层其实是一个value为null的hash表,所以添加,删除,查找的复杂度都是O(1)原创 2021-06-03 23:43:10 · 113 阅读 · 0 评论 -
redis数据类型-列表(List)
菜鸟教程:https://www.runoob.com/redis/redis-lists.html简介Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。它的底层采用的是双向链表所以对两端的操作性能很高,通过索引下标的操作节点性能会很差。常用命令# 从左边/右边插入一个或多个值。lpush/rpush <key> <value1> <value2> <value3> ....# 从原创 2021-06-03 23:09:14 · 235 阅读 · 2 评论 -
redis数据类型-字符串
菜鸟教程:https://www.runoob.com/redis/redis-strings.html简介String是Redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。String类型是二进制安全的。意味着Redis的string可以包含任何数据。比如jpg图片或者序列化的对象。String类型是Redis最基本的数据类型,一个Redis中字符串value最多可以是512M常用命令# 添加键值对set key value# 获取对应原创 2021-06-03 19:51:44 · 142 阅读 · 0 评论 -
redis的键
redis菜鸟教程:https://www.runoob.com/redis/redis-keys.html常用命令# 查看当前库所有keykeys * # 判断某个key是否存在exists key# 查看你的key是什么类型type key# 删除指定的key数据del key# 根据value选择非阻塞删除unlink key# 以秒为单位给定的key设置过期时间expire key 10# 查看还有多少秒过期,-1表示永不过期,-2表示已过期ttl key..原创 2021-06-03 18:59:56 · 166 阅读 · 0 评论 -
阿里云 centos 7.6 安装和启动redis 6
以下操作是在自己的阿里云服务器center os 7下完成安装下载地址:http://redis.io/download,下载最新稳定版本将下载好的文件放到存放安装包的目录opt下:安装C语言环境yum install gcc然后进行解压编译安装# 解压文件tar -xzvf redis-6.2.4.tar.gz # 进入redis-6.2.4 文件夹中编译make# 安装make install无报错说明安装成功。启动安装成功后会在usr下生成一个local目录原创 2021-06-02 22:51:59 · 189 阅读 · 0 评论