自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(211)
  • 收藏
  • 关注

原创 【Redis】主从复制

从节点与主节点的复制连接是通过一个特殊标识的客户端来完成,因此需要配置从节点的masterauth参数与主节点密码保持一致,这样从节点才可以连接到主节点并发起复制流程。由于复制只能从主节点到从节点,对于从节点的任何修改主节点都无法感知.修改从节点会造成主从数据不一致。由于从节点的数据都是时刻和主节点保持一致的。如果挂掉了某个从节点,没啥影响,此时继续从主节点或者其他从节点读取数据,得到的效果完全相同!改进办法,当主节点挂了之后,就需要让主节点从从节点这里获取到AOF的文件,再启动~

2023-10-20 08:44:57 434

原创 【Redis】Redis事务

但是MySQL这里的原子性,走的更远,也是把多个操作打包到了一起,要么全部执行成功,要么全都不执行。redis没有约束,也没有回滚机制,事务执行过程中如果某个修改操作出现失败,就可能引起不一致的情况。最原本的含义,是把多个操作打包到一起,要么全部都执行(不保证成功),要么全都不执行~Redis的事务,主要的意义,就是为了“打包”,避免其他客户端的命令,插队插到中间~Redis是一个单线程模型的服务器程序,所有的请求/事务,都是“串行”执行的~乐观锁和悲观锁:不是指某个具体的锁,而是指的是某一类锁的特性。

2023-10-17 15:32:26 280

原创 【Redis】Redis持久化策略

如果是通过正常流程重新启动redis服务器,此时redis服务器会在退出的时候,自动触发生成rdb操作,但是如果是异常重启(kill -9 或者 服务器掉电)此时redis服务器来不及生成rdb,内存尚未保存到快照中的数据,就会随着重启而丢失~由于我们的数据比较少,执行bgsave瞬间就完成了,立即查看应该就是有结果的.如果以后我们接触的数据多了,执行bgsave就可能需要消耗一定的时间,立即查看不一定就是生成完毕了~子进程只需要把内存中给当前的数据,获取出来,以AOF的格式写入一个新的AOF文件中!

2023-10-17 11:01:37 313

原创 【Redis】Java Spring操作redis

此处RedisTemplate是把这些操作Redis的方法,分成了几个类别,分门别类的来组织的。此处提供的一些接口风格,和原生的Redis命令就有一定的差异。

2023-10-15 12:44:01 892 1

原创 【Redis】Java客户端使用zset命令

zadd/zrangezcardzremzscorezrank

2023-10-15 11:05:56 171

原创 【Redis】Java客户端使用hash命令

hset/hgethexistshdelhkeys/hvalshmget/hmset

2023-10-15 10:32:11 38

原创 【Redis】Java客户端使用set命令

sadd/smemberssismemberscardspopsinter/sinterstore

2023-10-14 20:37:56 55

原创 【Redis】Java客户端使用list命令

lpush/lrangerpush/rpop/lpopblpop/brpopllen

2023-10-14 19:57:17 328

原创 【Redis】Java客户端使用string命令

mget/msetgetrange/setrangeappendincr/decr

2023-10-14 19:32:26 29

原创 【Redis】使用Java客户端操作Redis

目录引入jedis依赖连接Redis命令get/setexists/delkeysexpire/ttltype引入jedis依赖连接Redis命令get/setexists/delkeysexpire/ttltype

2023-10-14 19:08:11 369

原创 【Redis】渐进式遍历

Redis使⽤scan命令进⾏渐进式遍历键,进⽽解决直接使⽤keys获取键时可能出现的阻塞问题。每次scan命令的时间复杂度是O(1),但是要完整地完成所有键的遍历,需要执⾏多次scan。

2023-10-13 17:00:36 232

原创 【Redis】Zset 有序集合内部编码方式

有序集合类型的内部编码有两种:

2023-10-13 15:44:55 90

原创 【Redis】Zset 有序集合命令

