使用redisTemplate从redis获取所有数据

目录
  • redisTemplate从redis获取所有数据
    • idea后端效果
    • swagger测试效果
  • 说说RedisTemplate的常用方法
    • 1.RedisTemplate常用方法
    • 2.String类型
    • 4.List类型
    • 5.Set类型
    • 6.zSet类型

redisTemplate从redis获取所有数据

	@Autowired
    private RedisTemplate<String,String> redisTemplate;

    @ApiOperation("StationCharger")
    @GetMapping("/StationCharger")
    public AjaxResult init() {
//        redisTemplate.delete("*");
        //获取所有的key
        Set<String> keys = redisTemplate.keys("GEELY:HC1Y:station:*");
//        System.out.println(keys);
        //创建集合
        HashMap<Object, Object> map = new HashMap<>();
        //循环
        for (String key : keys){
            //获取key对应的value
            Object value = redisTemplate.opsForValue().get(key);
            map.put(key,value);
            System.out.println(key);
            System.out.println(value);
        }
        return AjaxResult.success(map);
    }

idea后端效果

swagger测试效果

说说RedisTemplate的常用方法

  • 1.RedisTemplate常用方法
  • 2.String类型
  • 3.Hash类型
  • 4.List类型
  • 5.Set类型
  • 6.zSet类型

Redis常用的数据类型:String、Hash、List、Set、zSet

1.RedisTemplate常用方法

redisTemplate.hasKey(key);				//判断是否有key所对应的值,有则返回true,没有则返回false
redisTemplate.opsForValue().get(key);	//有则取出key值所对应的值
redisTemplate.delete(key);				//删除单个key值
redisTemplate.delete(keys); 			//其中keys:Collection<K> keys
redisTemplate.dump(key);				//将当前传入的key值序列化为byte[]类型
redisTemplate.expire(key, timeout, unit);	//设置过期时间
redisTemplate.expireAt(key, date);		//设置过期时间
redisTemplate.keys(pattern);			//查找匹配的key值,返回一个Set集合类型
redisTemplate.rename(oldKey, newKey);	//返回传入key所存储的值的类型
redisTemplate.renameIfAbsent(oldKey, newKey);	//如果旧值存在时,将旧值改为新值
redisTemplate.randomKey();				//从redis中随机取出一个key
redisTemplate.getExpire(key);			//返回当前key所对应的剩余过期时间
redisTemplate.getExpire(key, unit);		//返回剩余过期时间并且指定时间单位
redisTemplate.persist(key);				//将key持久化保存
redisTemplate.move(key, dbIndex);		//将当前数据库的key移动到指定redis中数据库当中

2.String类型

ValueOperations opsForValue = redisTemplate.opsForValue();
opsForValue.set(key, value);    //设置当前的key以及value值
opsForValue.set(key, value, offset);//用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始
opsForValue.set(key, value, timeout, unit);     //设置当前的key以及value值并且设置过期时间
opsForValue.setBit(key, offset, value);    //将二进制第offset位值变为value
opsForValue.setIfAbsent(key, value);//重新设置key对应的值,如果存在返回false,否则返回true
opsForValue.get(key, start, end);    //返回key中字符串的子字符
opsForValue.getAndSet(key, value);    //将旧的key设置为value,并且返回旧的key
opsForValue.multiGet(keys);            //批量获取值
opsForValue.size(key);                //获取字符串的长度
opsForValue.append(key, value);    //在原有的值基础上新增字符串到末尾
opsForValue.increment(key,double increment);//以增量的方式将double值存储在变量中
opsForValue.increment(key,long  increment);    //通过increment(K key, long delta)方法以增量方式存储long值(正值则自增,负值则自减)
 
Map valueMap = new HashMap();  
valueMap.put("valueMap1","map1");  
valueMap.put("valueMap2","map2");  
valueMap.put("valueMap3","map3");  
opsForValue.multiSetIfAbsent(valueMap);     //如果对应的map集合名称不存在,则添加否则不做修改
opsForValue.multiSet(valueMap);                //设置map集合到redis

3.Hash类型

HashOperations opsForHash = redisTemplate.opsForHash();
opsForHash.get(key, field);    //获取变量中的指定map键是否有值,如果存在该map键则获取值,没有则返回null
opsForHash.entries(key);    //获取变量中的键值对
opsForHash.put(key, hashKey, value);    //新增hashMap值
opsForHash.putAll(key, maps);    //以map集合的形式添加键值对
opsForHash.putIfAbsent(key, hashKey, value);    //仅当hashKey不存在时才设置
opsForHash.delete(key, fields);    //删除一个或者多个hash表字段
opsForHash.hasKey(key, field);    //查看hash表中指定字段是否存在
opsForHash.increment(key, field, long increment);    //给哈希表key中的指定字段的整数值加上增量increment
opsForHash.increment(key, field, double increment);    //给哈希表key中的指定字段的整数值加上增量increment
opsForHash.keys(key);                //获取所有hash表中字段
opsForHash.values(key);                //获取hash表中存在的所有的值
opsForHash.scan(key, options);        //匹配获取键值对,ScanOptions.NONE为获取全部键对

