RedisTemplate常用方法

一、Redis常用的数据类型:

  • String
  • Hash
  • List
  • Set
  • zSet
  • Sorted set

二、RedisTemplate 常用 API

1. String类型

设置当前的key以及value值;

redisTemplate.opsForValue().set(key, value);

设置当前的key以及value值并且设置过期时间;

redisTemplate.opsForValue().set(key, value, timeout, unit);

判断是否有key所对应的值,有则返回true,没有则返回false;

redisTemplate.hasKey(key);

有则取出key值所对应的值;

redisTemplate.opsForValue().get(key);

删除单个key值;

redisTemplate.delete(key);

批量删除key;

redisTemplate.delete(keys); //其中keys:Collection<K> keys

将当前传入的key值序列化为byte[]类型;

redisTemplate.dump(key);
  1. 设置过期时间;
public Boolean expire(String key, long timeout, TimeUnit unit) {
return redisTemplate.expire(key, timeout, unit);
}
public Boolean expireAt(String key, Date date) {
return redisTemplate.expireAt(key, date);
}
  1. 查找匹配的key值,返回一个Set集合类型( * 代表查询所有);
public Set<String> getPatternKey(String pattern) {
return redisTemplate.keys(pattern);
}
  1. 修改redis中key的名称;
 public void renameKey(String oldKey, String newKey) {
redisTemplate.rename(oldKey, newKey);
}
  1. 返回传入key所存储的值的类型;
public DataType getKeyType(String key) {
return redisTemplate.type(key);
}
  1. 如果旧值存在时,将旧值改为新值;
public Boolean renameOldKeyIfAbsent(String oldKey, String newKey) {
return redisTemplate.renameIfAbsent(oldKey, newKey);
}
  1. 从redis中随机取出一个key;
redisTemplate.randomKey();
  1. 返回当前key所对应的剩余过期时间;
 public Long getExpire(String key) {
return redisTemplate.getExpire(key);
}
  1. 返回剩余过期时间并且指定时间单位;
public Long getExpire(String key, TimeUnit unit) {
return redisTemplate.getExpire(key, unit);
}
  1. 将key持久化保存;
public Boolean persistKey(String key) {
return redisTemplate.persist(key);
}
  1. 将当前数据库的key移动到指定redis中数据库当中;
public Boolean moveToDbIndex(String key, int dbIndex) {
return redisTemplate.move(key, dbIndex);
}
  1. 返回key中字符串的子字符;
public String getCharacterRange(String key, long start, long end) {
return redisTemplate.opsForValue().get(key, start, end);
}
  1. 将旧的key设置为value,并且返回旧的key;
public String setKeyAsValue(String key, String value) {
return redisTemplate.opsForValue().getAndSet(key, value);
}
  1. 批量获取值;
 public List<String> multiGet(Collection<String> keys) {
return redisTemplate.opsForValue().multiGet(keys);
}
  1. 在原有的值基础上新增字符串到末尾;
redisTemplate.opsForValue().append(key, value);
  1. 通过 increment(String key) 方法给 key 对应的 value 值进行自增,如果该 key 没有 value值,则默认为 0;
 public Double incrByDouble(String key, double increment) {
return redisTemplate.opsForValue().increment(key, increment);
}
  1. 通过increment(K key, double increment)方法以增量的方式将double值存储在变量中(正值则自增,负值则自减);
 public Double incrByDouble(String key, double increment) {
return redisTemplate.opsForValue().increment(key, increment);
}
  1. 通过increment(K key, long delta)方法以增量方式存储long值(正值则自增,负值则自减);
public Long incrBy(String key, long increment) {
return redisTemplate.opsForValue().increment(key, increment);
}
  1. 如果对应的map集合名称不存在,则添加否则不做修改;
Map valueMap = new HashMap();
valueMap.put("valueMap1","map1");
valueMap.put("valueMap2","map2");
valueMap.put("valueMap3","map3");
redisTemplate.opsForValue().multiSetIfAbsent(valueMap);
  1. 设置map集合到redis;
Map valueMap = new HashMap();
valueMap.put("valueMap1","map1");
valueMap.put("valueMap2","map2");
valueMap.put("valueMap3","map3");
redisTemplate.opsForValue().multiSet(valueMap);
  1. 获取字符串的长度;
redisTemplate.opsForValue().size(key);
  1. 用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始;
redisTemplate.opsForValue().set(key, value, offset);
  1. 重新设置key对应的值,如果存在返回false,否则返回true;
redisTemplate.opsForValue().setIfAbsent(key, value);
  1. 将值 value 关联到 key,并将 key 的过期时间设为 timeout;
redisTemplate.opsForValue().set(key, value, timeout, unit);
  1. 将二进制第offset位值变为value;
redisTemplate.opsForValue().setBit(key, offset, value);
  1. 对key所储存的字符串值,获取指定偏移量上的位(bit);
redisTemplate.opsForValue().getBit(key, offset);

2. Hash类型

Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象;

Redis 中每个 hash 可以存储 2^32 - 1 键值对(40多亿);

  1. 获取变量中的指定map键是否有值,如果存在该map键则获取值,没有则返回null;
redisTemplate.opsForHash().get(key, field);
  1. 获取变量中的键值对;
public Map<Object, Object> hGetAll(String key) {
return redisTemplate.opsForHash().entries(key);
}
  1. 新增hashMap值;
redisTemplate.opsForHash().put(key, hashKey, value);
  1. 以map集合的形式添加键值对;
public void hPutAll(String key, Map<String, String> maps) {
redisTemplate.opsForHash().putAll(key, maps);
}
  1. 仅当hashKey不存在时才设置;
public Boolean hashPutIfAbsent(String key, String hashKey, String value) {
return redisTemplate.opsForHash().putIfAbsent(key, hashKey, value);
}
  1. 删除一个或者多个hash表字段;
public Long hashDelete(String key, Object... fields) {
return redisTemplate.opsForHash().delete(key, fields);
}
  1. 查看hash表中指定字段是否存在;
public boolean hashExists(String key, String field) {
return redisTemplate.opsForHash().hasKey(key, field);
}
  1. 给哈希表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);
}
  1. 获取所有hash表中字段;
redisTemplate.opsForHash().keys(key);
  1. 获取hash表中字段的数量;
redisTemplate.opsForHash().size(key);
  1. 获取hash表中存在的所有的值;
public List<Object> hValues(String key) {
return redisTemplate.opsForHash().values(key);
}
  1. 匹配获取键值对,ScanOptions.NONE为获取全部键对;
public Cursor<Entry<Object, Object>> hashScan(String key, ScanOptions options) {
return redisTemplate.opsForHash().scan(key, options);
}

3. List类型

  1. 通过索引获取列表中的元素;
redisTemplate.opsForList().index(key, index);
  1. 获取列表指定范围内的元素(start开始位置, 0是开始位置,end 结束位置, -1返回所有);
redisTemplate.opsForList().range(key, start, end);
  1. 存储在list的头部,即添加一个就把它放在最前面的索引处;
redisTemplate.opsForList().leftPush(key, value);
  1. 把多个值存入List中(value可以是多个值,也可以是一个Collection value);
redisTemplate.opsForList().leftPushAll(key, value);
  1. List存在的时候再加入;
redisTemplate.opsForList().leftPushIfPresent(key, value);
  1. 如果pivot处值存在则在pivot前面添加;
redisTemplate.opsForList().leftPush(key, pivot, value);
  1. 按照先进先出的顺序来添加(value可以是多个值,或者是Collection var2);
redisTemplate.opsForList().rightPush(key, value);

redisTemplate.opsForList().rightPushAll(key, value);
  1. 在pivot元素的右边添加值;
redisTemplate.opsForList().rightPush(key, pivot, value);
  1. 设置指定索引处元素的值;
redisTemplate.opsForList().set(key, index, value);
  1. 移除并获取列表中第一个元素(如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止);
redisTemplate.opsForList().leftPop(key);

redisTemplate.opsForList().leftPop(key, timeout, unit);
  1. 移除并获取列表最后一个元素;
redisTemplate.opsForList().rightPop(key);

redisTemplate.opsForList().rightPop(key, timeout, unit);
  1. 从一个队列的右边弹出一个元素并将这个元素放入另一个指定队列的最左边;
redisTemplate.opsForList().rightPopAndLeftPush(sourceKey, destinationKey);

redisTemplate.opsForList().rightPopAndLeftPush(sourceKey, destinationKey, timeout, unit);
  1. 删除集合中值等于value的元素(index=0, 删除所有值等于value的元素; index>0, 从头部开始删除第一个值等于value的元素; index<0, 从尾部开始删除第一个值等于value的元素);
redisTemplate.opsForList().remove(key, index, value);
  1. 将List列表进行剪裁;
redisTemplate.opsForList().trim(key, start, end);
  1. 获取当前key的List列表长度;
redisTemplate.opsForList().size(key);

4. Set类型

  1. 添加元素;
redisTemplate.opsForSet().add(key, values);
  1. 移除元素(单个值、多个值);
redisTemplate.opsForSet().remove(key, values);
  1. 删除并且返回一个随机的元素;
redisTemplate.opsForSet().pop(key);
  1. 获取集合的大小;
redisTemplate.opsForSet().size(key);
  1. 判断集合是否包含value;
redisTemplate.opsForSet().isMember(key, value);
  1. 获取两个集合的交集(key对应的无序集合与otherKey对应的无序集合求交集);
redisTemplate.opsForSet().intersect(key, otherKey);
  1. 获取多个集合的交集(Collection var2);
redisTemplate.opsForSet().intersect(key, otherKeys);
  1. key集合与otherKey集合的交集存储到destKey集合中(其中otherKey可以为单个值或者集合);
redisTemplate.opsForSet().intersectAndStore(key, otherKey, destKey);
  1. key集合与多个集合的交集存储到destKey无序集合中;
redisTemplate.opsForSet().intersectAndStore(key, otherKeys, destKey);
  1. 获取两个或者多个集合的并集(otherKeys可以为单个值或者是集合);
redisTemplate.opsForSet().union(key, otherKeys);
  1. key集合与otherKey集合的并集存储到destKey中(otherKeys可以为单个值或者是集合);
redisTemplate.opsForSet().unionAndStore(key, otherKey, destKey);
  1. 获取两个或者多个集合的差集(otherKeys可以为单个值或者是集合);
redisTemplate.opsForSet().difference(key, otherKeys);
  1. 差集存储到destKey中(otherKeys可以为单个值或者集合);
redisTemplate.opsForSet().differenceAndStore(key, otherKey, destKey);
  1. 随机获取集合中的一个元素;
redisTemplate.opsForSet().randomMember(key);
  1. 获取集合中的所有元素;
redisTemplate.opsForSet().members(key);
  1. 随机获取集合中count个元素;
redisTemplate.opsForSet().randomMembers(key, count);
  1. 获取多个key无序集合中的元素(去重),count表示个数;
redisTemplate.opsForSet().distinctRandomMembers(key, count);
  1. 遍历set类似于Interator(ScanOptions.NONE为显示所有的);
redisTemplate.opsForSet().scan(key, options);

5. zSet类型

  1. ZSetOperations提供了一系列方法对有序集合进行操作;

    添加元素(有序集合是按照元素的score值由小到大进行排列);
redisTemplate.opsForZSet().add(key, value, score);
  1. 删除对应的value,value可以为多个值;
redisTemplate.opsForZSet().remove(key, values);

1.默认从小到大,取出zset中的value (set集合)

redisTemplate.opsForZSet().range(key, start, end);

1.从大到小,取出zset中的value (set集合)

redisTemplate.opsForZSet().reverseRange(key, start, end);
  1. 增加元素的score值,并返回增加后的值;
