redis基础学习-管道,发布订阅,做缓存,事务,RDB

目录

Redis 管道的使用

redis发布订阅技术

redis作为缓存使用

redis事务

redis的持久化对象-RDB


Redis 管道的使用

2021年02月18日

23:26

 

 

如果出现-bash: nc: command not found 需要先按照nc

yum install -y nc

nc localhost 6379

 echo -e "set k2 99 \n incr k2 \n get k2" | nc localhost 6379 

 

一个请求/相应服务可以实现为,即使客户端没有读取到旧请求的响应,服务端依旧可以处理新请求。通过这种方式,可以完全无需等待服务端应答地发送多条指令给服务端,并最终一次性读取所有应答。管道技术最显著的优势是提高了redis服务的性能。

 

来自 <https://www.cnblogs.com/pxuan/p/8058299.html>

redis发布订阅技术

2021年02月18日

23:26

起两个客户端,一个用来发布,一个用来订阅

客户端1发布hello后客户端2开始订阅,则这条hello的消息客户端2是订阅不到的

在客户端2订阅后再发布hello5,则客户端可以收到了

客户端1

 

客户端2

redis作为缓存使用

2021年02月19日

10:27

实际应用:

假设你需要开发一个qq群,

这个qq群被常见出来,群里人互相沟通,这个时候又加入了一个新的成员,则群界面上之前沟通的消息这个新成员是看不到的,如果想看,则翻历史记录,历史记录也分为查看三天内或者更久的

 

redis作为数据库,缓存的区别

1.缓存数据不是很重要,不是全量数据

2.缓存应该随着访问而变化(热数据),因为内存的大小是有限的

3.再业务逻辑上,可以根据key的有效期判断,在业务运作上,随着访问变换,应该淘汰掉冷数据

 

设置k2数据的有效期为20s  20s后数据消失

Ttl k2 查看k2数据的当前有效期

 

提问:数据会随着访问时间而延长吗?不会,只和默认的有效期有关

 

如果数据在倒计时的过程中数据发送变换,则有效期剔除,数据永久有效,可查看下面k2的有效期时间为-1 则代表永久有效

 

 

过期判定原理

1.被动判定——当有客户端来访问这条数据时判定这条数据是否过期

2.主动判定——周期轮训判定,稍微牺牲下内存,但是保证redis的内存为王

redis事务

2021年02月19日

10:34

我们学过java的事务,事务里的多条操作,要么全部执行成功,要么一条失败,则全部回滚到之前的状态

 

 MULTI 开启事务,exec执行事务

 

查看事务的命令

 

Watch k1  监控

WATCH 使得 EXEC 命令需要有条件地执行: 事务只能在所有被监视键都没有被修改的前提下执行, 如果这个前提不能满足的话,事务就不会被执行

先监控k1 在执行,在执行exec操作的之前,k1的值被另外的一个客户端锁修改,则事务失败,

 

redis的持久化对象-RDB

redis是单进程单线程的,如何让redis变成非阻塞,redis继续对外提供服务的同事,将数据落地

 

Fork cow

redis调用fork,启动一个子进程

 

RDB:时点性,save ,bysave——》fork ,配置文件中编写bgsave这个表示

 

猜你喜欢

转载自blog.csdn.net/yanfei464486/article/details/113915702