4.List类型

ListOperations opsForList = redisTemplate.opsForList();
opsForList.index(key, index);    //通过索引获取列表中的元素
opsForList.range(key, start, end);    //获取列表指定范围内的元素(start开始位置, 0是开始位置,end 结束位置, -1返回所有)
opsForList.leftPush(key, value);    //存储在list的头部,即添加一个就把它放在最前面的索引处
opsForList.leftPush(key, pivot, value);        //如果pivot处值存在则在pivot前面添加
opsForList.leftPushAll(key, value);        //把多个值存入List中(value可以是多个值,也可以是一个Collection value)
opsForList.leftPushIfPresent(key, value);    //List存在的时候再加入
opsForList.rightPush(key, value);    //按照先进先出的顺序来添加(value可以是多个值,或者是Collection var2)
opsForList.rightPushAll(key, value);    //在pivot元素的右边添加值
opsForList.set(key, index, value);        //设置指定索引处元素的值
opsForList.trim(key, start, end);        //将List列表进行剪裁
opsForList.size(key);    //获取当前key的List列表长度
 
//移除并获取列表中第一个元素(如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止)
opsForList.leftPop(key);                
opsForList.leftPop(key, timeout, unit);    
 
//移除并获取列表最后一个元素
opsForList.rightPop(key);
opsForList.rightPop(key, timeout, unit);    
 
//从一个队列的右边弹出一个元素并将这个元素放入另一个指定队列的最左边
opsForList.rightPopAndLeftPush(sourceKey, destinationKey);    
opsForList.rightPopAndLeftPush(sourceKey, destinationKey, timeout, unit);
 
//删除集合中值等于value的元素(index=0, 删除所有值等于value的元素; index>0, 从头部开始删除第一个值等于value的元素; index<0, 从尾部开始删除第一个值等于value的元素)
opsForList.remove(key, index, value);

5.Set类型

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

6.zSet类型

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

