redis03 八种数据类型

思维草图 

String类型 

字符串类型,是redis中最简单的存储类型,可以包含任何数据,例如jpg图片或者序列化的对象等,底层都是以字节数组形式存储,最大能存储512MB的数据。

KEY命名规范

加前缀,分层次分模块构建,更方便管理

项目名:业务名:类型:id

如定义

project:user:1
project:equipment:1

根据具体项目规范来定义key值。

如果value是一个Java对象,可以先将对象序列化成Json再存入,这样后面取出来操作也非常方便。

Hash类型 

String类型是将对象序列化成JSON字符串后进行存储,当需要进行修改对象中的某个字段时非常不方便。

Hash类型可以将对象中的每个字段独立存储,可以针对单个字段进行CRUD操作,非常适合用来存储对象

List类型

一个双向链表结构。

特征

  • 有序
  • 元素可以重复
  • 插入和删除快
  • 查询速度一般

常用来存储一个有序数据,例如:朋友圈点赞列表,评论列表,系统的实时信息变化(网络、内存、cpu)

Set类型

可以看做是一个value为null的HashMap。

特征

  • 无序
  • 元素不可重复
  • 查找快
  • 支持交集、并集、差集等功能

ZSet类型 

可排序的set集合,ZSet中的每一个元素都带有一个score属性,可以基于score属性对元素排序,底层的实现是一个跳表(SkipList)加 hash表。

特征

  • 可排序
  • 元素不可重复
  • 查询速度快

因为SortedSet的可排序特性(从小到大排序 ),经常被用来实现排行榜这样的功能

所有的排名默认都是升序,如果要降序则在命令的Z后面添加REV即可,例如: 

升序获取sorted  set  中的指定元素的排名:   ZRANK  key  member

降序获取sorted  set  中的指定元素的排名:   ZREVRANK  key  memeber

HyperLogLogs基数统计

A = {1, 2, 3, 4, 5}

B = {3, 5, 6, 7, 9}

那么基数(不重复的元素)= {1, 2, 4, 6, 7, 9}

允许容错,即可以接受一定误差,可以是一个带有 0.81% 标准错误的近似值

Bitmap位存储

操作二进制位来进行记录,只有0和1两个状态。

可以用来统计用户登录、未登录,打开、未打卡。两个状态的,都可以使用Bitmap。

比如存储一年的打卡状态需要的内存,365天=365bit,1字节 = 8bit,大概需要 46个字节左右。

如使用bitmap来记录 周一到周日的打卡 0表示未打卡,1表示打卡

查看某一天是否有打卡

统计这一周的打卡情况

geospatial地理位置

这个功能可以推算地理位置的信息,两地之间的距离,方圆几里的人。

地理位置查询网址

传送门icon-default.png?t=N7T8http://www.jsons.cn/lngcode/

添加地址的经纬度 

注意

  • 有效的经度从-180度到180度。
  • 有效的纬度从-85.05112878度到85.05112878度。

当坐标位置超出上述指定范围时,该命令将会返回错误。

获取指定的成员的精度和纬度

计算两地之间的距离

 获取附近以(100, 30)这个坐标为中心,寻找半径为10000km的城市

  • 33
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值