**
Zset(有序集合)
**
127.0.0.1:6379> zadd myset 1 one
(integer) 1
127.0.0.1:6379> zadd myset 2 two
(integer) 1
127.0.0.1:6379> zrange myset 0 -1
- “one”
- “two”
–排序
127.0.0.1:6379> zadd salary 2500 fengding
(integer) 1
127.0.0.1:6379> zadd salary 3000 xusheng
(integer) 1
127.0.0.1:6379> zadd salary 5000 xsfd
(integer) 1
127.0.0.1:6379> ZRANGEBYSCORE salary -inf +inf #从负无穷到正无穷(从小到大排序)
- “fengding”
- “xusheng”
- “xsfd”
127.0.0.1:6379> ZRANGEBYSCORE salary -inf +inf withscores - “fengding”
- “2500”
- “xusheng”
- “3000”
- “xsfd”
- “5000”
–案例
set排序,例如存储班级成绩表,工资表排序。
普通消息 1,重要消息 2, 带权重进行判断
排行榜应用实现
P18 geospatial地理位置
朋友圈定位,附近的人,打车距离计算
这个功能可以推算地理位置信息,两地之间的距离。
只有六个命令
1.geoadd 添加地理位置
#规则:
1.两集无法添加,我们一般会下载城市数据,通过java程序一次性导入
#参数 key
127.0.0.1:6379> geoadd china:city 113.88 22.55 shenzheng
(integer) 1
127.0.0.1:6379> geoadd china:city 121.47 31.23 shanghai
(integer) 1
127.0.0.1:6379> geoadd china:city 106.50 29.53 chongqin
(integer) 1
127.0.0.1:6379> geoadd china:city 116.40 39.90 beijing
(integer) 1
127.0.0.1:6379> geoadd china:city 120.16 30.24 hangzhou
(integer) 1
127.0.0.1:6379> geoadd china:city 108.96 34.26 xian
(integer) 1
2.geopos
127.0.0.1:6379> geopos china:city beijing #查询位置
-
- “116.39999896287918091”
- “39.90000009167092543”
3.geodist:查询两地之间的距离 key xx xx 单位(m/km/mi)
127.0.0.1:6379> geodist china:city beijing shenzheng
“1944365.2092”
127.0.0.1:6379> geodist china:city beijing shenzheng km
“1944.3652”
4.georadius 以某个地址为中心半径xx单位的值
china:city(key、list)中以(100,30)为中心,方圆1000km内的值
127.0.0.1:6379> georadius china:city 110 30 1000 km
- “chongqin”
- “xian”
- “shenzheng”
- “hangzhou”
geospatial的底层实现其实是zset,可以使用zset命令来操作geo
P19 Hyperloglog
Redis Hyperloglog 基数统计的算法 (数据集中不重复的元素)
优点:占用的内存是固定的。(占用内存小)
统计网页的UV(一个人访问多次,还是算作一个人)
传统的方式,set保存用户的id,然后可以统计set中的元素作为判断。
但是这样子保存大量用户id,就比较麻烦,我们只需要计数。
P20 Bitmaps
位存储
统计用户信息,活跃,不活跃;登录,未登录;打卡,365打卡。。。
只有两个状态的都可以使用bitmaps