Redis学习总结

java操作redis

导入依赖

<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
   <groupId>redis.clients</groupId>
   <artifactId>jedis</artifactId>
   <version>4.1.1</version>
</dependency>

连接使用

Jedis jedis=new Jedis("master",6379);

jedis.set(“k”,"v");

存储某一批相同数据前加上标记,中间以冒号分隔

存储对象 应该选用 hash(具体按需求)

redis做缓存使用,所缓存的数据 需要加上TTL 每次访问当前数据都需要更新TTL

持久化机制

数据再内存和硬盘之间的相互转换

RDB

redis默认持久化机制是RDB

把redis存储在内存中的数据以快照(备份)存储到磁盘

默认:存储策略(不会进行叠加,某一个生效之后 计数和计时会归零)

save 3600 1

save 300 100

save 60 10000

关闭默认RDB(关闭自动策略 可以手动实现)

1.通过命令 config save ""

2.修改配置文件redis.conf

放开save ""

手动触发RDB机制

save bgsave

save:会阻塞客户端的响应

bgsave:后台执行不会阻塞

进入到客户端 执行save bgsave

关闭redis服务默认执行rdb策略

优点和缺点
优点

完全备份 不同版本的恢复

容灾性

缺点

在下一次没有持久化之前 所有的内容全部消失

folk过程非常耗时 会造成毫秒级不能响应客户端需求

AOF

默认时RDB持久化机制 需要手动开启AOF

在配置文件中修改appendonly no 改成yes

持久化策略是默认的以追加的方式 进行写入到文件

每执行一次命令就会写一次 (写入到缓存 ,一秒钟执行一次刷新 把缓存中的内容保存到磁盘aof文件)

Always:服务器每写入一个命令,就调用一次fdatasync,将缓冲区里面的内容写入到硬盘。这种模式下,服务区出现故障,也不会丢失任何已经成功执行的命令数据、

Everyec(默认):服务器每一秒调用一次fdatasync,将缓冲区里面的命令写入到硬盘。这种模式下,服务器出现故障,最多只丢失一秒钟内的执行的命令数据

No:服务器不主动调用fdatasync,由操作系统决定何时将缓冲区的命令写入到硬盘。这种模式下,服务器遭遇意外停机时,丢失命令的数量是不确定的

运行速度:always的速度慢,everysec和no都很快

AOF重写或合并

AOF文件会把命令原模原样进行存储

1.导致文件过大

2.命令重复

set a a

set a a

3.命令相互抵消

set a a

del a

4.命令简化

lset 1 a

lset 1 b

lset 1 c

lmset 1 a b c

重写

重写执行之后 会把内容存储为二进制

下一次执行append还是以String进行存储

手动:在命令行执行BGREWRITEAOF

自动:达到触发机制 默认执行

auto-aof-rewrite-min-size<size>,触发AOF重写所需的最小体积:只要在AOF文件的体积大于等于size时,才会考虑是否需要进行AOF重写,这个选项用于避免对体积过小的AOF文件进行重写

auto-aof-rewrite-percentage<percent>,指定触发重写所需的AOF文件体积百分比:当AOD文件的体积大于size指定的体积,并且超过上一次重写之后的AOF文件体积的percent %时,就会触发AOF重写。(如果服务器刚刚启动不久,还灭有进行过AOF重写,那么使用服务器启动时载入的AOF文件的体积来作为基准值)将这个值设置为0表示关闭自动AOF重写

主从分离

redis复制到其他节点

scp -r redis node1:/usr/local/soft/

首先先启动主服务器 再启动从服务器

主从关系 先有主 再有从

把master当成主节点 node1当成从节点

#启动master

cd /usr/local/soft/redis/bin

redis-server redis.conf

#启动node1

cd /usr/local/soft/redis/bin

./redis-server --port 6380 --slaveof master 6379

主节点可以读写 从节点只能读

从节点是为了缓解服务器读的压力 可以有一台 可以有多台

主从节点可以相互替换

注意:主从关系中

如果想要实现主节点-> 从节点 需要先走从节点->主节点(一旦先执行主节点 ->从节点 redis服务i就没有写的功能了 都是从节点 )

主节点-> 从节点

命令行输入:slaveof host port

从节点->主节点

命令行输入:slaveof no one

启动从节点客户端

./redis-cli -p port ## 6380

  • 25
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值