有一次,测试排行榜,榜单显示前10名,但下方还有一块单独显示自己的排名,后来测试过程中发现,用户上榜后,排行榜中数据与下方数据显示不一致,后面了解到排行榜取得是redis数据,个人数据取得是数据库的数据,用户的数据一样时,MySQL和redis默认排序是不一样的,所以数据取样时最好选用同一数据源。
那么问题来了,什么是redis?什么数据会放到redis中?
什么是Redis?
Remote Dictionary Server(Redis) 远程字典服务器是完全开源免费的,用C语言编写的,遵守BSD开源协议,是一个高性能的(key/value)分布式内存数据库,基于内存运行,并支持持久化的NoSQL数据库,它也通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
与传统数据库不同的是 Redis 的数据是存在内存中的,所以存写速度非常快,因此 Redis 被广泛应用于缓存方向。Redis为分布式缓存,在多实例的情况下,各实例共用一份缓存数据,缓存具有一致性。
Rediis 与其他 key - value 缓存产品有以下三个特点:
- 性能极高 – Redis读的速度是11W次/s,写的速度是81K次/s
- 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- 丰富的数据类型,Redis不仅仅支持简单的key-value类型的数据,同时还提供Strings, Lists, Hashes, Sets 及 Ordered Sets 等数据结构的存储。
- 支持数据的备份,即master-slave模式的数据备份。
Redis使用场景,查询出的数据保存到Redis中,下次查询的时候直接从Redis中拿到数据。不用和数据库进行交互。
redis.jpegredis_2.png
什么数据会存到redis数据库中?
主要是热点数据,不会经常改变的,一般是常量
比如登录验证的cookie,购物车,历史浏览记录都(只要具有一定时间的生命周期)
比如首页的商品信息,一般不会变。
比如秒杀的商品信息,一般也不会变。
比如地图的经纬度信息,一般也不会变。
用户的关注列表,粉丝列表,消息列表等功能都可以用 Redis 的 List 结构来实现
Redis 可以非常方便的实现如共同关注、共同粉丝、共同喜好等功能(Set 类似与列表,但可自动排重的)
Redis不但提供了无需集合(Sets),还很体贴的提供了有序集合(Sorted Sets),因此,各种排行榜数据基本上都会使用Redis提供的Sorted Sets来实现
参考文档:
读完这篇文章,就基本搞定了Redis数据库
为什么要使用redis数据库?
超强、超详细Redis数据库入门教程
网友评论