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