类 RedisBitMapUtils
Description: Redis BitMap 工具类
· Redis的Bitmaps这个“数据结构”可以实现对位的操作。Bitmaps本身不是一种数据结构,实际上就是字符串,但是它可以对字符串的位进行操作 · 可把Bitmaps想象成一个以位为单位数组,数组中的每个单元只能存0或者1,数组的下标在bitmaps中叫做偏移量 · 单个bitmaps的最大长度是512MB,即2^32个比特位
bitmaps的最大优势是节省存储空间。比如在一个以自增id代表不同用户的系统中,我们只需要512MB空间就可以记录40亿用户的某个单一信息,相比mysql节省了大量的空间
· 有两种类型的位操作:一类是对特定bit位的操作,比如设置/获取某个特定比特位的值。另一类是批量bit位操作,例如在给定范围内统计为1的比特位个数
1.1 优点:
节省空间:通过一个bit位来表示某个元素对应的值或者状态,其中key就是对应元素的值。实际上8个bit可以组成一个Byte,所以是及其节省空间的。
效率高:setbit和getbit的时间复杂度都是O(1),其他位运算效率也高。
1.2 缺点: 本质上位只有0和1的区别,所以用位做业务数据记录,就不需要在意value的值。
-
构造器概要
构造器 -
方法概要
修饰符和类型方法说明static Long统计对应的bitmap上value为1的数量static Long统计指定范围中value为1的数量static LongbitOp(org.springframework.data.redis.connection.RedisStringCommands.BitOperation op, String saveKey, String... destKey) 对一个或多个保存二进制的字符串key进行元操作,并将结果保存到saveKey上。static LongbitOpResult(org.springframework.data.redis.connection.RedisStringCommands.BitOperation op, String saveKey, String... destKey) 对一个或多个保存二进制的字符串key进行元操作,并将结果保存到saveKey上,并返回统计之后的结果。static Boolean获取指定 offset 偏移量的值;static boolean查询与指定 param 对应二进制位的值,会经过hash计算进行存储。static Boolean将指定offset偏移量的值设置为1;static Boolean设置与 param 对应的二进制位的值,会经过hash计算进行存储。voidsetStringRedisTemplate(org.springframework.data.redis.core.StringRedisTemplate stringRedisTemplate)
-
构造器详细资料
-
RedisBitMapUtils
public RedisBitMapUtils()
-
-
方法详细资料
-
setBit
设置与 param 对应的二进制位的值,会经过hash计算进行存储。- 参数:
key- bitmap数据结构的keyparam- 要设置偏移的key,该key会经过hash运算。value- true:即该位设置为1,否则设置为0- 返回:
- 返回设置该value之前的值。
-
getBit
查询与指定 param 对应二进制位的值,会经过hash计算进行存储。- 参数:
key- bitmap结构的keyparam- 要移除偏移的key,该key会经过hash运算。- 返回:
- 若偏移位上的值为1,那么返回true。
-
setBit
将指定offset偏移量的值设置为1;- 参数:
key- bitmap结构的keyoffset- 指定的偏移量。value- true:即该位设置为1,否则设置为0- 返回:
- 返回设置该value之前的值。
-
getBit
获取指定 offset 偏移量的值;- 参数:
key- bitmap结构的keyoffset- 指定的偏移量。- 返回:
- 若偏移位上的值为 1,那么返回true。
-
bitCount
统计对应的bitmap上value为1的数量- 参数:
key- bitmap的key- 返回:
- value等于1的数量
-
bitCount
统计指定范围中value为1的数量- 参数:
key- bitMap中的keystart- 该参数的单位是byte(1byte=8bit),setBit(key,7,true);进行存储时,单位是bit。那么只需要统计[0,1]便可以统计到上述set的值。end- 该参数的单位是byte。- 返回:
- 在指定范围[start*8,end*8]内所有value=1的数量
-
bitOp
public static Long bitOp(org.springframework.data.redis.connection.RedisStringCommands.BitOperation op, String saveKey, String... destKey) 对一个或多个保存二进制的字符串key进行元操作,并将结果保存到saveKey上。bitop and saveKey key [key...],对一个或多个key逻辑并,结果保存到saveKey。 bitop or saveKey key [key...],对一个或多个key逻辑或,结果保存到saveKey。 bitop xor saveKey key [key...],对一个或多个key逻辑异或,结果保存到saveKey。 bitop xor saveKey key,对一个或多个key逻辑非,结果保存到saveKey。
- 参数:
op- 元操作类型;saveKey- 元操作后将结果保存到saveKey所在的结构中。destKey- 需要进行元操作的类型。- 返回:
- 1:返回元操作值。
-
bitOpResult
public static Long bitOpResult(org.springframework.data.redis.connection.RedisStringCommands.BitOperation op, String saveKey, String... destKey) 对一个或多个保存二进制的字符串key进行元操作,并将结果保存到saveKey上,并返回统计之后的结果。- 参数:
op- 元操作类型;saveKey- 元操作后将结果保存到saveKey所在的结构中。destKey- 需要进行元操作的类型。- 返回:
- 返回saveKey结构上value=1的所有数量值。
-
setStringRedisTemplate
@Autowired @Qualifier("stringRedisTemplate") public void setStringRedisTemplate(org.springframework.data.redis.core.StringRedisTemplate stringRedisTemplate)
-