com.dxy.library.cache.redis.IRedis Maven / Gradle / Ivy
package com.dxy.library.cache.redis;
import com.google.gson.reflect.TypeToken;
import redis.clients.jedis.BitOP;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* Redis缓存器
* @author duanxinyuan
* 2018/8/8 17:45
*/
public interface IRedis {
/**
* 设置键值对,返回OK表示成功
*/
String set(String key, T value);
/**
* 设置键值对和过期时间,返回OK表示成功
*/
String set(String key, T value, int seconds);
/**
* 设置键值对(不存在才设置,原子方法),返回1表示成功
*/
Long setnx(String key, T value);
/**
* 设置键值对和过期时间(不存在才设置,原子方法),返回1表示成功
*/
Long setnx(String key, T value, int seconds);
/**
* 获取值
*/
String get(String key);
/**
* 获取值
*/
T get(String key, Class c);
/**
* 获取值
*/
T get(String key, TypeToken typeToken);
/**
* 对数值增加指定值,返回修改后的数值
*/
Long incr(String key, Integer value);
/**
* 对数值增加指定值,并设置过期时间,返回修改后的数值
*/
Long incr(String key, Integer value, int seconds);
/**
* 对数值减少指定的值,返回修改后的数值
*/
Long decr(String key, Integer value);
/**
* 对数值减少指定值,并设置过期时间,返回修改后的数值
*/
Long decr(String key, Integer value, int seconds);
/**
* 设置键过期时间,返回1表示设置成功
*/
Long expire(String key, int seconds);
/**
* 清除设置的过期时间,将Key设置为永久有效,返回1表示设置成功
*/
Long persist(String key);
/**
* key是否存在,返回true表示成功
*/
boolean exist(String key);
/**
* 删除key,返回1表示设置成功
*/
Long del(String key);
/**
* 批量删除key
*/
void del(String... keys);
/********** 一下为list相关操作 ************/
/**
* 添加元素到list的头部,value可重复,返回list的长度
*/
Long lpush(String key, T value);
/**
* 添加元素到list的头部,value可重复,返回list的长度
*/
Long lpush(String key, T value, int seconds);
/**
* 添加元素到list的头部,value可重复,返回list的长度
*/
Long lpush(String key, List values);
/**
* 添加元素到list的头部,value可重复,返回list的长度
*/
Long lpush(String key, List values, int seconds);
/**
* 添加元素到list的尾部,value可重复,返回list的长度
*/
Long rpush(String key, T value);
/**
* 添加元素到list的尾部,value可重复,返回list的长度
*/
Long rpush(String key, T value, int seconds);
/**
* 添加元素到list的尾部,value可重复,返回list的长度
*/
Long rpush(String key, List values);
/**
* 添加元素到list的尾部,value可重复,返回list的长度
*/
Long rpush(String key, List values, int seconds);
/**
* 获取整个list
*/
List lrange(String key);
/**
* 获取整个list
*/
List lrange(String key, Class c);
/**
* 获取list中n个元素,起始下标为0,结束下标为end
*/
List lrange(String key, long end);
/**
* 获取list中n个元素,起始下标为0,结束下标为end
*/
List lrange(String key, long end, Class c);
/**
* 获取list中n个元素,起始下标为start,结束下标为end
*/
List lrange(String key, long start, long end);
/**
* 获取list中n个元素,起始下标为start,结束下标为end
*/
List lrange(String key, long start, long end, Class c);
/**
* 获取list中n个元素,起始下标为pageNo*pageSize,结束下标为(pageNo+1)*pageSize
*/
List lrangePage(String key, int pageNo, int pageSize);
/**
* 获取list中n个元素,起始下标为pageNo*pageSize,结束下标为(pageNo+1)*pageSize
*/
List lrangePage(String key, int pageNo, int pageSize, Class c);
/**
* 获取list中第index个元素
*/
String lindex(String key, int index);
/**
* 获取list中第index个元素
*/
T lindex(String key, int index, Class c);
/**
* 获取list长度
*/
Long llen(String key);
/**
* 清空整个List
*/
void lclear(String key);
/**
* 移除列表元素,返回移除的元素数量
* @param value 匹配的元素
* @return Long
*/
Long lrem(String key, String value);
/**
* 移除列表元素,返回移除的元素数量
* @param value 匹配的元素
*/
Long lrem(String key, T value);
/**
* 移除列表元素,返回移除的元素数量
* @param count 标识,表示动作或者查找方向 ,当count=0时,移除所有匹配的元素
* 当count为负数时,移除方向是从尾到头
* 当count为正数时,移除方向是从头到尾
* @param value 匹配的元素
*/
Long lrem(String key, long count, String value);
/**
* 移除列表元素,返回移除的元素数量
* @param key 键
* @param count 标识,表示动作或者查找方向,当count=0时,移除所有匹配的元素
* 当count为负数时,移除方向是从尾到头
* 当count为正数时,移除方向是从头到尾
* @param value 匹配的元素
*/
Long lrem(String key, long count, T value);
/**
* 对一个列表进行修剪(trim),让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。返回OK表示修剪成功
* @param key 键
* @param start 可以为负数(-1是列表的最后一个元素,-2是列表倒数第二的元素。)
* 如果start大于end,则返回一个空的列表,即列表被清空
* @param end 可以为负数(-1是列表的最后一个元素,-2是列表倒数第二的元素。)可以超出索引,不影响结果
*/
String ltrim(String key, long start, long end);
/**
* 移除并获取列表的第一个元素,当列表不存在或者为空时,返回null
*/
String lpop(String key);
/**
* 移除并获取列表最后一个元素,当列表不存在或者为空时,返回null
*/
String rpop(String key);
/********** 一下为set相关操作 ************/
/**
* 添加元素到set的尾部,返回1表示成功
*/
Long sadd(String key, String... values);
/**
* 向set中添加value,返回1表示成功
*/
Long sadd(String key, int seconds, String... values);
/**
* 遍历获取set中是否存在某元素,返回true表示存在
*/
boolean sismember(String key, String value);
/**
* 获取整个set
*/
Set smembers(String key);
/********** 一下为map相关操作 ************/
/**
* 添加键值对到map,返回1表示成功
*/
Long hset(String key, String field, T value);
/**
* 添加键值对到map,返回OK表示成功
*/
String hmset(String key, String... values);
/**
* 添加键值对到map,返回1表示成功
*/
Long hset(String key, String field, T value, int seconds);
/**
* 添加键值对到map,返回OK表示成功
*/
String hmset(String key, int seconds, String... values);
/**
* 获取map中的某个键
*/
String hget(String key, String field);
/**
* 增加map的某个数值
*/
Long hincr(String key, String field, Integer value);
/**
* 减少map的某个数值
*/
Long hdecr(String key, String field, Integer value);
/**
* 获取整个map
*/
Map hgetAll(String key);
/********** 一下为hyperloglog相关操作 ************/
/**
* 使用hyperloglog算法添加值,值不能重复,返回1表示添加成功
*/
Long pfadd(String key, String value);
/**
* 使用hyperloglog算法添加值,值不能重复,返回1表示添加成功
*/
Long pfadd(String key, String value, int seconds);
/**
* 获取使用hyperloglog算法的元素数量
*/
Long pfcount(String key);
/********** 一下为Bitmap相关操作 ************/
/**
* 使用Bitmap算法设置值,返回修改之前该偏移量所在位置的值
* @param offset 偏移量
* @param value 该偏移量所在位置的值,false/true,对应0/1
*/
boolean setbit(String key, long offset, boolean value);
/**
* 使用Bitmap算法设置值,返回修改之前该偏移量所在位置的值
* @param offset 偏移量
* @param value 该偏移量所在位置的值,存入bit中会转化为二进制
*/
boolean setbit(String key, long offset, String value);
/**
* 获取Bitmap某个位置的值,返回true/false,对应1/0,
* 当 offset 比字符串值的长度大,或者 key 不存在时,返回 false
* @param offset 偏移量
*/
boolean getbit(String key, long offset);
/**
* 获取Bitmap中所有值为 1 的位的个数
*/
Long bitcount(String key);
/**
* 获取Bitmap中所有值为 1 的位的个数
* @param start 和end一样表示起始结束位,-1 表示最后一个字节, -2表示倒数第二个字节
*/
Long bitcount(String key, long start, long end);
/**
* 对一个或多个保存二进制位的字符串 key 进行位元操作,并将结果保存到 destkey 上
* 返回保存到 destkey 的字符串的长度(和输入 key 中最长的字符串长度相等)
* @param op 操作类型,如下四种
* AND-求逻辑并,将多个Key的值转化为二进制取 交集,再转化为原数据类型
* OR-求逻辑或,将多个Key的值转化为二进制取 并集,再转化为原数据类型
* XOR-求逻辑异或,将多个Key的值转化为二进制取 并集,再执行逻辑非操作,得到相反值,再转化为原数据类型
* NOT-求逻辑非,只能针对一个Key操作,将Key的值转化为二进制,再将所有比特位的值 反转,0变1,1变0
* @param destKey 保存的结果Key
* @param srcKeys 被操作的Key集合
*/
Long bitop(BitOP op, String destKey, String... srcKeys);
/**
* 对多个位范围进行子操作,返回子操作集合的结果列表
* @param arguments 子操作集合,支持的子命令如下:
* GET —— 返回指定的二进制位范围
* SET —— 对指定的二进制位范围进行设置,并返回它的旧值
* INCRBY —— 对指定的二进制位范围执行加法操作,并返回它的旧值,传入负值表示减法操作。
* 操作示例:BITFIELD mykey INCRBY i8 100 1 GET u4 0
* 该命令实现的作用:对位于偏移量 100 的 8 位长有符号整数执行加法操作, 并获取位于偏移量 0 上的 4 位长无符号整数
*/
List bitfield(String key, String... arguments);
/**
* 获取string的二进制中第一个0或1的位置
* 如果指定了查询区间,无论查询0或是1,在没查询到的时候只会返回-1。
* 在没有指定查询区间时,查询bit位为1的位置时,如果string中没有该位,则会返回-1,表示未查询到
* @param value 值,false/true,对应0/1
*/
Long bitpos(String key, boolean value);
/**
* 获取string的二进制中第一个0或1的位置
* 如果指定了查询区间,无论查询0或是1,在没查询到的时候只会返回-1。
* 在没有指定查询区间时,查询bit位为1的位置时,如果string中没有该位,则会返回-1,表示未查询到
* @param value 值,false/true,对应0/1
*/
Long bitpos(String key, boolean value, long start, long end);
/**
* 添加指定值到BloomFilter中,返回True表示添加成功,返回False表示filter中已经存在该值
* @param value 值
*/
boolean bloomadd(String key, T value);
/**
* 判断指定值在BloomFilter中是否已经存在,返回True表示存在,返回false表示不存在
* @param value 值
*/
boolean bloomcons(String key, T value);
/********** 一下为分布式锁相关操作 ************/
/**
* 获取分布式锁,返回true表示获取成功
* @param lockKey Key
* @param requestId requestId
* @param expireTime 过期时间,单位为毫秒
*/
boolean getDistributedLock(String lockKey, String requestId, int expireTime);
/**
* 释放分布式锁,返回true表示释放成功
* @param lockKey Key
* @param requestId requestId
*/
boolean releaseDistributedLock(String lockKey, String requestId);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy