redis储存的字符串都是以二进制的形式存在!
| 命令 | 操作 | 返回值 |
|---|---|---|
| set(K key, V value) | void | |
| set(K key, V value, long timeout, TimeUnit unit) | 过期时间,TimeUnit时间格式 | void |
| set(K key, V value, Duration timeout) | Duration过期时间 | void |
| setIfAbsent(K key, V value) | 如果不存在则设置【setnx】 | Boolean |
| setIfAbsent(K key, V value, long timeout, TimeUnit unit) | Boolean | |
| setIfAbsent(K key, V value, Duration timeout) | Boolean | |
| setIfPresent(K key, V value) | 如果存在则设置【setex】 | Boolean |
| setIfPresent(K key, V value, long timeout, TimeUnit unit) | Boolean | |
| setIfPresent(K key, V value, Duration timeout) | Boolean | |
| multiSet(Map<? extends K, ? extends V> map) | 设置多个键值对【mset】 | void |
| multiSetIfAbsent(Map<? extends K, ? extends V> map) | 如果不存在则设置多个键值对 | Boolean |
| get(Object key) | 获取 | Object V |
| getAndSet(K key, V value) | 获取原值同时设置新值【getset】 | Object V |
| multiGet(Collection<K> keys) | 获取集合【mget】 | List<V> |
| increment(K key) | 自增操作(键不存在则创建并按照初始值0自增)【incr】 | Long |
| increment(K key, long delta) | 增加数操作【incrby】 | Long |
| increment(K key, double delta) | 增加浮点数【incrbyfloat】 | Double |
| decrement(K key) | 自减【decr】 | Long |
| decrement(K key, long delta) | 减去操作【decrby】 | Long |
| append(K key, String value) | 追加值【append】 | Integer |
| get(K key, long start, long end) | 获取指定位置的字符【getrange】 | String |
| set(K key, V value, long offset) | 设置指定位置的字符(覆盖后面的长度)【setrange】 | void |
| size(K key) | 值长度【strlen】 | Long |
| setBit(K key, long offset, boolean value) | 设置或者清除指定位置的值(二进制)【setbit】 | Boolean |
| getBit(K key, long offset) | 获取比特位的值 | Boolean |
| bitField(K key, BitFieldSubCommands subCommands) | 见下方说明 | List<Long> |
| getOperations() | RedisOperations<K, V> |
setBit和getBit都是对二进制进行操作。因为redis储存的字符串都是以二进制的形式存在,所以这里是设置二进制偏移位置上的值,将其设置为0或1

二进制数系统中,每个0或1就是一个比特位(bit),位是数据存储的最小单位
比如字符‘a’的ASII码是97,转换为二进制是01100001
二进制数的一位所包含的信息就是一比特,如二进制数0100就是4比特
字符-字节-比特,每个字符根据编码占用字节不同,8比特(bit)为1字节
BITFIELD 该命令将 Redis 字符串视为一个位数组,并且能够处理具有不同位宽和任意非(必要)对齐偏移量的特定整数字段。实际上,使用此命令可以将位偏移量为1234的带符号5位整数设置为特定值,从偏移量4567中检索31位无符号整数。
BITFIELD 能够在同一个命令调用中使用多位字段。它需要执行一系列操作,并返回一个响应数组,其中每个数组都与参数列表中的相应操作相匹配。
以下命令将位偏移量为100的8位有符号整数加1,并在位偏移量0处获取4位无符号整数的值
> BITFIELD mykey INCRBY i5 100 1 GET u4 0
1) (integer) 1
2) (integer) 0
支持的子命令和整数类型
还有一个子命令通过设置溢出行为来改变连续的 INCRBY子 命令调用的行为:
> BITFIELD mykey incrby u2 100 1 OVERFLOW SAT incrby u2 102 1
1) (integer) 1
2) (integer) 1
> BITFIELD mykey incrby u2 100 1 OVERFLOW SAT incrby u2 102 1
1) (integer) 2
2) (integer) 2
> BITFIELD mykey incrby u2 100 1 OVERFLOW SAT incrby u2 102 1
1) (integer) 3
2) (integer) 3
> BITFIELD mykey incrby u2 100 1 OVERFLOW SAT incrby u2 102 1
1) (integer) 0
2) (integer) 3原文:https://www.cnblogs.com/meijsuger/p/12038560.html