【Ubuntu 18.04】Redis基础学习(5)

【Ubuntu 18.04】Redis基础学习(5)

三种特殊数据类型

geospatial地理位置

定位,附近的人,滴滴打车的距离

添加经度,纬度和名称

测试数据:http://www.jsons.cn/lngcode/

官方网站:https://www.redis.net.cn/order/3685.html

添加

#添加地理位置
#规则:两级无法直接添加,通过java程序一次性导入!
#纬度,经度,城市
#(error) ERR invalid longitude,latitude pair 39.900000,116.400000 (经纬度超出了范围)
127.0.0.1:6379> geoadd china:city 116.40 39.90 beijing  #添加
(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 chongqing 114.05 22.54 shenzhen
(integer) 2
127.0.0.1:6379> geoadd china:city 120.16 30.24 hangzhou 108.96 34.26 xian
(integer) 2
  • 有效的经度从-180度到180度。
  • 有效的纬度从-85.05112878度到85.05112878度。 

 获取

获取当前的定位:一定是一个坐标值

127.0.0.1:6379> geopos china:city beijing     #获取指定城市的经度纬度
1) 1) "116.39999896287918091"
   2) "39.90000009167092543"
127.0.0.1:6379> geopos china:city beijing chongqing
1) 1) "116.39999896287918091"
   2) "39.90000009167092543"
2) 1) "106.49999767541885376"
   2) "29.52999957900659211"

 两个人之间的距离

  • m 表示单位为米。
  • km 表示单位为千米。
  • mi 表示单位为英里。
  • ft 表示单位为英尺。
127.0.0.1:6379> geodist china:city beijing shanghai km    #查看上海到北京的直线距离
"1067.3788"
127.0.0.1:6379> geodist china:city beijing chongqing km   #查看北京到重庆的直线距离
"1464.0708"

我附近的人

(获取所有附近的地址,定位)通过半径来查询。

所有数据应该都录入:结果才会精确。

127.0.0.1:6379> georadius china:city 110 30 1000 km#以110,30这个经纬度为中心,1000KM内的城
1) "chongqing"
2) "xian"
3) "shenzhen"
4) "hangzhou"
127.0.0.1:6379> georadius china:city 110 30 500 km 
1) "chongqing"
2) "xian"
127.0.0.1:6379> georadius china:city 110 30 500 km withdist  #显示离110,30的直线距离
1) 1) "chongqing"
   2) "341.9374"
2) 1) "xian"
   2) "483.8340"
127.0.0.1:6379> georadius china:city 110 30 500 km withcoord  #显示出城市中的定位信息
1) 1) "chongqing"
   2) 1) "106.49999767541885376"
      2) "29.52999957900659211"
2) 1) "xian"
   2) 1) "108.96000176668167114"
      2) "34.25999964418929977"
127.0.0.1:6379> georadius china:city 110 30 500 km withdist withcoord count 1#筛选指定结果
1) 1) "chongqing"
   2) "341.9374"
   3) 1) "106.49999767541885376"
      2) "29.52999957900659211"
127.0.0.1:6379> georadius china:city 110 30 500 km withdist withcoord count 2
1) 1) "chongqing"
   2) "341.9374"
   3) 1) "106.49999767541885376"
      2) "29.52999957900659211"
2) 1) "xian"
   2) "483.8340"
   3) 1) "108.96000176668167114"
      2) "34.25999964418929977"

 找出位于指定元素周围的其他元素

127.0.0.1:6379> GEORADIUSBYMEMBER china:city beijing 1000 km
1) "beijing"
2) "xian"

将二维的经纬度转换成一维的字符串(11位)

127.0.0.1:6379> GEOHASH china:city beijing chongqing
1) "wx4fbxxfke0"
2) "wm5xzrybty0"

GEO底层的原理其实就是Zset,可以用Zset命令。

删除

127.0.0.1:6379> ZRANGE china:city 0 -1
1) "chongqing"
2) "xian"
3) "shenzhen"
4) "hangzhou"
5) "shanghai"
6) "beijing"
127.0.0.1:6379> zrem china:city chongqing
(integer) 1
127.0.0.1:6379> ZRANGE china:city 0 -1
1) "xian"
2) "shenzhen"
3) "hangzhou"
4) "shanghai"
5) "beijing"

Hperloglog (基数)

优点:占用的内存是固定,2^64不同的元素的技术,只需要12KB内存如果要从内存角度来比较的话

基数统计的算法

统计网站的UV (一个人访问一个网站很多次,算一个人)

传统的方式,set保存用户的id,然后就可以统计set中的元素数量作为标准判断

这个方式如果保存大量的用户ID, 目的是为了计数。

0.81%错误率!统计UV任务。

允许出错!!!

127.0.0.1:6379> PFadd set a b c d e f g h i j k   #创建元素
(integer) 1
127.0.0.1:6379> PFCOUNT set      #统计set的元素的基数数量
(integer) 11
127.0.0.1:6379> PFadd set2 i j k j f l a d   #创建set2的元素
(integer) 1
127.0.0.1:6379> PFCOUNT set2
(integer) 7
127.0.0.1:6379> PFMERGE set3 set set2   #合并两组的元素 并集
OK
127.0.0.1:6379> PFCOUNT set3  #查看
(integer) 12

 Bitmaps(位存储)

统计用户信息,两种状态的即可使用Bitmaps。

bitmaps为数据结构,都是操作二进制来进行记录,只有0和1两个状态

