Redis数据类型:Hashes、Geo操作指令
Hashes常用操作指令
Redis Hashes是一个键值对的映射表,最对能存储2^32-1(约40亿)个键值对。
HSET HGET
HSET:将键值对存储到哈希表中,如果哈希表不存在,新建一个然后在将键值对存储进去。
HGET: 根据Key值获取value。
127.0.0.1:6379> ZADD sortset 1 name
(integer) 1
127.0.0.1:6379> HSET myhash name zhangsan
(integer) 1
127.0.0.1:6379> HGET myhash name
"zhangsan"
HDEL
删除哈希表的指定Key 和Vlaue 键值对,成功返回1,Key值不存在返回0.
127.0.0.1:6379> HDEL myhash name
(integer) 1
127.0.0.1:6379> HDEL mysha name2
(integer) 0
HEXISTS
判断是否存在Key。成功返回1,不存在返回0。
127.0.0.1:6379> HEXISTS myhash age
(integer) 1
127.0.0.1:6379> HEXISTS myhash name
(integer) 0
HGETALL
返回哈希表中所有的KEY和VALUE。
127.0.0.1:6379> HGETALL myhash
1) "age"
2) "18"
3) "name"
4) "lisi"
HINCRBY HINCRBYFLOAT
为哈希表 key 中的指定字段的整数值加上增量 increment。HINCRBYFLOAT是增加浮点类型。
127.0.0.1:6379> HINCRBY myhash age 2
(integer) 20
HKEYS
返回哈希表中的所有Keys。
127.0.0.1:6379> HKEYS myhash
1) "age"
2) "name"
HMGET
批量获取哈希表中多个Key对应的value值。
127.0.0.1:6379> HMGET myhash age name
1) "20"
2) "lisi"
HMSET
批量设置哈希表中多个键键值对。
127.0.0.1:6379> HMSET myhash sex 0 prov beijing
OK
127.0.0.1:6379> HMGET myhash age name sex prov
1) "20"
2) "lisi"
3) "0"
4) "beijing"
HSCAN
和ZSCAN、SCAN一样都是迭代查询。可以理解分分页查询,对键值对较多的情况下比较适用。
127.0.0.1:6379> HSCAN myhash 0
1) "0"
2) 1) "age"
2) "20"
3) "name"
4) "lisi"
5) "sex"
6) "0"
7) "prov"
8) "beijing"
HSETNX
类似SETNX,新值可以写入并返回1,如果存在相同的KEY,则返回0。
127.0.0.1:6379> HSETNX myhash age 22
(integer) 0
127.0.0.1:6379> HSETNX myhash id 121
(integer) 1
HSTRLEN
返回哈希表中KEY值对应的Vaue长度。
127.0.0.1:6379> HSTRLEN myhash id
(integer) 3
Geo 地理位置指令
可以利用Redis的Geo指令来获取附近的好友这种需要计算地理位置的需求。
GEOADD
127.0.0.1:6379> GEOADD china 116.231700 39.542700 "tiananmen"
(integer) 1
127.0.0.1:6379> GEOADD china 116.460000 39.920000 'beijing'
(integer) 1
127.0.0.1:6379>
GEORADIUS
以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素。
127.0.0.1:6379> GEORADIUS china 116.0000 39.0000 100 km WITHCOORD
1) 1) "tiananmen"
2) 1) "116.2317010760307312"
2) "39.54270072760818522"
GEORADIUSBYMEMBER
类似GEORADIUS,区别是GEORADIUS是指定的经纬度为坐标中心查找符合条件的元素,而GEORADIUSBYMEMBER是指定的成员的经纬度为坐标中心进行查找符合条件的元素。
127.0.0.1:6379> GEORADIUSBYMEMBER china tiananmen 50 km
1) "tiananmen"
2) "beijing"
GEOPOS
返回指定元素的经纬度。
127.0.0.1:6379> GEOPOS china tiananmen
1) 1) "116.2317010760307312"
2) "39.54270072760818522"
GEOHASH
]Geohash is a public domain geocode system invented in 2008 by Gustavo Niemeyer[1] and (similar work in 1966) G.M. Morton[2], which encodes a geographic location into a short string of letters and digits. It is a hierarchical spatial data structure which subdivides space into buckets of grid shape, which is one of the many applications of what is known as a Z-order curve, and generally space-filling curves.。--wiki
返回一个或多个元素的标注GeoHash。GeoHash是一个标准的公共的地理位置系统。
127.0.0.1:6379> GEOHASH china tiananmen
1) "wx48uyt2fv0"
GEODIST
返回元素之间的距离。点对点。
127.0.0.1:6379> GEODIST china tiananmen beijing km
"46.2867"
以上就是Redis中哈希表和地理位置的常用操作指令了,更多其他指令可以参考官网,Redis官网,谢谢阅读,希望对你有所帮助。
原文地址:https://www.cnblogs.com/enjoyitlife/p/11959362.html