点击上方“Java面试题精选”,关注公众号
面试刷图,查缺补漏
>>号外:往期面试题,10篇为一个单位归置到本公众号菜单栏->面试题,有需要的欢迎翻阅
阶段汇总集合:001期~180期汇总,方便阅读(增加设计模式)
今天对redis的进阶操作给大家介绍一下,以及对于jedis和redisTemplate等工具包没有封装的命令我们该如何使用?相信大家读了本篇对redis的整体会有更深的认知。
一、Pipelin模式介绍
1、redis的通常使用方式
大多数情况下,我们都会通过请求-相应机制去操作redis。使用这种模式的步骤为
-
获得jedis实例
-
发送redis命令
-
由于redis是单线程的,所以处理完上一个指令之后才会进行执行该命令。
整个交互流程如下

2、Pipeline模式
然而使用Pipeline 模式,客户端可以一次性的发送多个命令,无需等待服务端返回。这样就大大的减少了网络往返时间,提高了系统性能。
pipeline是多条命令的组合,使用PIPELINE 可以解决网络开销的问题,原理也非常简单,流程如下, 将多个指令打包后,一次性提交到Redis, 网络通信只有一次

3、性能对比
可以看到,redis的延迟主要出现在网络请求的IO次数上,因此我们在使用redis的时候,尽量减少网络IO次数,通过pipeline的方式将多个指令封装在一个命令里执行。
二、Redis事物
redis的简单事务是将一组需要一起执行的命令放到multi和exec两个命令之间,其中multi代表事务开始,exec代表事务结束

1、事务命令
-
multi:事务开始
-
exec:提交事务
-
watch:事务监控
WATCH命令可以监控一个或多个键,一旦其中有一个键被修改(或删除),之后的事务就不会执行。监控一直持续到
discard:停止事务
在执行exec之前执行该命令,提交事务会失败,执行的命令会进行回滚
scan 0 match n* count 5 匹配以n开头的键,最大是取5条,第一次scan 0开始
第二次从游标4096开始取20个以n开头的键,相当于一页一页的取当最后返回0时,键被取完。
3、scan 和keys对比
-
通过游标分布进行的,不会阻塞线程;
-
提供 limit 参数,可以控制每次返回结果的最大条数,limit 不准,返回的结果可多可少;
-
同 keys 一样,Scan也提供模式匹配功能;
-
服务器不需要为游标保存状态,游标的唯一状态就是 scan 返回给客户端的游标整数;
-
scan返回的结果可能会有重复,需要客户端去重复;
-
scan遍历的过程中如果有数据修改,改动后的数据能不能遍历到是不确定的;
-
单次返回的结果是空的并不意味着遍历结束,而要看返回的游标值是否为零;
4、其他遍历命令
SCAN 命令用于迭代当前数据库中的数据库键。
SSCAN 命令用于迭代集合键中的元素。
HSCAN 命令用于迭代哈希键中的键值对。
ZSCAN 命令用于迭代有序集合中的元素(包括元素成员和元素分值)。
用法和scan一样
END
来源:blog.csdn.net/b379685397/article/details/109015852
十期推荐
【182期】SpringCloud常见面试题(2020最新版)
【185期】面试官:你能说说 Synchronized实现对象锁的两种方式以及它的原理吗?
【186期】一口气说出 Synchronized 同步方法的八种使用场景
【188期】面试官:delete、truncate、drop的区别有哪些,该如何选择
与其在网上拼命找题? 不如马上关注我们~
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/7586.html