Redis序列化配置类(全)

时间:2024-10-12 07:32:29
package com.example.redisdemo.Utils; import org.springframework.data.redis.connection.DataType; import org.springframework.data.redis.core.Cursor; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ScanOptions; import org.springframework.data.redis.core.ZSetOperations.TypedTuple; import org.springframework.stereotype.Component; import java.util.Collection; import java.util.Date; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import java.util.concurrent.TimeUnit; /** * Redis工具类 * @author LiuCheng * @data 2021/1/14 15:55 */ @Component public class RedisUtils { private final RedisTemplate<String, Object> redisTemplate; public RedisUtils(RedisTemplate<String, Object> redisTemplate) { this.redisTemplate = redisTemplate; } // -------------------key 相关操作--------------------- /** * 删除 key * * @param key 要删除的 键 */ public void delete(String key) { redisTemplate.delete(key); } /** * 批量删除 key * * @param keys 要删除的 键 的集合 */ public void delete(Collection<String> keys) { redisTemplate.delete(keys); } /** * 是否存在 key * * @param key 判断该 键 是否存在 * @return 存在返回 true, 不存在返回 false */ public Boolean hasKey(String key) { return redisTemplate.hasKey(key); } /** * 设置过期时间 * * @param key 要设置的 键 * @param timeout 过期时间 * @param unit 时间单位 * @return 设置成功返回 true, 设置失败返回 false */ public Boolean expire(String key, long timeout, TimeUnit unit) { return redisTemplate.expire(key, timeout, unit); } /** * 设置在什么时间过期 * * @param key 要设置的 键 * @param date 过期时间 * @return 设置成功返回 true, 设置失败返回 false */ public Boolean expireAt(String key, Date date) { return redisTemplate.expireAt(key, date); } /** * 查找匹配的 key * * @param pattern 匹配字符串 * @return 满足匹配条件的 键 的 Set 集合 */ public Set<String> keys(String pattern) { return redisTemplate.keys(pattern); } /** * 将当前数据库的 key 移动到给定的数据库 db 当中 * * @param key 要移动的 键 * @param dbIndex 要移动到的 db 的序号, 从 0 开始 * @return 移动成功返回 true, 移动失败返回 false */ public Boolean move(String key, int dbIndex) { return redisTemplate.move(key, dbIndex); } /** * 移除 key 的过期时间,key 将持久保持 * * @param key 要移除过期时间的 键 * @return 移除成功返回 true, 并且该 key 将持久存在, 移除失败返回 false */ public Boolean persist(String key) { return redisTemplate.persist(key); } /** * 返回 key 的剩余的过期时间 * * @param key 要查询剩余过期时间的 键 * @param unit 时间的单位 * @return 剩余的过期时间 */ public Long getExpire(String key, TimeUnit unit) { return redisTemplate.getExpire(key, unit); } /** * 返回 key 的剩余的过期时间, 默认时间单位: 秒 * * @param key 要查询剩余过期时间的 键 * @return 剩余的过期时间, 单位: 秒 */ public Long getExpire(String key) { return redisTemplate.getExpire(key); } /** * 从当前数据库中随机返回一个 key * * @return 随机获取的 键 的名称 */ public String randomKey() { return redisTemplate.randomKey(); } /** * 修改 key 的名称 * * @param oldKey 修改前的 键 的名称 * @param newKey 修改后的 键 的名称 */ public void rename(String oldKey, String newKey) { redisTemplate.rename(oldKey, newKey); } /** * 仅当 newkey 不存在时,将 oldKey 改名为 newkey * * @param oldKey 修改前的 键 的名称 * @param newKey 修改后的 键 的名称 * @return 修改成功返回 true, 修改失败返回 false */ public Boolean renameIfAbsent(String oldKey, String newKey) { return redisTemplate.renameIfAbsent(oldKey, newKey); } /** * 返回 key 所储存的值的类型 * * @param key 要查询类型的 键 * @return key 的数据类型 */ public DataType type(String key) { return redisTemplate.type(key); } // -------------------string 相关操作--------------------- /** * 设置指定 key 的值 * * @param key 要设置的 键 * @param value 要设置的 值 */ public void set(String key, Object value) { redisTemplate.opsForValue().set(key, value); } /** * 获取指定 key 的值 * * @param key 键 的名称 * @return 键 对应的 值 */ public Object get(String key) { return redisTemplate.opsForValue().get(key); } /** * 返回 key 的 字符串值 中指定位置的 子字符串 * * @param key 要获取值的 键 * @param start 开始位置, 最小值: 0 * @param end 结束位置, 最大值: 字符串 - 1, 若为 -1 则是获取整个字符串值 * @return 指定 键 的 字符串值 的 子字符串 */ public String getRange(String key, long start, long end) { return redisTemplate.opsForValue().get(key, start, end); } /** * 将给定 key 的值设为 value ,并返回 key 的旧值( old value ) * * @param key 要设置值的 键 * @param value 新值 * @return 旧值 */ public Object getAndSet(String key, Object value) { return redisTemplate.opsForValue().getAndSet(key, value); } /** * 对 key 所储存的字符串值,获取指定偏移量上的位( bit ) * * @param key 键 * @param offset 偏移量 * @return 指定偏移量上的 位( 0 / 1) */ public Boolean getBit(String key, long offset) { return redisTemplate.opsForValue().getBit(key, offset); } /** * 批量获取 key 的 值 * * @param keys 要获取值的 键 的集合 * @return key对应的值的集合 */ public List<Object> multiGet(Collection<String> keys) { return redisTemplate.opsForValue().multiGet(keys); } /** * 设置ASCII码, 字符串'a'的ASCII码是97, 转为二进制是'01100001', 此方法是将二进制第 offset 位值变为 value * * @param key 要设置的 键 * @param offset 偏移多少位 * @param value 值, true 为 1, false 为 0 * @return 设置成功返回 true, 设置失败返回 false */ public Boolean setBit(String key, long offset, boolean value) { return redisTemplate.opsForValue().setBit(key, offset, value); } /** * 将值 value 关联到 key ,并将 key 的过期时间设为 timeout * * @param key 键 * @param value 值 * @param timeout 过期时间 * @param unit 时间单位, 天: 小时: 分钟: * 秒: 毫秒: */ public void setEx(String key, Object value, long timeout, TimeUnit unit) { redisTemplate.opsForValue().set(key, value, timeout, unit); } /** * 只有在 key 不存在时设置 key 的值 * * @param key 键 * @param value 值 * @return 之前已经存在返回 false, 不存在返回 true */ public Boolean setIfAbsent(String key, Object value) { return redisTemplate.opsForValue().setIfAbsent(key, value); } /** * 用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始 * * @param key 键 * @param value 值 * @param offset 从指