非常教程

Redis参考手册

字符串 | Strings

bitpos

BITPOS key bit [start] [end]

自2.8.7起可用。

时间复杂度: O(N)

将字符串中第一位的位置设置为1或0。

返回该位置,将字符串视为从左到右的位数组,其中第一个字节的最高有效位位于位置0,第二个字节的最高有效位位于位置8,等等。

GETBIT 和 SETBIT后面跟着相同的位位置约定。

默认情况下,检查字符串中包含的所有字节。可以仅在指定的时间间隔内查找位,并传递额外的参数 start end(可能只是传递start,操作会假定 end 是字符串的最后一个字节,但是存在语义差异后来)。的范围内被解释为范围的字节,而不是一比特的,所以start=0end=2装置看的前三个字节。

请注意,即使在使用开始结束来指定范围时,位位置也始终以从零位开始的绝对值的形式返回。

与 GETRANGE 命令类似,开始和结束可以包含负值,以便从字符串的末尾开始索引字节,其中-1是最后一个字节,-2是倒数第二个字符,等等。

不存在的键被视为空字符串。

返回值

整数回复

该命令根据请求返回第一位设置为1或0的位置。

如果我们查找设置位(位参数为1)并且字符串为空或仅由零字节组成,则返回-1。

如果我们查找清零位(位参数为0)并且该字符串仅包含位设为1,则函数返回第一位,而不是右侧字符串的一部分。因此,如果字符串是三个字节设置为该值,0xff该命令BITPOS key 0将返回24,因为直到位23,所有的位都是1。

基本上,函数认为字符串的权利,与你寻找明确位,没有指定范围或补零开始的说法

但是,如果您正在查找清除位并指定具有开始结束的范围,则此行为会发生变化。如果在指定范围内未找到清除位,则该函数返回-1,因为用户指定了一个清除范围,并且该范围内没有0位。

例子

redis> SET mykey "\xff\xf0\x00" "OK" redis> BITPOS mykey 0 (integer) 12 redis> SET mykey "\x00\xff\xf0" "OK" redis> BITPOS mykey 1 0 (integer) 8 redis> BITPOS mykey 1 2 (integer) 16 redis> set mykey "\x00\x00\x00" "OK" redis> BITPOS mykey 1 (integer) -1

Redis

Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。 它通常被称为数据结构服务器,因为值( value )可以是 字符串( String ), 哈希(Map),列表(list),集合( sets ) 和 有序集合( sorted sets )等类型。

主页 https://redis.io/
源码 https://github.com/antirez/redis
发布版本 4.0.2

Redis目录

1.集合 | Cluster
2.连接 | Connection
3.Geo
4.Hashes
5.HyperLogLog
6.键 | Keys
7.列表 | Lists
8.Pub/Sub
9.脚本 | Scripting
10.服务器 | Server
11.设定 | Sets
12.排序集 | Sorted Sets
13.字符串 | Strings
14.事务 | Transactions
15.Redis Dump 命令
16.Redis DEL 命令
17.Redis 键(key)
18.Redis 命令
19.Redis 配置
20.Redis 简介
21.Redis RANDOMKEY 命令
22.Redis TTL 命令
23.Redis Pttl 命令
24.Redis PERSIST 命令
25.Redis Move 命令
26.Redis PEXPIREAT 命令
27.Redis Keys 命令
28.Redis Expireat 命令
29.Redis Expire 命令
30.Redis EXISTS 命令
31.Redis Mget 命令
32.Redis Getbit 命令
33.Redis Getset 命令
34.Redis Getrange 命令
35.Redis Get 命令
36.Redis SET 命令
37.Redis 字符串(String)
38.Redis Type 命令
39.Redis Renamenx 命令
40.Redis Rename 命令
41.Redis Incrby 命令
42.Redis Incr 命令
43.Redis Psetex 命令
44.Redis Msetnx 命令
45.Redis Mset 命令
46.Redis Strlen 命令
47.Redis Setrange 命令
48.Redis Setnx 命令
49.Redis Setex 命令
50.Redis Setbit 命令
51.Redis Hincrby 命令
52.Redis Hgetall 命令
53.Redis Hget 命令
54.Redis Hexists 命令
55.Redis Hdel 命令
56.Redis 哈希(Hash)
57.Redis Append 命令
58.Redis Decrby 命令
59.Redis Decr 命令
60.Redis Incrbyfloat 命令
61.Redis Blpop 命令
62.Redis 列表(List)
63.Redis Hvals 命令
64.Redis Hsetnx 命令
65.Redis Hset 命令
66.Redis Hmset 命令
67.Redis Hmget 命令
68.Redis Hlen 命令
69.Redis Hkeys 命令
70.Redis Hincrbyfloat 命令
71.Redis Lrem 命令
72.Redis Lrange 命令
73.Redis Lpushx 命令
74.Redis Lpush 命令
75.Redis Lpop 命令
76.Redis Llen 命令
77.Redis Linsert 命令
78.Redis Lindex 命令
79.Redis Brpoplpush 命令
80.Redis Brpop 命令
81.Redis Sdiff 命令
82.Redis Scard 命令
83.Redis Sadd 命令
84.Redis 集合(Set)
85.Redis Rpushx 命令
86.Redis Rpush 命令
87.Redis Rpoplpush 命令
88.Redis Rpop 命令
89.Redis Ltrim 命令
90.Redis Lset 命令
91.Redis Sunion 命令
92.Redis Srem 命令
93.Redis Srandmember 命令
94.Redis Spop 命令
95.Redis Smove 命令
96.Redis Smembers 命令
97.Redis Sismember 命令
98.Redis Sinterstore 命令
99.Redis Sinter 命令
100.Redis Sdiffstore 命令