添加或者更新指定的元素以及关联的分数到zset中,分数应该符合double类型,+inf/-inf作为正负极限也是合法的。返回分数在min和max之间的元素个数,默认情况下,min和max都是包含的,可以通过(排除。返回分数在min和max之间的元素,默认情况下,min和max都是包含的,可以通过(排除。返回指定区间⾥的元素,分数按照升序。返回指定区间⾥的元素,分数按照降序。按照排序,升序删除指定范围的元素,左闭右闭。为指定的元素的关联分数添加指定的分数值。按照分数删除指定范围的元素,左闭右闭。

2023-10-13 12:12:28 182

原创 【Redis】Set集合内部编码方式

集合类型的内部编码有两种:

2023-10-12 09:06:15 279

原创 【Redis】Set集合相关的命令

注意,由于set内的元素是⽆序的,所以取出哪个元素实际是未定义⾏为,即可以看作随机的。注意,重复的元素⽆法添加到set中。获取⼀个set的基数(cardinality),即set中的元素个数。获取⼀个set中的所有元素,注意,元素间的顺序是⽆序的。获取给定set的交集中的元素并保存到⽬标set中。获取给定set的差集中的元素并保存到⽬标set中。将⼀个元素从源set取出并放⼊⽬标set中。获取给定set的交集中的元素。获取给定set的并集中的元素。获取给定set的差集中的元素。将指定的元素从set中删除。

2023-10-12 09:04:43 843

原创 【Redis】List 列表内部编码方式

在这里插入图片描述](https://img-blog.csdnimg.cn/a4046a38fdfd4e0882a67b751459ffa2.png)

2023-10-10 16:47:46 56

原创 【Redis】List列表相关的命令

但如果列表中没有元素,⾮阻塞版本会理解返回nil,但阻塞版本会根据timeout,阻塞⼀段时间,期间Redis可以执⾏其他命令,但要求执⾏该命令的客⼾端会表现为阻塞状态。2.命令中如果设置了多个键,那么会从左向右进⾏遍历键,⼀旦有⼀个键对应的列表中可以弹出元素,命令⽴即返回。在key存在时,将⼀个或者多个元素从左侧放⼊(头插)到list中。在key存在时,将⼀个或者多个元素从右侧放⼊(尾插)到list中。将⼀个或者多个元素从左侧放⼊(头插)到list中。将⼀个或者多个元素从右侧放⼊(尾插)到list中。

2023-10-10 14:53:16 706

原创 【Redis】Hash 哈希内部编码方式

哈希的内部编码有两种:

2023-10-10 09:22:30 280

原创 【Redis】Hash 哈希相关的命令

设置hash中指定的字段(field)的值(value)。

2023-10-10 09:05:21 117

原创 【Redis】Redis的几个应用场景(string数据类型的应用)

⽐较典型的缓存使⽤场景,其中Redis作为缓冲层,MySQL作为存储层,绝⼤部分请求的数据都是从Redis中获取。由于Redis具有⽀撑⾼并发的特性,所以缓存通常能起到加速读写和降低后端压⼒的作⽤。

2023-10-09 17:05:05 127

原创 【Redis】String内部编码方式

String内部编码方式int: 8个字节的长整型embstr: 小于等于39个字节的字符串raw: 大于39个字节的字符串

2023-10-09 11:49:42 64

原创 【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 114

原创 【Redis】Redis中的数据结构和内部编码

type命令实际返回的就是当前键的数据结构类型,它们分别是:string(字符串)、list(列表)、hash(哈希)、set(集合)、zset(有序集合),但这些只是Redis对外的数据结构,实际上Redis针对每种数据结构都有⾃⼰的底层内部编码实现,⽽且是多种实现,这样Redis会在合适的场景选择合适的内部编码。

2023-10-08 17:53:22 227

原创 【Redis】redis的特性和使用场景

Redis是一个高速缓存数据库,是一种key-value(键值对)形式的存储系统,非关系型数据库。Redis 执⾏命令的速度⾮常快。

2023-10-08 17:42:17 248

原创 【Redis】redis是单线程模型,为什么效率这么高?速度这么快?(相对于数据库)

4.处理网络IO的时候,使用了epoll这样的IO多路复用机制~2.redis核心功能,比数据库的核心功能更简单.3.单线程模型,避免了一些不必要的线程竞争开销。1.redis访问内存.数据库则是访问硬盘.

2023-10-08 17:30:35 30

原创 【Redis】redis中几个基本的全局命令

redis中几个基本的全局命令keys:用来查看匹配规则的keyexists:用来判定指定key是否存在del:删除指定的keyexpire:给key设置过期时间ttl:查询key的过期时间type:查询key对应的value的类型

2023-10-08 16:03:12 111

原创 【Redis】key的过期策略是怎么实现的?

一个redis中可能同时存在很多很多key,这些key中可能有很大一部分都有过期时间,此时,redis服务器咋知道哪些key已经过期要被删除,哪些key还没过期?紧接着,后面又一次访问,正好用到了这个key,于是这次访问就会让redis服务器触发删除key操作,同时再返回一个nil。假设这个key已经到了过期时间,但是暂时还没删它,key还存在.如果直接遍历所有的key,显然是行不通的.效率非常低~~redis整体的策略是。

2023-10-08 15:14:23 29

原创 【算法】常见位运算总结

(n - 1):将最右侧的1,右边的区域(包括1)全部变成相反。-n:本质就是将最右侧的1,左边的区域全部变成相反。

2023-09-11 11:02:34 314 1

原创 【Redis】Spring/SpringBoot 操作 Redis Java客户端

2.Lettuce(主流)

2023-08-09 11:50:57 719

原创 【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 458

原创 【Spring框架】Spring事务

但也会有新的问题,⽐如此级别的事务正在执⾏时,另⼀个事务成功的插⼊了某条数据,但因为它每次查询的结果都是⼀样的,所以会导致查询不到这条数据,⾃⼰重复插⼊时⼜失败(因为唯⼀约束的原因)。但由于在事务的执⾏中可以读取到其他事务提交的结果,所以在不同时间的相同 SQL 查询中,可能会得到不同的结果,这种现象叫做不可重复读。SERIALIZABLE:序列化,事务最⾼隔离级别,它会强制事务排序,使之不会发⽣冲突,从⽽解决了脏读、不可重复读和幻读问题,但因为执⾏效率低,所以真正使⽤的场景并不多。

2023-08-05 16:45:32 215

原创 【Spring框架】SpringBoot统一功能处理

统⼀异常处理使⽤的是 @ControllerAdvice + @ExceptionHandler 来实现的,@ControllerAdvice 表示控制器通知类,@ExceptionHandler 是异常处理器,两个结合表示当出现异常的时候执⾏某个通知,也就是执⾏某个⽅法事件。统⼀的数据返回格式可以使⽤ @ControllerAdvice + ResponseBodyAdvice 的⽅式实现。2.@ExceptionHandler(Exception.class)统一返回的对象。

2023-08-03 16:30:22 749

原创 【Spring框架】Spring AOP

AOP(Aspect Oriented Programming):⾯向切⾯编程,它是⼀种思想,它是对某⼀类事情的集中处理。⽐如⽤户登录权限的效验,没学 AOP 之前,我们所有需要判断⽤户登录的⻚⾯(中的⽅法),都要各⾃实现或调⽤⽤户验证的⽅法,然⽽有了 AOP 之后,我们只需要在某⼀处配置⼀下,所有需要判断⽤户登录⻚⾯(中的⽅法)就全部可以实现⽤户登录验证了,不再需要每个⽅法中都写相同的⽤户登录验证了。

2023-08-03 11:43:30 515

原创 【MyBatis】MyBatis 动态SQL

if>

2023-08-03 10:28:17 103

原创 【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 163

原创 【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 133

原创 【Spring框架】springboot日志

1.通过日志工程得到日志对象2.通过日志对象提供的打印方法实现打印。

2023-08-01 10:46:00 192

原创 【Spring框架】SpringBoot配置文件

想象⼀下如果没有配置信息,那么 Spring Boot 项⽬就不能连接和操作数据库,甚⾄是不能保存可以⽤于排查问题的关键⽇志,所以配置⽂件的作⽤是⾮常重要的。yml 是树形结构的配置⽂件,它的基础语法是“key: value”,注意 key 和 value 之间使⽤英⽂冒汗加空格的⽅式组成的,其中的空格不可省略。properties 是以键值的形式配置的,key 和 value 之间是以“=”连接的。1.数据库的连接信息(包含⽤户名和密码的设置);4.⽤于发现和定位问题的普通⽇志和异常⽇志等。

2023-07-29 17:06:21 164

原创 【Spring框架】SpringBoot创建和使用

Spring 的诞⽣是为了简化 Java 程序的开发的,⽽ Spring Boot 的诞⽣是为了简化 Spring 程序开发的。

2023-07-29 15:31:52 643

原创 【Spring框架】Bean作用域和生命周期

Bean作用域指的是Bean在Spring容器中的某种行为(单例、原型…Bean的6种作用域。

2023-07-28 16:15:00 225

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除