redisTemplate.opsForZSet().incrementScore(key, value, delta);
  1. 返回元素在集合的排名,有序集合是按照元素的score值由小到大排列;
redisTemplate.opsForZSet().rank(key, value);
  1. 返回元素在集合的排名,按元素的score值由大到小排列;
redisTemplate.opsForZSet().reverseRank(key, value);
  1. 获取集合中给定区间的元素(start 开始位置,end 结束位置, -1查询所有);
redisTemplate.opsForZSet().reverseRangeWithScores(key, start,end);
  1. 按照分数范围升序输出名称;
rangebyscore key min max [withscores]
  1. 根据分数范围删除元素
zremrangebyscore key min max [withscores]
  1. 按照分数范围降序输出名称;
redisTemplate.opsForZSet().reverseRangeByScore(key, min, max);
redisTemplate.opsForZSet().reverseRangeByScoreWithScores(key, min, max);
//返回值为:Set<ZSetOperations.TypedTuple<V>>
  1. 从高到低的排序集中获取分数在最小和最大值之间的元素;
redisTemplate.opsForZSet().reverseRangeByScore(key, min, max, start, end);
  1. 根据score值获取集合元素数量;
redisTemplate.opsForZSet().count(key, min, max);
  1. 获取集合的大小;
redisTemplate.opsForZSet().size(key);

redisTemplate.opsForZSet().zCard(key);
  1. 获取集合中key、value元素对应的score值;
redisTemplate.opsForZSet().score(key, value);
  1. 移除指定索引位置处的成员;
redisTemplate.opsForZSet().removeRange(key, start, end);
  1. 移除指定score范围的集合成员;
redisTemplate.opsForZSet().removeRangeByScore(key, min, max);
  1. 获取key和otherKey的并集并存储在destKey中(其中otherKeys可以为单个字符串或者字符串集合);
redisTemplate.opsForZSet().unionAndStore(key, otherKey, destKey);
  1. 获取key和otherKey的交集并存储在destKey中(其中otherKeys可以为单个字符串或者字符串集合);
redisTemplate.opsForZSet().intersectAndStore(key, otherKey, destKey);
  1. 遍历集合(和iterator一模一样);
Cursor<TypedTuple<Object>> scan = opsForZSet.scan("test3", ScanOptions.NONE);
while (scan.hasNext()){
ZSetOperations.TypedTuple<Object> item = scan.next();
System.out.println(item.getValue() + ":" + item.getScore());
}

