RedisTemplate常用方法总结,面试必备知识点

public Map<Object, Object> hGetAll(String key) {

return redisTemplate.opsForHash().entries(key);

}

新增hashMap值

redisTemplate.opsForHash().put(key, hashKey, value)

以map集合的形式添加键值对

public void hPutAll(String key, Map<String, String> maps) {

redisTemplate.opsForHash().putAll(key, maps);

}

仅当hashKey不存在时才设置

public Boolean hashPutIfAbsent(String key, String hashKey, String value) {

return redisTemplate.opsForHash().putIfAbsent(key, hashKey, value);

}

删除一个或者多个hash表字段

public Long hashDelete(String key, Object… fields) {

return redisTemplate.opsForHash().delete(key, fields);

}

查看hash表中指定字段是否存在

public boolean hashExists(String key, String field) {

return redisTemplate.opsForHash().hasKey(key, field);

}

给哈希表key中的指定字段的整数值加上增量increment

public Long hashIncrBy(String key, Object field, long increment) {

return redisTemplate.opsForHash().increment(key, field, increment);

}

public Double hIncrByDouble(String key, Object field, double delta) {

return redisTemplate.opsForHash().increment(key, field, delta);

}

获取所有hash表中字段

redisTemplate.opsForHash().keys(key)

获取hash表中字段的数量

redisTemplate.opsForHash().size(key)

获取hash表中存在的所有的值

public List hValues(String key) {

return redisTemplate.opsForHash().values(key);

}

匹配获取键值对,ScanOptions.NONE为获取全部键对

public Cursor<Entry<Object, Object>> hashScan(String key, ScanOptions options) {

return redisTemplate.opsForHash().scan(key, options);

}

List类型

======

通过索引获取列表中的元素

redisTemplate.opsForList().index(key, index)

获取列表指定范围内的元素(start开始位置, 0是开始位置,end 结束位置, -1返回所有)

redisTemplate.opsForList().range(key, start, end)

存储在list的头部,即添加一个就把它放在最前面的索引处

redisTemplate.opsForList().leftPush(key, value)

把多个值存入List中(value可以是多个值,也可以是一个Collection value)

redisTemplate.opsForList().leftPushAll(key, value)

List存在的时候再加入

redisTemplate.opsForList().leftPushIfPresent(key, value)

如果pivot处值存在则在pivot前面添加

redisTemplate.opsForList().leftPush(key, pivot, value)

按照先进先出的顺序来添加(value可以是多个值,或者是Collection var2)

redisTemplate.opsForList().rightPush(key, value)

redisTemplate.opsForList().rightPushAll(key, value)

在pivot元素的右边添加值

redisTemplate.opsForList().rightPush(key, pivot, value)

设置指定索引处元素的值

redisTemplate.opsForList().set(key, index, value)

移除并获取列表中第一个元素(如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止)

redisTemplate.opsForList().leftPop(key)

redisTemplate.opsForList().leftPop(key, timeout, unit)

移除并获取列表最后一个元素

redisTemplate.opsForList().rightPop(key)

redisTemplate.opsForList().rightPop(key, timeout, unit)

从一个队列的右边弹出一个元素并将这个元素放入另一个指定队列的最左边

redisTemplate.opsForList().rightPopAndLeftPush(sourceKey, destinationKey)

redisTemplate.opsForList().rightPopAndLeftPush(sourceKey, destinationKey, timeout, unit)

删除集合中值等于value的元素(index=0, 删除所有值等于value的元素; index>0, 从头部开始删除第一个值等于value的元素; index<0, 从尾部开始删除第一个值等于value的元素)

redisTemplate.opsForList().remove(key, index, value)

将List列表进行剪裁

redisTemplate.opsForList().trim(key, start, end)

获取当前key的List列表长度

redisTemplate.opsForList().size(key)

Set类型

=====

添加元素

redisTemplate.opsForSet().add(key, values)

移除元素(单个值、多个值)

redisTemplate.opsForSet().remove(key, values)

删除并且返回一个随机的元素

redisTemplate.opsForSet().pop(key)

获取集合的大小

redisTemplate.opsForSet().size(key)

