1. 基本数据类型
1.1 String
命令 | 描述 |
---|---|
SET key value | 设置指定 key 的值 |
GET key | 获取指定 key 的值 |
GETRANGE key start end | 返回 key 中字符串值的子字符 |
GETSET key value | 将给定 key 的值设为 value ,并返回 key 的旧值 ( old value ) |
GETBIT key offset | 对 key 所储存的字符串值,获取指定偏移量上的位 ( bit ) |
MGET key1 [key2…] | 获取所有(一个或多个)给定 key 的值 |
SETBIT key offset value | 对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit) |
SETEX key seconds value | 设置 key 的值为 value 同时将过期时间设为 seconds |
SETNX key value | 只有在 key 不存在时设置 key 的值 |
SETRANGE key offset value | 从偏移量 offset 开始用 value 覆写给定 key 所储存的字符串值 |
STRLEN key | 返回 key 所储存的字符串值的长度 |
MSET key value [ key value…] | 同时设置一个或多个 key-value 对 |
MSETNX key value [ key value…] | 同时设置一个或多个 key-value 对 |
PSETEX key milliseconds value | 以毫秒为单位设置 key 的生存时间 |
INCR key | 将 key 中储存的数字值增一 |
INCRBY key increment | 将 key 所储存的值加上给定的增量值 ( increment ) |
INCRBYFLOAT key increment | 将 key 所储存的值加上给定的浮点增量值 ( increment ) |
DECR key | 将 key 中储存的数字值减一 |
DECRBY key decrement | 将 key 所储存的值减去给定的减量值 ( decrement ) |
APPEND key value | 将 value 追加到 key 原来的值的末尾 |
1.2 Hash
命令 | 描述 |
---|---|
HDEL key field1 [field2] | 删除一个或多个哈希表字段 |
HEXISTS key field | 查看哈希表 key 中,指定的字段是否存在 |
HGET key field | 获取存储在哈希表中指定字段的值 |
HGETALL key | 获取在哈希表中指定 key 的所有字段和值 |
HINCRBY key field increment | 为哈希表 key 中的指定字段的整数值加上增量 increment |
HINCRBYFLOAT key field increment | 为哈希表 key 中的指定字段的浮点数值加上增量 increment |
HKEYS key | 获取所有哈希表中的字段 |
HLEN key | 获取哈希表中字段的数量 |
HMGET key field1 [field2] | 获取所有给定字段的值 |
HMSET key field1 value1 [field2 value2] | 同时将多个 field-value (域-值)对设置到哈希表 key 中 |
HSET key field value | 将哈希表 key 中的字段 field 的值设为 value |
HSETNX key field value | 只有在字段 field 不存在时,设置哈希表字段的值 |
HVALS key | 获取哈希表中所有值 |
HSCAN key cursor [MATCH pattern] [COUNT count] | 迭代哈希表中的键值对 |
HSTRLEN key field | 返回哈希表 key 中, 与给定域 field 相关联的值的字符串长度 |
1.3 List
命令 | 描述 |
---|---|
BLPOP key1 [key2] timeout | 移出并获取列表的第一个元素 |
BRPOP key1 [key2] timeout | 移出并获取列表的最后一个元素 |
BRPOPLPUSH source destination timeout | 从列表中弹出一个值,并将该值插入到另外一个列表中并返回它 |
LINDEX key index | 通过索引获取列表中的元素 |
LINSERT key BEFORE|AFTER pivot value | 在列表的元素前或者后插入元素 |
LLEN key | 获取列表长度 |
LPOP key | 移出并获取列表的第一个元素 |
LPUSH key value1 [value2] | 将一个或多个值插入到列表头部 |
LPUSHX key value | 将一个值插入到已存在的列表头部 |
LRANGE key start stop | 获取列表指定范围内的元素 |
LREM key count value | 移除列表元素 |
LSET key index value | 通过索引设置列表元素的值 |
LTRIM key start stop | 对一个列表进行修剪(trim) |
RPOP key | 移除并获取列表最后一个元素 |
RPOPLPUSH source destination | 移除列表的最后一个元素,并将该元素添加到另一个列表并返回 |
RPUSH key value1 [value2] | 在列表中添加一个或多个值 |
RPUSHX key value | 为已存在的列表添加值 |
1.4 Set
命令 | 描述 |
---|---|
SADD key member1 [member2] | 向集合添加一个或多个成员 |
SCARD key | 获取集合的成员数 |
SDIFF key1 [key2] | 返回给定所有集合的差集 |
SDIFFSTORE destination key1 [key2] | 返回给定所有集合的差集并存储在 destination 中 |
SINTER key1 [key2] | 返回给定所有集合的交集 |
SINTERSTORE destination key1 [key2] | 返回给定所有集合的交集并存储在 destination 中 |
SISMEMBER key member | 判断 member 元素是否是集合 key 的成员 |
SMEMBERS key | 返回集合中的所有成员 |
SMOVE source destination member | 将 member 元素从 source 集合移动到 destination 集合 |
SPOP key | 移除并返回集合中的一个随机元素 |
SRANDMEMBER key [count] | 返回集合中一个或多个随机数 |
SREM key member1 [member2] | 移除集合中一个或多个成员 |
SUNION key1 [key2] | 返回所有给定集合的并集 |
SUNIONSTORE destination key1 [key2] | 所有给定集合的并集存储在 destination 集合中 |
SSCAN key cursor [MATCH pattern] [COUNT count] | 迭代集合中的元素 |
1.5 Sorted Set
2. 特殊数据类型
2.1 GEO
2.1.1 geoadd
语法结构:
GEOADD key longitude latitude member [longitude latitude member ...]
描述:添加指定的地理空间位置,包括经度(longitude)、维度(latitude)、位置名称(member)
示例:
redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
(integer) 2
redis> GEODIST Sicily Palermo Catania
"166274.1516"
redis> GEORADIUS Sicily 15 37 100 km
1) "Catania"
redis> GEORADIUS Sicily 15 37 200 km
1) "Palermo"
2) "Catania"
redis>
2.1.2 geopos
语法格式:
GEOPOS key member [member ...]
描述:获取指定位置的经纬度
示例:
redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
(integer) 2
redis> GEOPOS Sicily Palermo Catania NonExisting
1) 1) "13.36138933897018433"
2) "38.11555639549629859"
2) 1) "15.08726745843887329"
2) "37.50266842333162032"
3) (nil)
redis>
2.1.3 geodist
语法格式:
GEODIST key member1 member2 [m|km|ft|mi]
描述:返回两个位置之间的距离,可设置单位
示例:
redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
(integer) 2
redis> GEODIST Sicily Palermo Catania
"166274.1516"
redis> GEODIST Sicily Palermo Catania km
"166.2742"
redis> GEODIST Sicily Palermo Catania mi
"103.3182"
redis> GEODIST Sicily Foo Bar
(nil)
redis>
2.1.4 georadius
语法格式:
GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
描述:以给定的经纬度为中心,返回指定的范围内的所有元素
参数说明:
- WITHDIST: 在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回
- WITHCOORD: 将位置元素的经度和维度也一并返回
- WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大
- COUNT 限定返回的记录数
- ASC: 查找结果根据距离从近到远排序
- DESC: 查找结果根据从远到近排序
示例:
redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
(integer) 2
redis> GEORADIUS Sicily 15 37 200 km WITHDIST
1) 1) "Palermo"
2) "190.4424"
2) 1) "Catania"
2) "56.4413"
redis> GEORADIUS Sicily 15 37 200 km WITHCOORD
1) 1) "Palermo"
2) 1) "13.36138933897018433"
2) "38.11555639549629859"
2) 1) "Catania"
2) 1) "15.08726745843887329"
2) "37.50266842333162032"
redis> GEORADIUS Sicily 15 37 200 km WITHDIST WITHCOORD
1) 1) "Palermo"
2) "190.4424"
3) 1) "13.36138933897018433"
2) "38.11555639549629859"
2) 1) "Catania"
2) "56.4413"
3) 1) "15.08726745843887329"
2) "37.50266842333162032"
redis>
2.1.5 georadiusbymember
语法格式:
GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
描述:类似于GEORADIUS ,但其中心点由给定的位置名称决定
示例:
redis> GEOADD Sicily 13.583333 37.316667 "Agrigento"
(integer) 1
redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
(integer) 2
redis> GEORADIUSBYMEMBER Sicily Agrigento 100 km
1) "Agrigento"
2) "Palermo"
redis>
2.1.6 geohash
语法格式:
GEOHASH key member [member ...]
描述:用于获取一个或多个元素的 hash 值,值越相似,实际距离越近
示例:
redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
(integer) 2
redis> GEOHASH Sicily Palermo Catania
1) "sqc8b49rny0"
2) "sqdtr74hyu0"
redis>
2.2 HyperLogLog
HyperLogLog 用于做基数的统计,计算基数所需的空间是固定的(2^64)、并且是很小的(12KB)。
HyperLogLog 只会根据输入的元素来计数,而不会存储输入的元素本身,可用于统计访问量等。
方法 | 描述 |
---|---|
pfadd | 添加指定元素到 HyperLogLog 中。 |
pfcount | 返回给定 HyperLogLog 的基数估算值。 |
pfmerge | 将多个 HyperLogLog 合并为一个 HyperLogLog |
2.2.1 pfadd
语法格式:
PFADD key element [element ...]
描述:用于将元素添加到 HyperLogLog 数据结构中
示例:
redis> PFADD rediscomcn "redis"
1) (integer) 1
redis> PFADD rediscomcn "mongodb"
1) (integer) 1
redis> PFADD rediscomcn "mysql"
1) (integer) 1
2.2.2 pfcount
语法格式:
PFCOUNT key [key ...]
描述:返回指定 HyperLogLog 的基数估算值
示例:
redis> PFADD rediscomcn "redis"
1) (integer) 1
redis> PFADD rediscomcn "mongodb"
1) (integer) 1
redis> PFADD rediscomcn "mysql"
1) (integer) 1
redis> PFCOUNT rediscomcn
(integer) 3
2.2.3 pfmerge
语法格式:
PFMERGE destkey sourcekey [sourcekey ...]
描述:将多个 HyperLogLog 合并为一个 HyperLogLog ,合并后的 HyperLogLog 的基数估算值是通过对所有 给定 HyperLogLog 进行并集计算得出的
合并得出的 HyperLogLog 会被储存在
destkey
键里面, 如果该键并不存在, 那么命令在执行之前, 会先为该键创建一个空的 HyperLogLog 。
示例:
redis> PFADD hll1 foo bar zap a
(integer) 1
redis> PFADD hll2 a b c foo
(integer) 1
redis> PFMERGE hll3 hll1 hll2
"OK"
redis> PFCOUNT hll3
(integer) 6
2.3 Bitmaps
2.3.1 bitcount
语法格式:
BITCOUNT key [start end [BYTE|BIT]]
2.3.2 bitfield
语法格式:
BITFIELD key [GET encoding offset] [SET encoding offset value] [INCRBY encoding offset increment] [OVERFLOW WRAP|SAT|FAIL]
描述:将 Redis 字符串视为位数组,并且能够处理不同位宽和任意非(必要)对齐偏移量的特定整数字段
参数:
- GET:返回指定的位域
- SET:设置指定的位域并返回其旧值
- INCRBY:递增或递减(如果给出负递增)指定的位域并返回新值
- OVERFLOW:可通过指定的选项微调递增或递减溢出(或下溢)的行为
- WARP:环绕,包括有符号和无符号整数
- SAT:使用饱和算法,即下溢时设置为最小整数值,溢出时设置为最大整数值
- FAIL:在此模式下,不会对检测到的上溢或下溢执行任何操作
示例:
> 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
2.3.3 bitfield_ro
语法格式:
BITFIELD_RO key GET encoding offset
描述:bitfield 的只读变体
返回值:一个数组,每个条目都是在相同位置给出的子命令的相应结果
示例:
BITFIELD_RO hello GET i8 16
2.3.4 bitop
语法格式:
BITOP operation destkey key [key ...]
描述:在多个键(包含字符串值)之间执行按位运算并将结果存储在目标键中
示例:
redis> SET key1 "foobar"
"OK"
redis> SET key2 "abcdef"
"OK"
redis> BITOP AND dest key1 key2
(integer) 6
redis> GET dest
"`bc`ab"
2.3.5 bitpos
语法格式:
BITPOS key bit [start [end [BYTE|BIT]]]
描述:返回字符串中设置为 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> BITPOS mykey 1 2 -1 BYTE
ERR ERR syntax error
redis> BITPOS mykey 1 7 15 BIT
ERR ERR syntax error
redis> set mykey "\x00\x00\x00"
"OK"
redis> BITPOS mykey 1
(integer) -1
redis> BITPOS mykey 1 7 -3 BIT
ERR ERR syntax error
2.3.6 getbit
语法格式:
GETBIT key offset
描述:返回存储在key的字符串值中offset处的位值
示例:
redis> SETBIT mykey 7 1
(integer) 0
redis> GETBIT mykey 0
(integer) 0
redis> GETBIT mykey 7
(integer) 1
redis> GETBIT mykey 100
(integer) 0
2.3.7 setbit
语法格式:
SETBIT key offset value
描述:设置或清除存储在key的字符串值中offset处的位,当键不存在时,会创建一个新的字符串值
示例:
redis> SETBIT mykey 7 1
(integer) 0
redis> SETBIT mykey 7 0
(integer) 1
redis> GET mykey
"\u0000"
Redis 5.0 之后引入了一个重要的消息队列 Redis Stream !