365天 =365bit 1字节=8bit 非常的方便!!

127.0.0.1:6379> setbit sign 0 1
(integer) 0
127.0.0.1:6379> setbit sign 1 0
(integer) 0
127.0.0.1:6379> setbit sign 2 0
(integer) 0
127.0.0.1:6379> setbit sign 3 1
(integer) 0
127.0.0.1:6379> setbit sign 4 1
(integer) 0
127.0.0.1:6379> setbit sign 5 0
(integer) 0
127.0.0.1:6379> setbit sign 6 1

查看某天是否有没有打卡!

127.0.0.1:6379> getbit sign 6
(integer) 1
127.0.0.1:6379> getbit sign 3
(integer) 1
127.0.0.1:6379> getbit sign 1
(integer) 0

统计,打卡的天数!

127.0.0.1:6379> bitcount sign   #统计这周的打卡记录
(integer) 4

参考

https://www.bilibili.com/video/BV1S54y1R7SB?p=1

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是在Ubuntu 18.04上安装Redis的步骤: 1. 打开终端并更新软件包列表: sudo apt update 2. 安装Redis: sudo apt install redis-server 3. 启动Redis服务: sudo systemctl start redis-server 4. 确认Redis服务已经启动: sudo systemctl status redis-server 5. 如果Redis服务未启动,则可以使用以下命令启动它: sudo systemctl enable redis-server 6. 现在,您可以使用以下命令测试Redis是否正在运行: redis-cli ping 如果Redis正在运行,则会返回“PONG”消息。 希望这可以帮助您在Ubuntu 18.04上安装Redis。 ### 回答2: Redis是一款快速、可靠的开源内存数据存储系统,广泛应用于许多Web应用程序中的数据缓存、会话管理、消息队列等场景中。本文将介绍如何在Ubuntu 18.04上安装Redis。 1. 更新Ubuntu软件包列表 在安装Redis之前,我们需要更新Ubuntu的软件包列表,以确保我们安装的是最新版的Redis。通过运行以下命令更新软件包列表: sudo apt update 2. 安装Redis 运行以下命令在Ubuntu 18.04上安装Redis: sudo apt install redis-server 该命令会安装Redis服务器及其依赖项。在安装过程中,会询问是否继续安装,确认后等待几秒钟即可安装完成。 3. 配置Redis Redis安装完成后,我们需要确认一些默认配置是否正确。首先,我们需要检查Redis的监听IP地址和端口是否正确。运行以下命令打开Redis配置文件: sudo nano /etc/redis/redis.conf 在该文件中,找到以下行(大约位于第68行): bind 127.0.0.1 将该行中的IP地址修改为0.0.0.0,即: bind 0.0.0.0 这将使Redis监听所有可用的网络接口。保存文件并关闭编辑器。 4. 启动Redis服务 Redis安装和配置完成后,我们需要启动Redis服务。运行以下命令启动Redis: sudo systemctl start redis 此时,Redis已启动并正在运行。我们可以运行以下命令检查Redis的运行状态: sudo systemctl status redis 如果Redis正在运行,则输出将显示active (running)。 5. 测试Redis 安装和配置Redis完成后,我们可以测试Redis是否能够正常工作。运行以下命令连接到本地Redis服务器: redis-cli 此时会打开Redis命令行界面。在该界面中,我们可以输入一些Redis命令,例如set和get,来测试Redis是否正常工作。例如,我们可以运行以下命令设置一个键值对: set mykey "Hello, world!" 然后,我们可以运行以下命令获取该键的值: get mykey 如果Redis正在运行并且配置正确,则输出应为“Hello, world!”。 6. 其他操作 除了上述操作,我们还可以通过以下命令来停止Redis服务: sudo systemctl stop redis 如果需要在服务器启动时自动启动Redis,则可以运行以下命令启用Redis服务自启动: sudo systemctl enable redis Ubuntu 18.04上安装Redis就是这么简单!安装之后,您可以将Redis用于您的Web应用程序中的缓存、会话管理、消息队列等方面,从而提升应用程序的性能和可靠性。 ### 回答3: 首先,需要在Ubuntu 18.04上安装Redis。这可以通过在终端中输入以下命令来完成: sudo apt-get update sudo apt-get install redis-server 安装完成后,Redis服务器将在后台运行,并在默认端口6379上监听连接。 接下来,需要检查Redis配置文件是否正常,以确保服务器可以正确地运行。可以通过运行以下命令来打开Redis配置文件: sudo nano /etc/redis/redis.conf 通过检查以下设置,可以确认该配置文件是否已正确配置: 1.监听端口是否设置为6379。 2.确保内存限制已设置为适当的水平,确保Redis不会使用太多系统资源。 3.确认Redis配置文件中的其他设置已正确配置。 然后,需要配置防火墙以允许Redis流量通过。Ubuntu 18.04默认使用UFW防火墙,可以通过运行以下命令启用防火墙: sudo ufw enable 然后,需要允许Redis的流量通过开放端口6379,可以通过运行以下命令实现: sudo ufw allow 6379/tcp 最后,需要启动Redis服务器。可以通过运行以下命令来启动Redis服务: sudo systemctl start redis 通过运行以下命令可以确认Redis服务器是否已在运行: sudo systemctl status redis 这些步骤可以确保在Ubuntu 18.04系统上正确安装和配置Redis服务器。接下来,可以通过安装适当的客户端来使用Redis,例如通过使用Node.js的Node Redis库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值