判断集合是否包含value

redisTemplate.opsForSet().isMember(key, value)

获取两个集合的交集(key对应的无序集合与otherKey对应的无序集合求交集)

redisTemplate.opsForSet().intersect(key, otherKey)

获取多个集合的交集(Collection var2)

redisTemplate.opsForSet().intersect(key, otherKeys)

key集合与otherKey集合的交集存储到destKey集合中(其中otherKey可以为单个值或者集合)

redisTemplate.opsForSet().intersectAndStore(key, otherKey, destKey)

key集合与多个集合的交集存储到destKey无序集合中

redisTemplate.opsForSet().intersectAndStore(key, otherKeys, destKey)

获取两个或者多个集合的并集(otherKeys可以为单个值或者是集合)

redisTemplate.opsForSet().union(key, otherKeys)

key集合与otherKey集合的并集存储到destKey中(otherKeys可以为单个值或者是集合)

redisTemplate.opsForSet().unionAndStore(key, otherKey, destKey)

获取两个或者多个集合的差集(otherKeys可以为单个值或者是集合)

redisTemplate.opsForSet().difference(key, otherKeys)

差集存储到destKey中(otherKeys可以为单个值或者集合)

redisTemplate.opsForSet().differenceAndStore(key, otherKey, destKey)

随机获取集合中的一个元素

redisTemplate.opsForSet().randomMember(key)

获取集合中的所有元素

redisTemplate.opsForSet().members(key)

随机获取集合中count个元素

redisTemplate.opsForSet().randomMembers(key, count)

获取多个key无序集合中的元素(去重),count表示个数

redisTemplate.opsForSet().distinctRandomMembers(key, count)

遍历set类似于Interator(ScanOptions.NONE为显示所有的)

redisTemplate.opsForSet().scan(key, options)

zSet类型

======

ZSetOperations提供了一系列方法对有序集合进行操作添加元素(有序集合是按照元素的score值由小到大进行排列)

redisTemplate.opsForZSet().add(key, value, score)

删除对应的value,value可以为多个值

redisTemplate.opsForZSet().remove(key, values)

增加元素的score值,并返回增加后的值

redisTemplate.opsForZSet().incrementScore(key, value, delta)

返回元素在集合的排名,有序集合是按照元素的score值由小到大排列

redisTemplate.opsForZSet().rank(key, value)

返回元素在集合的排名,按元素的score值由大到小排列

redisTemplate.opsForZSet().reverseRank(key, value)

获取集合中给定区间的元素(start 开始位置,end 结束位置, -1查询所有)

redisTemplate.opsForZSet().reverseRangeWithScores(key, start,end)

按照Score值查询集合中的元素,结果从小到大排序

redisTemplate.opsForZSet().reverseRangeByScore(key, min, max)

redisTemplate.opsForZSet().reverseRangeByScoreWithScores(key, min, max)

//返回值为:Set<ZSetOperations.TypedTuple>

从高到低的排序集中获取分数在最小和最大值之间的元素

redisTemplate.opsForZSet().reverseRangeByScore(key, min, max, start, end)

根据score值获取集合元素数量

redisTemplate.opsForZSet().count(key, min, max)

获取集合的大小

redisTemplate.opsForZSet().size(key)

redisTemplate.opsForZSet().zCard(key)

获取集合中key、value元素对应的score值

redisTemplate.opsForZSet().score(key, value)

移除指定索引位置处的成员

redisTemplate.opsForZSet().removeRange(key, start, end)

移除指定score范围的集合成员

redisTemplate.opsForZSet().removeRangeByScore(key, min, max)

获取key和otherKey的并集并存储在destKey中(其中otherKeys可以为单个字符串或者字符串集合)

redisTemplate.opsForZSet().unionAndStore(key, otherKey, destKey)

获取key和otherKey的交集并存储在destKey中(其中otherKeys可以为单个字符串或者字符串集合)

redisTemplate.opsForZSet().intersectAndStore(key, otherKey, destKey)

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

言尽于此,完结

无论是一个初级的 coder,高级的程序员,还是顶级的系统架构师,应该都有深刻的领会到设计模式的重要性。

  • 第一,设计模式能让专业人之间交流方便,如下:

