教你使用Springboot中的RedisUtils工具类 您所在的位置:网站首页 redis工具类 教你使用Springboot中的RedisUtils工具类

教你使用Springboot中的RedisUtils工具类

2023-03-12 02:53| 来源: 网络整理| 查看: 265

古话说得好,工欲善其事必先利其器。在开发项目也是一样的,如果可以熟练项目中的工具,那么对于项目开发将会事半功倍。下面,我就和大家分享一篇讲述Springboot项目中的RedisUtils工具类的文章,希望能够帮助到大家!

SpringBoot整合Redis

引入Redis依赖

org.springframework.boot spring-boot-starter-data-redis

设置Redis的Template

在这里插入图片描述

RedisConfig.java

package cn.wideth.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.RedisSerializer; /** * 编写配置类,构造RedisTemplate * 这个springboot已经帮我们配了, * 但是默认object,我想改成string */ @Configuration public class RedisConfig { @Bean public RedisTemplate redisTemplate(RedisConnectionFactory factory) { RedisTemplate template = new RedisTemplate(); template.setConnectionFactory(factory); // 设置key的序列化方式 template.setKeySerializer(RedisSerializer.string()); // 设置value的序列化方式 template.setValueSerializer(RedisSerializer.json()); // 设置hash的key的序列化方式 template.setHashKeySerializer(RedisSerializer.string()); // 设置hash的value的序列化方式 template.setHashValueSerializer(RedisSerializer.json()); template.afterPropertiesSet(); return template; } }

设置Redis连接信息

在这里插入图片描述

redis操作5种常见的数据类型

Redis工具类

redisTemplate API

1.opsForValue -> String

2.opsForSet -> Set

3.opsForHash -> hash

4.opsForZset -> SortSet

5.opsForList -> list队列

代码 package cn.wideth.util.other; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.*; import java.util.List; import java.util.Set; import java.util.concurrent.TimeUnit; public class RedisUtils { @Autowired private RedisTemplate redisTemplate; private static double size = Math.pow(2, 32); /** * 写入缓存 * @param key * @param offset 位 8Bit=1Byte * @return */ public boolean setBit(String key, long offset, boolean isShow) { boolean result = false; try { ValueOperations operations = redisTemplate.opsForValue(); operations.setBit(key, offset, isShow); result = true; } catch (Exception e) { e.printStackTrace(); } return result; } /** * 写入缓存 * * @param key * @param offset * @return */ public boolean getBit(String key, long offset) { boolean result = false; try { ValueOperations operations = redisTemplate.opsForValue(); result = operations.getBit(key, offset); } catch (Exception e) { e.printStackTrace(); } return result; } /** * 写入缓存 * * @param key * @param value * @return */ public boolean set(final String key, Object value) { boolean result = false; try { ValueOperations operations = redisTemplate.opsForValue(); operations.set(key, value); result = true; } catch (Exception e) { e.printStackTrace(); } return result; } /** * 写入缓存设置时效时间 * @param key * @param value * @return */ public boolean set(final String key, Object value, Long expireTime) { boolean result = false; try { ValueOperations operations = redisTemplate.opsForValue(); operations.set(key, value); redisTemplate.expire(key, expireTime, TimeUnit.SECONDS); result = true; } catch (Exception e) { e.printStackTrace(); } return result; } /** * 批量删除对应的value * * @param keys */ public void remove(final String... keys) { for (String key : keys) { remove(key); } } /** * 删除对应的value * * @param key */ public void remove(final String key) { if (exists(key)) { redisTemplate.delete(key); } } /** * 判断缓存中是否有对应的value * * @param key * @return */ public boolean exists(final String key) { return redisTemplate.hasKey(key); } /** * 读取缓存 * * @param key * @return */ public Object get(final String key) { Object result = null; ValueOperations operations = redisTemplate.opsForValue(); result = operations.get(key); return result; } /** * 哈希 添加 * * @param key * @param hashKey * @param value */ public void hmSet(String key, Object hashKey, Object value) { HashOperations hash = redisTemplate.opsForHash(); hash.put(key, hashKey, value); } /** * 哈希获取数据 * * @param key * @param hashKey * @return */ public Object hmGet(String key, Object hashKey) { HashOperations hash = redisTemplate.opsForHash(); return hash.get(key, hashKey); } /** * 列表添加 * * @param k * @param v */ public void lPush(String k, Object v) { ListOperations list = redisTemplate.opsForList(); list.rightPush(k, v); } /** * 列表获取 * * @param k * @param l * @param l1 * @return */ public List lRange(String k, long l, long l1) { ListOperations list = redisTemplate.opsForList(); return list.range(k, l, l1); } /** * 集合添加 * * @param key * @param value */ public void add(String key, Object value) { SetOperations set = redisTemplate.opsForSet(); set.add(key, value); } /** * 集合获取 * @param key * @return */ public Set setMembers(String key) { SetOperations set = redisTemplate.opsForSet(); return sembers(key); } /** * 有序集合添加 * @param key * @param value * @param scoure */ public void zAdd(String key, Object value, double scoure) { ZSetOperations zset = redisTemplate.opsForZSet(); zset.add(key, value, scoure); } /** * 有序集合获取 * @param key * @param scoure * @param scoure1 * @return */ public Set rangeByScore(String key, double scoure, double scoure1) { ZSetOperations zset = redisTemplate.opsForZSet(); redisTemplate.opsForValue(); return zset.rangeByScore(key, scoure, scoure1); } //第一次加载的时候将数据加载到redis中 public void saveDataToRedis(String name) { double index = Math.abs(name.hashCode() % size); long indexLong = new Double(index).longValue(); boolean availableUsers = setBit("availableUsers", indexLong, true); } //第一次加载的时候将数据加载到redis中 public boolean getDataToRedis(String name) { double index = Math.abs(name.hashCode() % size); long indexLong = new Double(index).longValue(); return getBit("availableUsers", indexLong); } /** * 有序集合获取排名 * @param key 集合名称 * @param value 值 */ public Long zRank(String key, Object value) { ZSetOperations zset = redisTemplate.opsForZSet(); return zset.rank(key,value); } /** * 有序集合获取排名 * @param key */ public Set zRankWithScore(String key, long start,long end) { ZSetOperations zset = redisTemplate.opsForZSet(); Set ret = zset.rangeWithScores(key,start,end); return ret; } /** * 有序集合添加 * @param key * @param value */ public Double zSetScore(String key, Object value) { ZSetOperations zset = redisTemplate.opsForZSet(); return zset.score(key,value); } /** * 有序集合添加分数 * @param key * @param value * @param scoure */ public void incrementScore(String key, Object value, double scoure) { ZSetOperations zset = redisTemplate.opsForZSet(); zset.incrementScore(key, value, scoure); } /** * 有序集合获取排名 * @param key */ public Set reverseZRankWithScore(String key, long start,long end) { ZSetOperations zset = redisTemplate.opsForZSet(); Set ret = zset.reverseRangeByScoreWithScores(key,start,end); return ret; } /** * 有序集合获取排名 * @param key */ public Set reverseZRankWithRank(String key, long start, long end) { ZSetOperations zset = redisTemplate.opsForZSet(); Set ret = zset.reverseRangeWithScores(key, start, end); return ret; } }

本篇关于Springboot中的RedisUtils工具类的使用内容的文章就介绍到此结束了,想要了解更多有关于Springboot其他工具类的详情内容和具体使用方法,请多多关注W3Cschool其他相关内容的文章!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有