ZSetOperations opsForZSet = redisTemplate.opsForZSet();
opsForZSet.add(key, value, score);                //添加元素(有序集合是按照元素的score值由小到大进行排列)
opsForZSet.remove(key, values);                    //删除对应的value,value可以为多个值
opsForZSet.incrementScore(key, value, delta);    //增加元素的score值,并返回增加后的值
opsForZSet.rank(key, value);                    //返回元素在集合的排名,有序集合是按照元素的score值由小到大排列
opsForZSet.reverseRank(key, value);                //返回元素在集合的排名,按元素的score值由大到小排列
opsForZSet.reverseRangeWithScores(key, start,end);    //获取集合中给定区间的元素(start 开始位置,end 结束位置, -1查询所有)
opsForZSet.reverseRangeByScore(key, min, max);    //按照Score值查询集合中的元素,结果从小到大排序
opsForZSet.reverseRangeByScoreWithScores(key, min, max);    //返回值为:Set<ZSetOperations.TypedTuple<V>>
opsForZSet.count(key, min, max);                //根据score值获取集合元素数量
opsForZSet.size(key);                            //获取集合的大小
opsForZSet.zCard(key);                            //获取集合的大小
opsForZSet.score(key, value);                    //获取集合中key、value元素对应的score值
opsForZSet.removeRange(key, start, end);        //移除指定索引位置处的成员
opsForZSet.removeRangeByScore(key, min, max);    //移除指定score范围的集合成员
opsForZSet.unionAndStore(key, otherKey, destKey);//获取key和otherKey的并集并存储在destKey中(其中otherKeys可以为单个字符串或者字符串集合)
opsForZSet.intersectAndStore(key, otherKey, destKey);    //获取key和otherKey的交集并存储在destKey中(其中otherKeys可以为单个字符串或者字符串集合)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • java 用redisTemplate 的 Operations存取list集合操作

    java redisTemplate 的 Operations存取list集合 一 .存取为list类型 @RestController @RequestMapping("/test") @Slf4j public class TestController { @Autowired private RedisTemplate redisTemplate; @ApiOperation("redis-savelist") @PostMapping("/redi

  • Redis使用RedisTemplate模板类的常用操作方式

    目录 一.前言 二.Redis 数据结构简介 三.RedisTemplate对5种数据结构的操作 3.1 String字符串操作 3.2 list数组操作 3.3 Hash结构,map操作 3.4 Set集合操作 四.总结 一.前言 Redis是一个NoSQL(非关系型数据库)数据库之一,key-value存储系统或者说是一个缓存键值对数据库,具有如下特性: 基于内存运行,性能高效 支持分布式,理论上可以无限扩展 key-value存储系统 开源的使用ANSI C语言编写.遵守BSD协议.支持网

  • spring使用RedisTemplate操作Redis数据库

    一.什么是Redis Redis是一个非关系型数据库,具有很高的存取性能,一般用作缓存数据库,减少正常存储数据库的压力. Redis可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为String(字符串).List(列表).Set(集合).Hash(散列)和 Zset(有序集合). 下面来对这5种数据结构类型作简单的介绍: 二.RedisTemplate及其相关方法 1.RedisTemplate Spring封装了RedisTemplate对象来进行对Redis的各种操作,它

  • 使用redisTemplate从redis获取所有数据

    目录 redisTemplate从redis获取所有数据 idea后端效果 swagger测试效果 说说RedisTemplate的常用方法 1.RedisTemplate常用方法 2.String类型 4.List类型 5.Set类型 6.zSet类型 redisTemplate从redis获取所有数据 @Autowired private RedisTemplate<String,String> redisTemplate; @ApiOperation("StationCharg

  • 使用Redis获取数据转json,解决动态泛型传参的问题

    场景: 项目有两种角色需要不同的登录权限,将redis做为用户登录信息缓存数据库.码一个方法,希望能够根据传入不用用户实体类型来获取相应的数据.用户实体为:SessionEntity<User1>.SessionEntity<User2>.json使用FastJson. 先阐述遇到的几个问题: 1.redis获取到的数据序列化后,转json,经常提示转换异常(并不是每次,只是时常). 2.不想每种用户都书写一个redis操作方法(显得tai low). 解决: 1.redis获取到

  • spring结合redis如何实现数据的缓存

    1.实现目标 通过redis缓存数据.(目的不是加快查询的速度,而是减少数据库的负担) 2.所需jar包 注意:jdies和commons-pool两个jar的版本是有对应关系的,注意引入jar包是要配对使用,否则将会报错.因为commons-pooljar的目录根据版本的变化,目录结构会变.前面的版本是org.apache.pool,而后面的版本是org.apache.pool2... style="background-color: #0098dd; color: white; font-s

  • SpringBoot Redis批量存取数据的操作

    SpringBoot Redis批量存取数据 springboot中的redisTemplate封装了redis批处理数据的接口,我们使用redisTemplate可以直接进行批量数据的get和set. package com.huateng.applacation.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.ann

  • 详解SpringBoot使用RedisTemplate操作Redis的5种数据类型

    目录 1.字符串(String) 1.1 void set(K key, V value):V get(Object key) 1.2 void set(K key, V value, long timeout, TimeUnit unit) 1.3 V getAndSet(K key, V value) 1.4 Integer append(K key, V value) 1.5 Long size(K key) 2.列表(List) 2.1 Long leftPushAll(K key, V

  • Redis对批量数据实现分布式锁的实现代码

    目录 需求背景 代码实现 实现效果 需求背景 在开发的收入结转平台界面上有一个归集按钮,可以实现抓取结转表里面的多条数据进行归集操作.为了防止多人多电脑同时操作一条数据,我们自己开发了一个简单的基于Redis实现的分布式锁. 代码实现 逻辑代码中的使用案例 参数说明: scIds:结转数据的ID主键集合. timeOutToDeleteRedisKey:最大锁超时时间(用于自动解锁) organizationId:租户ID(这个参数根据情况选择是否需要) ReturnLock returnLoc

  • 分布式爬虫处理Redis里的数据操作步骤

    存入MongoDB 1.启动MongoDB数据库:sudo mongod 2.执行下面程序:py2 process_youyuan_mongodb.py # process_youyuan_mongodb.py # -*- coding: utf-8 -*- import json import redis import pymongo def main(): # 指定Redis数据库信息 rediscli = redis.StrictRedis(host='192.168.199.108',

  • 在ssm项目中使用redis缓存查询数据的方法

    在项目中常常需要后台程序的持久层查询数据库来获取数据,然后将数据交给服务层.控制层,最后才交给视图层.如果数据访问缓慢,就会影响程序的运行. 为了加快程序的运行,可以将数据放入缓存中,包括数据缓存和页面缓存. 所谓缓存,就是将程序或系统经常要调用的对象存在内存中,一遍其使用时可以快速调用,不必再去创建新的重复的实例.这样做可以减少系统开销,提高系统效率. 其中页面缓存主要是oscache,可以整页或者指定网页某一部分缓存,同时指定他的过期时间,这样在此时间段里面访问的数据都是一样的 . 数据缓存

  • Redis获取某个前缀的key脚本实例

    1.背景 在平时的维护中,经常会遇到要统计某个前缀的key有多少,在请求比较多的redis中,keys * 会直接导致阻塞. 可以采用scan的方式进行增量迭代,查询使用pipeline减少交互,提高效率. 2.scan命令的优缺点 SCAN命令的有SCAN,SSCAN,HSCAN,ZSCAN. SCAN的话就是遍历所有的keys 其他的SCAN命令的话是SCAN选中的集合. SCAN命令是增量的循环,每次调用只会返回一小部分的元素.所以不会有KEYS命令的坑. SCAN命令返回的是一个游标,从

随机推荐