• 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)

    总结

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

  • 相关阅读:
    ardupilot 卡尔曼滤波器学习
    【AI学习】了解OpenAI o1背后的self-play RL:开启新的智能道路
    智能化水库监控,水库雨情在线监控系统解决方案
    互联网医院系统:数字化时代中医疗服务的未来
    day04-1群聊功能
    webpack proxy http-proxy-middleware header头丢失
    Arduino 拓展班DMP280的代码问题
    通用接口平台开源版正式发布2.0版本
    冰冰学习笔记:Linux下的权限理解
    聊一聊损失函数
  • 原文地址:https://blog.csdn.net/huaqianzkh/article/details/134087544