程序员A:这里我用了XXX设计模式

程序员B:那我大致了解你程序的设计思路了

  • 第二,易维护

项目经理:今天客户有这样一个需求…

程序员:明白了,这里我使用了XXX设计模式,所以改起来很快

  • 第三,设计模式是编程经验的总结

程序员A:B,你怎么想到要这样去构建你的代码

程序员B:在我学习了XXX设计模式之后,好像自然而然就感觉这样写能避免一些问题

  • 第四,学习设计模式并不是必须的

程序员A:B,你这段代码使用的是XXX设计模式对吗?

程序员B:不好意思,我没有学习过设计模式,但是我的经验告诉我是这样写的

image

从设计思想解读开源框架,一步一步到Spring、Spring5、SpringMVC、MyBatis等源码解读,我都已收集整理全套,篇幅有限,这块只是详细的解说了23种设计模式,整理的文件如下图一览无余!

image

搜集费时费力,能看到此处的都是真爱!
)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-0Mskj4iF-1711986235471)]

言尽于此,完结

无论是一个初级的 coder,高级的程序员,还是顶级的系统架构师,应该都有深刻的领会到设计模式的重要性。

  • 第一,设计模式能让专业人之间交流方便,如下:

程序员A:这里我用了XXX设计模式

程序员B:那我大致了解你程序的设计思路了

  • 第二,易维护

项目经理:今天客户有这样一个需求…

程序员:明白了,这里我使用了XXX设计模式,所以改起来很快

  • 第三,设计模式是编程经验的总结

程序员A:B,你怎么想到要这样去构建你的代码

程序员B:在我学习了XXX设计模式之后,好像自然而然就感觉这样写能避免一些问题

  • 第四,学习设计模式并不是必须的

程序员A:B,你这段代码使用的是XXX设计模式对吗?

程序员B:不好意思,我没有学习过设计模式,但是我的经验告诉我是这样写的

[外链图片转存中…(img-DJyIEvXc-1711986235472)]

从设计思想解读开源框架,一步一步到Spring、Spring5、SpringMVC、MyBatis等源码解读,我都已收集整理全套,篇幅有限,这块只是详细的解说了23种设计模式,整理的文件如下图一览无余!

[外链图片转存中…(img-aaWAH8C9-1711986235472)]

搜集费时费力,能看到此处的都是真爱!

  • 16
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RedisTemplate常用方法包括: 1. 判断是否有某个key对应的值,使用`redisTemplate.hasKey(key)`,返回true表示存在,返回false表示不存在。 2. 获取某个key对应的值,使用`redisTemplate.opsForValue().get(key)`。 3. 删除单个key,使用`redisTemplate.delete(key)`。 4. 删除多个key,使用`redisTemplate.delete(keys)`,其中keys为一个key的集合。 5. 序列化当前传入的key值,使用`redisTemplate.dump(key)`。 6. 设置某个key的过期时间,使用`redisTemplate.expire(key, timeout, unit)`,其中timeout为过期时间,unit为时间单位。 7. 设置某个key在指定时间点过期,使用`redisTemplate.expireAt(key, date)`,其中date为过期时间点。 8. 查找匹配的key值,返回一个Set集合类型,使用`redisTemplate.keys(pattern)`,其中pattern为匹配的模式。 9. 重命名某个key,使用`redisTemplate.rename(oldKey, newKey)`。 10. 如果旧的key存在,则将旧的key改为新的key,使用`redisTemplate.renameIfAbsent(oldKey, newKey)`。 11. 从Redis中随机取出一个key,使用`redisTemplate.randomKey()`。 12. 返回某个key的剩余过期时间,使用`redisTemplate.getExpire(key)`。 13. 返回某个key的剩余过期时间,并指定时间单位,使用`redisTemplate.getExpire(key, unit)`,其中unit为时间单位。 14. 将某个key持久化保存,使用`redisTemplate.persist(key)`。 15. 将某个key移动到指定的Redis数据库中,使用`redisTemplate.move(key, dbIndex)`,其中dbIndex为目标数据库的索引。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值