- 博客(211)
- 收藏
- 关注
原创 【Redis】主从复制
从节点与主节点的复制连接是通过一个特殊标识的客户端来完成,因此需要配置从节点的masterauth参数与主节点密码保持一致,这样从节点才可以连接到主节点并发起复制流程。由于复制只能从主节点到从节点,对于从节点的任何修改主节点都无法感知.修改从节点会造成主从数据不一致。由于从节点的数据都是时刻和主节点保持一致的。如果挂掉了某个从节点,没啥影响,此时继续从主节点或者其他从节点读取数据,得到的效果完全相同!改进办法,当主节点挂了之后,就需要让主节点从从节点这里获取到AOF的文件,再启动~
2023-10-20 08:44:57
578
原创 【Redis】Redis事务
但是MySQL这里的原子性,走的更远,也是把多个操作打包到了一起,要么全部执行成功,要么全都不执行。redis没有约束,也没有回滚机制,事务执行过程中如果某个修改操作出现失败,就可能引起不一致的情况。最原本的含义,是把多个操作打包到一起,要么全部都执行(不保证成功),要么全都不执行~Redis的事务,主要的意义,就是为了“打包”,避免其他客户端的命令,插队插到中间~Redis是一个单线程模型的服务器程序,所有的请求/事务,都是“串行”执行的~乐观锁和悲观锁:不是指某个具体的锁,而是指的是某一类锁的特性。
2023-10-17 15:32:26
420
原创 【Redis】Redis持久化策略
如果是通过正常流程重新启动redis服务器,此时redis服务器会在退出的时候,自动触发生成rdb操作,但是如果是异常重启(kill -9 或者 服务器掉电)此时redis服务器来不及生成rdb,内存尚未保存到快照中的数据,就会随着重启而丢失~由于我们的数据比较少,执行bgsave瞬间就完成了,立即查看应该就是有结果的.如果以后我们接触的数据多了,执行bgsave就可能需要消耗一定的时间,立即查看不一定就是生成完毕了~子进程只需要把内存中给当前的数据,获取出来,以AOF的格式写入一个新的AOF文件中!
2023-10-17 11:01:37
454
原创 【Redis】Java Spring操作redis
此处RedisTemplate是把这些操作Redis的方法,分成了几个类别,分门别类的来组织的。此处提供的一些接口风格,和原生的Redis命令就有一定的差异。
2023-10-15 12:44:01
1086
1
原创 【Redis】使用Java客户端操作Redis
目录引入jedis依赖连接Redis命令get/setexists/delkeysexpire/ttltype引入jedis依赖连接Redis命令get/setexists/delkeysexpire/ttltype
2023-10-14 19:08:11
406
原创 【Redis】渐进式遍历
Redis使⽤scan命令进⾏渐进式遍历键,进⽽解决直接使⽤keys获取键时可能出现的阻塞问题。每次scan命令的时间复杂度是O(1),但是要完整地完成所有键的遍历,需要执⾏多次scan。
2023-10-13 17:00:36
263
原创 【Redis】Zset 有序集合命令
添加或者更新指定的元素以及关联的分数到zset中,分数应该符合double类型,+inf/-inf作为正负极限也是合法的。返回分数在min和max之间的元素个数,默认情况下,min和max都是包含的,可以通过(排除。返回分数在min和max之间的元素,默认情况下,min和max都是包含的,可以通过(排除。返回指定区间⾥的元素,分数按照升序。返回指定区间⾥的元素,分数按照降序。按照排序,升序删除指定范围的元素,左闭右闭。为指定的元素的关联分数添加指定的分数值。按照分数删除指定范围的元素,左闭右闭。
2023-10-13 12:12:28
228
原创 【Redis】Set集合相关的命令
注意,由于set内的元素是⽆序的,所以取出哪个元素实际是未定义⾏为,即可以看作随机的。注意,重复的元素⽆法添加到set中。获取⼀个set的基数(cardinality),即set中的元素个数。获取⼀个set中的所有元素,注意,元素间的顺序是⽆序的。获取给定set的交集中的元素并保存到⽬标set中。获取给定set的差集中的元素并保存到⽬标set中。将⼀个元素从源set取出并放⼊⽬标set中。获取给定set的交集中的元素。获取给定set的并集中的元素。获取给定set的差集中的元素。将指定的元素从set中删除。
2023-10-12 09:04:43
883
原创 【Redis】List 列表内部编码方式
在这里插入图片描述](https://img-blog.csdnimg.cn/a4046a38fdfd4e0882a67b751459ffa2.png)
2023-10-10 16:47:46
99
原创 【Redis】List列表相关的命令
但如果列表中没有元素,⾮阻塞版本会理解返回nil,但阻塞版本会根据timeout,阻塞⼀段时间,期间Redis可以执⾏其他命令,但要求执⾏该命令的客⼾端会表现为阻塞状态。2.命令中如果设置了多个键,那么会从左向右进⾏遍历键,⼀旦有⼀个键对应的列表中可以弹出元素,命令⽴即返回。在key存在时,将⼀个或者多个元素从左侧放⼊(头插)到list中。在key存在时,将⼀个或者多个元素从右侧放⼊(尾插)到list中。将⼀个或者多个元素从左侧放⼊(头插)到list中。将⼀个或者多个元素从右侧放⼊(尾插)到list中。
2023-10-10 14:53:16
818
原创 【Redis】Redis的几个应用场景(string数据类型的应用)
⽐较典型的缓存使⽤场景,其中Redis作为缓冲层,MySQL作为存储层,绝⼤部分请求的数据都是从Redis中获取。由于Redis具有⽀撑⾼并发的特性,所以缓存通常能起到加速读写和降低后端压⼒的作⽤。
2023-10-09 17:05:05
146
原创 【Redis】String内部编码方式
String内部编码方式int: 8个字节的长整型embstr: 小于等于39个字节的字符串raw: 大于39个字节的字符串
2023-10-09 11:49:42
114
原创 【Redis】字符串类型命令
将key对应的string表⽰的浮点数加上对应的值。如果key不存在,则视为key对应的value是0。将key对应的string表⽰的数字加上对应的值。如果key不存在,则视为key对应的value是0。将key对应的string表⽰的数字减去对应的值。如果key不存在,则视为key对应的value是0。如果key不存在,则视为key对应的value是0。如果key不存在,则视为key对应的value是0。⼀次性获取多个key的值。如果对应的key不存在或者对应的数据类型不是string,返回nil。
2023-10-09 11:30:15
140
原创 【Redis】Redis中的数据结构和内部编码
type命令实际返回的就是当前键的数据结构类型,它们分别是:string(字符串)、list(列表)、hash(哈希)、set(集合)、zset(有序集合),但这些只是Redis对外的数据结构,实际上Redis针对每种数据结构都有⾃⼰的底层内部编码实现,⽽且是多种实现,这样Redis会在合适的场景选择合适的内部编码。
2023-10-08 17:53:22
253
原创 【Redis】redis的特性和使用场景
Redis是一个高速缓存数据库,是一种key-value(键值对)形式的存储系统,非关系型数据库。Redis 执⾏命令的速度⾮常快。
2023-10-08 17:42:17
286
原创 【Redis】redis是单线程模型,为什么效率这么高?速度这么快?(相对于数据库)
4.处理网络IO的时候,使用了epoll这样的IO多路复用机制~2.redis核心功能,比数据库的核心功能更简单.3.单线程模型,避免了一些不必要的线程竞争开销。1.redis访问内存.数据库则是访问硬盘.
2023-10-08 17:30:35
61
原创 【Redis】redis中几个基本的全局命令
redis中几个基本的全局命令keys:用来查看匹配规则的keyexists:用来判定指定key是否存在del:删除指定的keyexpire:给key设置过期时间ttl:查询key的过期时间type:查询key对应的value的类型
2023-10-08 16:03:12
136
原创 【Redis】key的过期策略是怎么实现的?
一个redis中可能同时存在很多很多key,这些key中可能有很大一部分都有过期时间,此时,redis服务器咋知道哪些key已经过期要被删除,哪些key还没过期?紧接着,后面又一次访问,正好用到了这个key,于是这次访问就会让redis服务器触发删除key操作,同时再返回一个nil。假设这个key已经到了过期时间,但是暂时还没删它,key还存在.如果直接遍历所有的key,显然是行不通的.效率非常低~~redis整体的策略是。
2023-10-08 15:14:23
57
原创 【Redis】初学Redis
5.使用命令“redis-cli shutdown”先关闭 redis 服务,再使用“redis-server /etc/redis.conf &”启动 redis 服务。3.将 redis.conf 中的“protected-mode yes” 改为“protected-mode no”;1.将 redis 配置文件下载到本地:redis 配置文件是 linux 下的 /etc/redis.conf;4.将修改后的 redis.conf 上传至 liunx 下的 /etc 目录;
2023-08-09 11:01:12
643
原创 【Spring框架】Spring事务
但也会有新的问题,⽐如此级别的事务正在执⾏时,另⼀个事务成功的插⼊了某条数据,但因为它每次查询的结果都是⼀样的,所以会导致查询不到这条数据,⾃⼰重复插⼊时⼜失败(因为唯⼀约束的原因)。但由于在事务的执⾏中可以读取到其他事务提交的结果,所以在不同时间的相同 SQL 查询中,可能会得到不同的结果,这种现象叫做不可重复读。SERIALIZABLE:序列化,事务最⾼隔离级别,它会强制事务排序,使之不会发⽣冲突,从⽽解决了脏读、不可重复读和幻读问题,但因为执⾏效率低,所以真正使⽤的场景并不多。
2023-08-05 16:45:32
413
原创 【Spring框架】SpringBoot统一功能处理
统⼀异常处理使⽤的是 @ControllerAdvice + @ExceptionHandler 来实现的,@ControllerAdvice 表示控制器通知类,@ExceptionHandler 是异常处理器,两个结合表示当出现异常的时候执⾏某个通知,也就是执⾏某个⽅法事件。统⼀的数据返回格式可以使⽤ @ControllerAdvice + ResponseBodyAdvice 的⽅式实现。2.@ExceptionHandler(Exception.class)统一返回的对象。
2023-08-03 16:30:22
799
原创 【Spring框架】Spring AOP
AOP(Aspect Oriented Programming):⾯向切⾯编程,它是⼀种思想,它是对某⼀类事情的集中处理。⽐如⽤户登录权限的效验,没学 AOP 之前,我们所有需要判断⽤户登录的⻚⾯(中的⽅法),都要各⾃实现或调⽤⽤户验证的⽅法,然⽽有了 AOP 之后,我们只需要在某⼀处配置⼀下,所有需要判断⽤户登录⻚⾯(中的⽅法)就全部可以实现⽤户登录验证了,不再需要每个⽅法中都写相同的⽤户登录验证了。
2023-08-03 11:43:30
548
原创 【MyBatis】初学MyBatis
MyBatis 是⼀款优秀的持久层框架,它⽀持⾃定义 SQL、存储过程以及⾼级映射。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接⼝和 Java POJO(Plain Old Java Objects,普通⽼式 Java 对象)为数据库中的记录。MyBatis ORM(对象关系映射框架) 实现更加简单的操作数据库的框架。为了方便开发MyBatis,实现XML和对应的接口之间的快速跳转,可以安装一个MyBatisX的插件。**预执行:**它的执行是安全的可以防止SQL注入。
2023-08-02 17:10:37
193
原创 【Spring框架】SpringMVC
Spring MVC 特性:1.Spring MVC 是一个Web框架。2.Spring MVC 是基于Servlet API 构建的。MVC是Model View Controller 的缩写,它是软件工程中的一种软件框架模式,它把软件系统分为模型、视图和控制器三个基本部分。MVC执行流程:1.用户的请求首先先到Controller。2.Controller将请求转发给Model。3.Model处理业务并将数据结果给Controller。4.Controller会将数据给View引擎。
2023-08-01 16:32:00
160
原创 【Spring框架】SpringBoot配置文件
想象⼀下如果没有配置信息,那么 Spring Boot 项⽬就不能连接和操作数据库,甚⾄是不能保存可以⽤于排查问题的关键⽇志,所以配置⽂件的作⽤是⾮常重要的。yml 是树形结构的配置⽂件,它的基础语法是“key: value”,注意 key 和 value 之间使⽤英⽂冒汗加空格的⽅式组成的,其中的空格不可省略。properties 是以键值的形式配置的,key 和 value 之间是以“=”连接的。1.数据库的连接信息(包含⽤户名和密码的设置);4.⽤于发现和定位问题的普通⽇志和异常⽇志等。
2023-07-29 17:06:21
197
原创 【Spring框架】SpringBoot创建和使用
Spring 的诞⽣是为了简化 Java 程序的开发的,⽽ Spring Boot 的诞⽣是为了简化 Spring 程序开发的。
2023-07-29 15:31:52
678
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人