• Redis中的数据类型及与Mysql数据库同步方法


    1.Redis中的数据类型

    Redis中的数据类型包括:String(字符串)、Hash(字典)、List(列表)、Set(集合)、Sorted Set【Zset】(有序集合)。

    Redis 所有的数据结构都是一个key对应一个value,不同类型的数据结构之间的差异就在于value的结构不同,例如string数据类型,他的value就是一个字符串,list数据类型,他的value是一个链表。

    排行榜应选用有序集合Zset,原因是排行榜既要去重,也要排序,用这种结构最为合适。

    1.1 String

    字符串 String 是 Redis 最简单的数据结构,可以存储字符串、整数或者浮点数。最常见的应用场景就是对象缓存,例如缓存用户对象,key是"userInfo"+#{用户ID},value是用户信息对象的JSON字符串

    Redis String使用场景

    • 缓存:像我们平时开发,经常会把一个对象转成json字符串,然后放到redis里缓存

    • 计数器:像博客文章的阅读量、评论数、点赞数等等

    • 分布式系统生成自增长ID

    1.2 List

    Redis 的列表相当于 Java 语言里面的 LinkedList。LinkedList优点:插入性能高,不管是从末尾插入还是中间插入LinkedList缺点:随机读性能差,例如LinkedList.get(10),这种操作,性能就很低,因为他需要遍历这个链表,从头开始遍历这个链表,直到找到index = 10的这个元素为止。

    Redis List 使用场景

    • 异步队列

    • 任务轮询(RPOPLPUSH)

    • 文章列表(lrange key 0 9)

    1.3 Hash

    Redis的Hash结构相当于Java语言的HashMap,内部实现结构上与JDK1.7的HashMap一致,底层通过数据+链表实现。

    Redis Hash 使用场景

    • 记录整个博客的访问人数(数据量大会考虑HyperLogLog,但是这个数据结构存在很小的误差,如果不能接受误差,可以考虑别的方案)

    • 记录博客中某个博主的主页访问量、博主的姓名、联系方式、住址

    1.4 Set

    Redis的set集合相当于Java的HashSet。Redis 中的 set 类型是一种无序集合,集合中的元素没有先后顺序。

    补充:HashSet就是基于HashMap来实现的,HashSet,他其实就是说一个集合,里面的元素是无序的,他里面的元素不能重复的,HashMap的key是无顺序的,你插入进去的顺序,跟你迭代遍历的顺序是不一样的,而且HashMap的key是没有重复的,HashSet直接基于HashMap实现的。

    Redis Set 使用场景

    • 微博抽奖:如果数据量不是特别大的时候,可以使用spop(移除并返回集合中的一个随机元素)或srandmember(返回集合中一个或多个随机数)

    • QQ标签:一个用户多个便签

    • 共同关注(交集)

    • 共同好友(交集)

    1.5 Sorted Set

    sorted set 有序集合,sorted set 增加了一个权重参数 score,使得集合中的元素能够按 score 进行有序排列,还可以通过 score 的范围来获取元素的列表。使得它类似于Java的TreeSet和HashMap的结合体。

    Sorted set 使用场景

    • 排行榜

    • 订单支付超时(下单时插入,member为订单号,score为订单超时时间戳,然后写个定时任务每隔一段时间执行zrange)

    总结

    要结合实际项目仔细分析业务需求,根据数据类型适用场景不同做合适的选择。

  • 相关阅读:
    【组成原理-数据】定点数的编码与运算
    PingCAP Clinic 快速上手指南
    python网页爬虫xpath应用
    leetCode 5. 最长回文子串 动态规划 + 优化空间 / 中心扩展法 + 双指针
    基于springboot+vue的毕业生实习与就业管理系统
    60行自己动手写LockSupport是什么体验?
    集合深度学习09—HashMap源码解析
    一键搞定发布自己Jar到Maven中央仓库
    Hadoop总结
    Pytest 源码解读 [1] - [pluggy] 核心设计理念浅读
  • 原文地址:https://blog.csdn.net/huaqianzkh/article/details/134087544