目录
GEOHASH (返回一个或多个位置对象的 geohash 值)
GEORADIUS (根据用户给定的经纬度坐标来获取指定范围内的地理位置集合)
GEORADIUSBYMEMBER (在距离给定元素 radius 距离的圆中查找元素)
Redis客户端命令对应的RedisTemplate中的方法列表
Redis 常用命令集
string类型
普通的字符串类型,表示一个简单值.
下表列出了常用的 redis 字符串命令:
序号 | 命令 | 描述 |
---|---|---|
1 | set key value | 设置指定 key 的值 |
2 | get key | 获取指定 key 的值。 |
3 | getrange key start end | 返回 key 中字符串值的子字符 |
4 | getset key value | 将给定 key 的值设为 value ,并返回 key 的旧值(old value)。 |
5 | getbit key offset | 对 key 所储存的字符串值,获取指定偏移量上的位(bit)。 |
6 | mget key1 [key2..] | 获取所有(一个或多个)给定 key 的值。 |
7 | setbit key offset value | 对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。 |
8 | setex key seconds value | 将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。 |
9 | setnx key value | 只有在 key 不存在时设置 key 的值。 |
10 | setrange key offset value | 用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。 |
11 | strlen key | 返回 key 所储存的字符串值的长度。 |
12 | mset key value [key value ...] | 同时设置一个或多个 key-value 对。 |
13 | msetnx key value [key value ...] | 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。 |
14 | psetex key milliseconds value | 这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位。 |
15 | incr key | 将 key 中储存的数字值增一。 |
16 | incrby key increment | 将 key 所储存的值加上给定的增量值(increment) 。 |
17 | incrbyfloat key increment | 将 key 所储存的值加上给定的浮点增量值(increment) 。 |
18 | decr key | 将 key 中储存的数字值减一。 |
19 | decrby key decrement | key 所储存的值减去给定的减量值(decrement) 。 |
20 | append key value | 如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。 |
21 | ttl key |
可以查询出当前的key还剩余多长时间过期 |
22 | del key [key ...] | 删除一个key |
23 | expire key seconds | 设置一个key的过期时间(秒) |
hash类型
hash类型 / hash对象,其实就是Map类型,其内部又可以有多个键值对,可以用于存储对象
下表列出了 redis hash 基本的相关命令:
序号 | 命令 | 描述 |
---|---|---|
1 | hdel key field1 [field2] | 删除一个或多个哈希表字段 |
2 | hexists key field | 查看哈希表 key 中,指定的字段是否存在。 |
3 | hget key field | 获取存储在哈希表中指定字段的值 |
4 | hgetall key | 获取在哈希表中指定 key 的所有字段和值 |
5 | hincrby key field increment | 为哈希表 key 中的指定字段的整数值加上增量 increment 。 |
6 | hincrbyfloat key field increment | 为哈希表 key 中的指定字段的浮点数值加上增量 increment 。 |
7 | hkeys key | 获取所有哈希表中的字段 |
8 | hlen key | 获取哈希表中字段的数量 |
9 | hmget key field1 [field2] | 获取所有给定字段的值 |
10 | hmset key field1 value1 [field2 value2 ] | 同时将多个 field-value (域-值)对设置到哈希表 key 中。 |
11 | hset key field value | 将哈希表 key 中的字段 field 的值设为 value 。 |
12 | hsetnx key field value | 只有在字段 field 不存在时,设置哈希表字段的值。 |
13 | hvals key | 获取哈希表中所有值 |
14 | hscan key cursor [MATCH pattern] [COUNT count] | 迭代哈希表中的键值对。 |
list类型
list类型更多的倾向队列,能直接操作首尾元素
下表列出了列表相关的基本命令:
序号 | 命令 | 描述 |
---|---|---|
1 | blpop key1 [key2 ] timeout | 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 |
2 | brpop key1 [key2 ] timeout | 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 |
3 | brpoplpush source destination timeout | 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 |
4 | lindex key index | 通过索引获取列表中的元素 |
5 | linsert key BEFORE|AFTER pivot value | 在列表的元素前或者后插入元素 |
6 | llen key | 获取列表长度 |
7 | lpop key | 移出并获取列表的第一个元素 |
8 | lpush key value1 [value2] | 将一个或多个值插入到列表头部 |
9 | lpushx key value | 将一个或多个值插入到已存在的列表头部 |
10 | lrange key start stop | 获取列表指定范围内的元素 |
11 | lrem key count value | 移除列表元素 |
12 | lset key index value | 通过索引设置列表元素的值 |
13 | ltrim key start stop | 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。 |
14 | rpop key | 移除并获取列表最后一个元素 |
15 | rpoplpush source destination | 移除列表的最后一个元素,并将该元素添加到另一个列表并返回 |
16 | rpush key value1 [value2] | 在列表中添加一个或多个值 |
17 | rpushx key value | 为已存在的列表添加值 |
set类型
跟Java中的set集合性质一样,底层使用哈希表实现的,存入的元素是无序不可重复的,我们可以通过Redis提供的命令来取交集,并集,差集
下表列出了 Redis 集合基本命令:
序号 | 命令 | 描述 |
---|---|---|
1 | sadd key member1 [member2] | 向集合添加一个或多个成员 |
2 | scard key | 获取集合的成员数 |
3 | sdiff key1 [key2] | 返回给定所有集合的差集 |
4 | sdiffstore destination key1 [key2] | 返回给定所有集合的差集并存储在 destination 中 |
5 | sinter key1 [key2] | 返回给定所有集合的交集 |
6 | sinterstore destination key1 [key2] | 返回给定所有集合的交集并存储在 destination 中 |
7 | sismember key member | 判断 member 元素是否是集合 key 的成员 |
8 | smembers key | 返回集合中的所有成员 |
9 | smove source destination member | 将 member 元素从 source 集合移动到 destination 集合 |
10 | spop key | 移除并返回集合中的一个随机元素 |
11 | srandmember key [count] | 返回集合中一个或多个随机数 |
12 | srem key member1 [member2] | 移除集合中一个或多个成员 |
13 | sunion key1 [key2] | 返回所有给定集合的并集 |
14 | sunionstore destination key1 [key2] | 所有给定集合的并集存储在 destination 集合中 |
15 | sscan key cursor [MATCH pattern] [COUNT count] | 迭代集合中的元素 |
zset类型
Redis 有序集合是通过哈希表实现的, 每个元素都会关联一个double类型的分数, 成员是唯一的, 但分数可以重复.redis 正是通过分数来为集合中的成员从小到大来排序.
下表列出了 redis 有序集合的基本命令:
序号 | 命令 | 描述 |
---|---|---|
1 | zadd key score1 member1 [score2 member2] | 向有序集合添加一个或多个成员,或者更新已存在成员的分数 |
2 | zcard key | 获取有序集合的成员数 |
3 | zcount key min max | 计算在有序集合中指定区间分数的成员数 |
4 | zincrby key increment member | 有序集合中对指定成员的分数加上增量 increment |
5 | zinterstore destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX] |
计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中 |
6 | zlexcount key min max | 在有序集合中计算指定字典区间内成员数量 |
7 | zrange key start stop [WITHSCORES] | 通过索引区间返回有序集合成指定区间内的成员 |
8 | zrangebylex key min max [LIMIT offset count] | 通过字典区间返回有序集合的成员 |
9 | zrangebyscore key min max [WITHSCORES] [LIMIT] | 通过分数返回有序集合指定区间内的成员 |
10 | zrank key member | 返回有序集合中指定成员的索引 |
11 | zrem key member [member ...] | 移除有序集合中的一个或多个成员 |
12 | zremrangebylex key min max | 移除有序集合中给定的字典区间的所有成员 |
13 | zremrangebyrank key start stop | 移除有序集合中给定的排名区间的所有成员 |
14 | zremrangebyscore key min max | 移除有序集合中给定的分数区间的所有成员 |
15 | zrevrange key start stop [WITHSCORES] | 返回有序集中指定区间内的成员,通过索引,分数从高到底 |
16 | zrevrangebyscore key max min [WITHSCORES] | 返回有序集中指定分数区间内的成员,分数从高到低排序 |
17 | zrevrank key member | 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序 |
18 | zscore key member | 返回有序集中,成员的分数值 |
19 | zunionstore destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX] |
计算给定的一个或多个有序集的并集,并存储在新的 key 中 |
20 | zscan key cursor [MATCH pattern] [COUNT count] | 迭代有序集合中的元素(包括元素成员和元素分值) |
注:
- destination:新的有序集的名称
- numkeys:需要计算的有序集的数量
- key:需要计算的有序集的名称
- WEIGHTS:权重参数,用于对每个有序集进行加权。默认权重为1。
- AGGREGATE:聚合参数,用于确定计算并集时使用的聚合函数。默认为SUM。
bitmap 类型
Redis 的 Bitmap(位图)是一种特殊的字符串数据类型,它利用字符串类型键(key)来存储一系列连续的二进制位(bits),每个位可以独立地表示一个布尔值(0 或 1)。这种数据结构非常适合用于存储和操作大量二值状态的数据,尤其在需要高效空间利用率和特定位操作场景中表现出色。
下表列出了 redis 位图的基本命令:
序号 | 命令 | 描述 |
---|---|---|
1 | setbit key offset value |
设置或清除指定偏移量上的位(bit)。offset 是从0开始的位索引,value 可以为 0 或 1。 |
2 | getbit key offset |
返回指定偏移量上的位值。 |
3 | bitcount key [start end] |
计算键内指定范围内(或整个键)为 1 的位的数量。 |
4 | bitop operation destkey key [key ...] |
对一个或多个键执行位操作,并将结果保存到 destkey 。支持的操作包括 AND、OR、XOR、NOT。 |
5 | bitpos key bit [start] [end] |
查找指定键内第一个值为 bit (0 或 1)的位的偏移量,可指定范围。 |
geo 类型
获取某个位置的经纬度信息
常用命令
- GEOADD: 用于添加一个或多个地理位置到指定的键中。每个位置由其经度、纬度和一个关联的成员(如地点名称)定义。
GEOPOS
: 根据成员查询并返回一个或多个地理位置的坐标。- GEOHASH: 将地理位置的坐标转化为一个唯一的字符串编码(GeoHash),这有助于快速索引和查询。
GEODIST
: 计算两个地理位置之间的距离,可选的距离单位有m(米)、km(千米)、mi(英里)、ft(英尺)。- GEORADIUS: 查询指定位置周围的地点,基于给定的最大距离(半径)。
- GEORADIUSBYMEMBER: 类似于GEORADIUS,但不是基于坐标而是基于集合中的一个成员来执行查询。
- GEODEL:删除给定位置上的元素
GEOADD (添加地理位置的坐标)
说明:
geoadd 用于存储指定的地理空间位置,可以将一个或多个经度(longitude)、纬度(latitude)、位置名称(member)添加到指定的 key 中
语法:
GEOADD key longitude latitude member [longitude latitude member ...]
参数说明
- key:要添加点的键值。
- longitude:要添加点的经度。
- latitude:要添加点的纬度。
- member:要添加点的成员属性,可以根据需要进行设置。
GEOPOS (获取地理位置的坐标)
说明:
GEOPOS命令用于获取一个或多个点的经纬度坐标。
语法:
GEOPOS key member [member ...]
参数说明
- key:要获取点的键值。
- member:要获取点的成员属性,可以根据需要进行设置。
GEODIST (计算两个位置之间的距离)
说明:
GEODIST命令用于计算两个给定位置之间的距离,以双精度浮点数的形式返回。
语法:
GEODIST key member1 member2 [unit]
参数说明
- key:可以是一个键值,但该参数不是必需的。
- member1:要计算距离的位置1的成员属性。
- member2:要计算距离的位置2的成员属性。
- unit:可以指定返回的距离单位,可以是m(米)、km(千米)、mi(英里)或ft(英尺)。
GEOHASH (返回一个或多个位置对象的 geohash 值)
说明:
Redis GEO 使用 GEOHASH 来保存地理位置的坐标。GEOHASH 用于获取一个或多个位置元素的 GEOHASH 值。
语法:
GEOHASH key member [member ...]
参数说明
- key:可以是一个键值,但该参数不是必需的。
- member1:要计算距离的位置1的成员属性。
- member2:要计算距离的位置2的成员属性。
GEORADIUS (根据用户给定的经纬度坐标来获取指定范围内的地理位置集合)
说明:
根据用户给定的经纬度坐标来获取指定范围内的地理位置集合。
语法:
GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC]
参数说明
- key:要查找的点的键值。
- longitude:要查找的点的经度。
- latitude:要查找的点的纬度。
- radius:可以设置半径的大小,后面需要指定单位,如m、km、ft或mi。
- [WITHCOORD]:如果需要,可以使用WITHCOORD选项来返回包含距离计算的点的经纬度坐标。
- [WITHDIST]:如果需要,可以使用WITHDIST选项来返回包含距离计算的点的距离。
- [WITHHASH]:如果需要,可以使用WITHHASH选项来返回包含距离计算的点的哈希值。
- [COUNT count]:如果需要,可以使用COUNT count选项来指定返回的距离计算的点的数量。
- [ASC]:如果需要,可以使用ASC选项来指定按距离升序排列返回的距离计算的点。
GEORADIUSBYMEMBER (在距离给定元素 radius 距离的圆中查找元素)
说明:
GEORADIUSBYMEMBER命令用于计算给定成员属性在指定半径范围内的其他点的距离和坐标。
语法:
GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DES]
参数说明
- key:要查找的点的键值。
- member:要查找的点的成员属性。
- radius:可以设置半径的大小,后面需要指定单位,如m、km、ft或mi。
- [WITHCOORD]:如果需要,可以使用WITHCOORD选项来返回包含距离计算的点的经纬度坐标。
- [WITHDIST]:如果需要,可以使用WITHDIST选项来返回包含距离计算的点的距离。
- [WITHHASH]:如果需要,可以使用WITHHASH选项来返回包含距离计算的点的哈希值。
- [COUNT count]:如果需要,可以使用COUNT count选项来指定返回的距离计算的点的数量。
- [ASC|DES:如果需要,可以使用ASC选项来指定按距离升序排列返回的距离计算的点,或者使用DES选项来指定按距离降序排列返回的距离计算的点。
Redis客户端命令对应的RedisTemplate中的方法列表
String结构 |
|
Redis |
RedisTemplate rt |
set key value |
rt.opsForValue().set("key","value") |
get key |
rt.opsForValue().get("key") |
del key |
rt.delete("key") |
strlen key |
rt.opsForValue().size("key") |
getset key value |
rt.opsForValue().getAndSet("key","value") |
getrange key start end |
rt.opsForValue().get("key",start,end) |
append key value |
rt.opsForValue().append("key","value") |
Hash结构 |
|
hmset key field1 value1 field2 value2... |
rt.opsForHash().putAll("key",map) //map是一个集合对象 |
hset key field value |
rt.opsForHash().put("key","field","value") |
hexists key field |
rt.opsForHash().hasKey("key","field") |
hgetall key |
rt.opsForHash().entries("key") //返回Map对象 |
hvals key |
rt.opsForHash().values("key") //返回List对象 |
hkeys key |
rt.opsForHash().keys("key") //返回List对象 |
hmget key field1 field2... |
rt.opsForHash().multiGet("key",keyList) |
hsetnx key field value |
rt.opsForHash().putIfAbsent("key","field","value" |
hdel key field1 field2 |
rt.opsForHash().delete("key","field1","field2") |
hget key field |
rt.opsForHash().get("key","field") |
List结构 |
|
lpush list node1 node2 node3... |
rt.opsForList().leftPush("list","node") |
rt.opsForList().leftPushAll("list",list) //list是集合对象 |
|
rpush list node1 node2 node3... |
rt.opsForList().rightPush("list","node") |
rt.opsForList().rightPushAll("list",list) //list是集合对象 |
|
lindex key index |
rt.opsForList().index("list", index) |
llen key |
rt.opsForList().size("key") |
lpop key |
rt.opsForList().leftPop("key") |
rpop key |
rt.opsForList().rightPop("key") |
lpushx list node |
rt.opsForList().leftPushIfPresent("list","node") |
rpushx list node |
rt.opsForList().rightPushIfPresent("list","node") |
lrange list start end |
rt.opsForList().range("list",start,end) |
lrem list count value |
rt.opsForList().remove("list",count,"value") |
lset key index value |
rt.opsForList().set("list",index,"value") |
Set结构 |
|
sadd key member1 member2... |
rt.boundSetOps("key").add("member1","member2",...) |
rt.opsForSet().add("key", set) //set是一个集合对象 |
|
scard key |
rt.opsForSet().size("key") |
sidff key1 key2 |
rt.opsForSet().difference("key1","key2") //返回一个集合对象 |
sinter key1 key2 |
rt.opsForSet().intersect("key1","key2")//同上 |
sunion key1 key2 |
rt.opsForSet().union("key1","key2")//同上 |
sdiffstore des key1 key2 |
rt.opsForSet().differenceAndStore("key1","key2","des") |
sinter des key1 key2 |
rt.opsForSet().intersectAndStore("key1","key2","des") |
sunionstore des key1 key2 |
rt.opsForSet().unionAndStore("key1","key2","des") |
sismember key member |
rt.opsForSet().isMember("key","member") |
smembers key |
rt.opsForSet().members("key") |
spop key |
rt.opsForSet().pop("key") |
srandmember key count |
rt.opsForSet().randomMember("key",count) |
srem key member1 member2... |
rt.opsForSet().remove("key","member1","member2",...) |
ZSet 结构 | |
zadd key num name |
rt.opsForZSet().add(key, value, score) |
zrange key start end |
rt.opsForZSet().range(key, start, end) |
zrangebyscore key min max [withscores] |
rt.opsForZSet().rangeByScore(key, min, max) |
zrevrange key start end |
rt.opsForZSet().reverseRange(key, start, end) |
zrevrangebyscore key max min [withscores] |
rt.opsForZSet().reverseRangeByScore(key, min, max) |
zincrby key num name |
rt.opsForZSet().incrementScore(key, value, delta) |
zrank key name |
rt.opsForZSet().rank(key, value) |
zrevrank key name |
rt.opsForZSet().reverseRank(key, value) |
zrem key name |
rt.opsForZSet().remove(key, values...) |
zscore key member |
rt.opsForZSet().score(key, value) |