Redis 常用数据类型

Redis数据类型

参考:https://www.cnblogs.com/kevin-yang123/p/13895649.html

1. Redis常用五大数据类型

  • String 字符串
    • 最为基础的数据存储类型
    • 是一个由字节组成的序列
    • 他在Redis中是二进制安全的,意味着该类型可以接受任何格式的数据,如JPEG图像数据货Json对象描述信息等
    • 是标准的key-value,一般来存字符串,整数和浮点数。
    • Value最多可以容纳的数据长度为512MB
      应用场景:
      • 常用于统计网站访问数量,当前在线人数,码值,Json对象等
      • img
  • Hash 哈希值
    • 可以看成具有String key和String value的map容器,可以将多个key-value存储到一个key中。
    • 相当于 Map<String, Map<?, ?>> map
    • image.png
    • 每一个Hash可以存储4294967295个键值对。
    • 应用场景:
      • 例如存储、读取、修改用户属性(name,age,pwd)
      • 当对象的某个属性需要频繁修改时,不适合用string+json,因为它不够灵活,每次修改都需要重新将整个对象序列化并赋值,如果使用hash类型,则可以针对某个属性单独修改,没有序列化,也不需要修改整个对象。比如,商品的价格、销量、关注数、评价数等可能经常发生变化的属性,就适合存储在hash类型里。
    • img
  • List 有序可重复的序列
    • 允许用户从序列的两端推入或者弹出元素。
    • 高版本已经升级为压缩数组 https://www.cnblogs.com/hunternet/p/11306690.html
    • image.png
    • 列表由多个字符串值组成的有序可重复的序列。
    • 是链表结构,所以向列表两端添加元素的时间复杂度为0(1),获取越接近两端的元素速度就越快。
    • List中可以包含的最大元素数量是4294967295。
    • 应用场景:
      • 最新消息排行榜。
      • 消息队列,以完成多程序之间的消息交换。可以用push操作将任务存在list中(生产者),然后线程在用pop操作将任务取出进行执行。(消费者)
      • 存储频发使用的其他列表数据
    • image.png
  • Set 无序不可重复的序列
    • 最大的优势在于可以进行交集/并集/差集操作。
      • sinter 交集
      • sdiff 差集
      • sunion 并集
    • image.png
    • Set可包含的最大元素数量是4294967295。
    • 应用场景:
      • 求交集的场景,例如共同好友,共同粉丝等。
      • 利用唯一性,可以统计访问网站的所有独立IP。
    • img
  • ZSet 有序不可重复的序列
    • 有序性值的是分数排序score
    • image.png
    • 与Set差别在于有序集合中每一个成员都会有一个分数(score)与之关联,Redis通过分数来为集合中的成员进行从小到大的排序。
    • 尽管有序集合中的成员必须是唯一的,但分数(score)却可以重复。
    • 应用场景:
      • top排行榜数据
      • 其他需要排序的唯一序列
    • img

2. Redis3种特殊数据类型 了解

Geo 计算地理位置, bitmap 存储是否状态, hyperloglog 基数统计

  • Geo(geospatial,地理空间)
    • Redis 在 3.2 推出 Geo 类型,该功能可以推算出地理位置信息,两地之间的距离。
  • bitmap 位图 0 or 1
    • bitmap就是通过最小的单位bit来进行0或者1的设置,表示某个元素对应的值或者状态。
    • 一个bit的值,或者是0,或者是1;也就是说一个bit能存储的最多信息是2。
    • bitmap 常用于统计用户信息比如活跃粉丝和不活跃粉丝、登录和未登录、是否打卡等。
  • hyperloglog 基数
    • 基数:数学上集合的元素个数,是不能重复的。
    • UV(Unique visitor):是指通过互联网访问、浏览这个网页的自然人。访问的一个电脑客户端为一个访客,一天内同一个访客仅被计算一次。
    • Redis 2.8.9 版本更新了 hyperloglog 数据结构,是基于基数统计的算法。
    • hyperloglog 的优点是占用内存小,并且是固定的。存储 2^64 个不同元素的基数,只需要 12 KB 的空间。但是也可能有 0.81% 的错误率。
    • 这个数据结构常用于统计网站的 UV。传统的方式是使用 set 保存用户的ID,然后统计 set 中元素的数量作为判断标准。但是这种方式保存了大量的用户 ID,ID 一般比较长,占空间,还很麻烦。我们的目的是计数,不是保存数据,所以这样做有弊端。但是如果使用 hyperloglog 就比较合适了。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值