RedisTemplate常用方法的更多相关文章

  1. Spring RedisTemplate常用方法(List,Hash)

    @Autowired private RedisTemplate<String, String> redisTemplate; @Override public List<Strin ...

  2. Spring学习之旅(十三)--使用NoSQL数据库

    除了关系型数据库之外,现在还有一种 NoSQL 数据库非常流行,而 Spring 自然也没有放过对它的支持. NoSQL 数据库有很多种,如: MongoDBGenericJackson2JsonRe ...

  3. SpringDataRedis入门到深入

    一:简介 SpringDataRedis是SpringData开源项目中的一部分,它可以在Spring项目中更灵活简便的访问和操作Redis:原先在没有SpringDataRedis时往往使用Jedi ...

  4. java初级开发面试题

    目录 1.java基础知识 Q1.equals和==的区别 Q2:集合的父类是什么 Q3:List.Hashmap.Set区别 Q4.java数据类型 Q5.javaIO流 Q6.jdk1.8新特性 ...

  5. Spring整合Redis学习笔记

    1 Spring-Data-Redis 1.1 Spring-Data-Redis简介   Spring-Data-Redis(简称SDR)对Redis的Key-Value数据存储操作提供了更高层次的 ...

  6. RedisTemplate.opsForValue 常用方法

    RedisTemplate.opsForValue 常用方法 1.set(K key, V value) 新增一个字符串类型的值,key是键,value是值. redisTemplate.opsFor ...

  7. 前端开发:Javascript中的数组,常用方法解析

    前端开发:Javascript中的数组,常用方法解析 前言 Array是Javascript构成的一个重要的部分,它可以用来存储字符串.对象.函数.Number,它是非常强大的.因此深入了解Array ...

  8. Jquery元素选取、常用方法

    一:常用的选择器:(李昌辉) 基本选择器 $("#myDiv") //匹配唯一的具有此id值的元素 $("div") //匹配指定名称的所有元素 $(" ...

  9. python浅谈正则的常用方法

    python浅谈正则的常用方法覆盖范围70%以上 上一次很多朋友写文字屏蔽说到要用正则表达,其实不是我不想用(我正则用得不是很多,看过我之前爬虫的都知道,我直接用BeautifulSoup的网页标签去 ...

  10. C# Webbrowser 常用方法及多线程调用

    设置控件的值 /// <summary> /// 根据ID,NAME双重判断并设置值 /// </summary> /// <param name="tagNa ...

随机推荐

  1. FPGA对EEPROM驱动控制(I2C协议)

    本文摘要:本文首先对I2C协议的通信模式和AT24C16-EEPROM芯片时序控制进行分析和理解,设计了一个i2c通信方案.人为按下写操作按键后,FPGA(Altera EP4CE10)对EEPROM ...

  2. ClickHouse介绍(四)ClickHouse使用操作

    ClickHouse使用操作 这章主要介绍在ClickHouse使用的各个操作的注意点.常规的统一语法不做详细介绍. 1. Join操作 在ClickHouse中,对连接操作定义了不同的精度,包含AL ...

  3. STM32 CubeMX 学习:002-外部中断的使用

    背景 上一讲 STM32 CubeMX 学习:GPIO的使用 介绍了如何配置以及操作GPIO引脚. 这一讲我们通过中断来控制按键.关于中断的概念不做介绍. HOST-OS : Windows-10 S ...

  4. ubuntu16 安装 python-networkmanager 失败

    前言 ubuntu16 安装 python-networkmanager 失败 解决方案 sudo apt-get install libdbus-1-dev sudo apt-get install ...

  5. ubuntu 同时安装python2 和 python3 版本的 gunicorn

    前言 最近在学习使用 gunicorn 部署 flask 项目.发现使用 pip3 安装完 gunicorn后,如如果再使用 pip2 安装 gunicorn,后安装的 gunicorn 就会覆盖掉原 ...

  6. 开源流式湖仓服务 Arctic 详解:并非另一套 Table Format

    [点击了解更多知识] 本文根据作者于 Arctic 开源发布会演讲内容整理(略有删减),系统解读 Arctic 项目研发初衷.生态定位.核心特性.性能表现及未来规划. 首先感谢大家参与我们 Arcti ...

  7. [oeasy]python0106 七段数码管_显示字母_BP机

    七位数码管进化 回忆上次内容 上次回顾了 7-seg 七位数码管 可以显示数字 甚至是十六进制数字   ​   添加图片注释,不超过 140 字(可选)   能否让 七位数码管 将26个字母 全部都显 ...

  8. oeasy教您玩转vim - 71 - # 视图view

    ​ 视图view 回忆上次折叠的细节 折叠方式很多 我们一般就用默认的就行 indent 很好用 前提是缩进语法严格到位 这样语法和排版都能同时确保 打开关闭 zc.zo 是打开关闭当前行 zm.zr ...

  9. 题解:AT_arc173_b [ARC173B] Make Many Triangles

    背景 前几天打了比赛,崩麻了,所以来水一篇题解.LC真睿智 题意 给你 \(n\) 个点,问最多能组成几个三角形. 分析 听说可以随机化.这道题就是一个简单贪心. 我们考虑,如果没有共线的点,那么答案 ...

  10. C# DataGridView控件用法大全

    动态添加新行 //方法一: int index = this.dataGridView1.Rows.Add(); this.dataGridView1.Rows[index].Cells[0].Val ...