简介
Redis的Bitmap不是一个独立的数据结构类型,而是基于字符串(String)类型实现的一种功能 ,存储的是二进制的文件,布隆过滤器就是基于BitMap实现的。
语句的使用
新增操作
setbit key offset value
offset的首位从0开始。
value只能为 0或1。
返回的值为原先位置上的值。
如果继续将相同位置上的值修改为1的话,就会返回1。
查询操作
bitfield key encoding offset
encoding就是指定返回结果的编码: u num (表示为无符号并且展示num位), i num(表示为有符号并且展示num位)
其中有符号的时候,会先去判断首位是否为1,如果为1的话就表示为负数,后几位就是取反码,然后再计算二进制。
API的使用
引入redisTemplate的依赖。
<!--redis服务器启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
新增操作
@Autowired
StringRedisTemplate redisTemplate;
@Test
public void RedisTest() {
//新增操作, offset为开始的位置(从0开始),value使用 true/false 表示 1/0
Boolean testbit = redisTemplate.opsForValue().setBit("testbit", 1, true);
System.out.println(testbit);
}
结果为下:
查询操作
@Test
public void RedisTest1() {
//查询操作
//使用BitFieldSubCommands。create()进行操作
//BitFieldSubCommands.BitFieldType.unsigned(3) 设置为无符号, 取 3位
//valueAt(0) 从0开始
List<Long> testbit = redisTemplate.opsForValue().bitField("testbit",
BitFieldSubCommands.create().get(BitFieldSubCommands.BitFieldType.unsigned(3)).valueAt(0));
System.out.println(testbit.get(0));
}
结果为下: