Redis的使用场景有哪些?Redis的数据类型有哪些?

XIAO 2020-04-14 12:54:10 java常见问答 7909

假如你是程序员队伍中的一员,那么你对数据库一定不陌生,可能你也正在使用着它,但是小编今天要聊的确不是一般的关系型数据库,而是非关系型数据库Redis,下面我们就一起来看看Redis的一些使用场景,以及了解一下Redis的数据类型有哪些?

缓存数据库。首先Redis 是基于内存基础的,它是键值型数据库,具备读写性能高,数据格式灵活,支持持久化等优点。非常适合作为缓存数据库使用。可以让业务中的热数据储存在Redis中,其次,Redis具有非常多的数据类型,我们常用的有String,Hash,List,Set,SortedSet等。

排行榜。 一般使用 Redis的SortedSet即可实现类似于小游戏排行榜功能,SortedSet类型每个成员都具有两个属性,一是name ,二是score,可以使用 zadd key score member向SortedSet 添加成员。也可以使用zrevrange key start stop来获取指定排名区间的成员,zrevrange按score从大到小排列,zrange相反。

消息队列。例如email或者验证码的发送队列,Redis的List类型能够很简单的实现一个消息队列,只要使用lpush和rpop/brpop(阻塞版rpop)即可实现一个消息队列。

锁机制。当我们使用多线程或者分布式系统的时候,会存在资源争夺的情况,这个时候,可以使用Redis 的setnx实现锁机制去解决问题。

计数或者计时。该场景可实现计数和计时的功能。计数,如要实现每天最多只能获取5次验证码的功能, 可以使用Redis的inch命令,inch会对数据进行加一操作而且该命令具有原子性。 计时,如要验证码三分钟内有效。可以使用 Redis的setex命令设置验证码只保存三分钟,三分钟后自动失效。

发布订阅模式。发布订阅模式有点像我们平时使用到的收音机,邮件订阅场景可能比较适用。发布订阅模式实现邮件订阅的功能可以使用Redis。如果有若干个人订阅了你的博客,那么如果你发了文章,就会有若干个订阅者会收到你的通知邮件。Redis的subscribe channel功能可以实现订阅关注博客功能,被关注者发发布博客的时候,只要通过Redis的publish channel message实现对订阅者进行消息推送。以上场景就是Redis经常会出现的地方啦。

上面在缓存数据这一使用场景中其实也提到了Redis的数据类型,下面就具体来看看吧。

最常见的String类型,就是普通的set和get,做一些简单的key value缓存。

Hash类型,这个是有点像map的一种结构,比如一个对象给缓存在redis里,然后每次读写缓存的时候,可以操作hash里的某个字段。例如:

key=250

value={

“id”: 250,

“name”: “shawnee”,

“age”: 20

}

hash类的数据结构,主要是用来存放一些对象,把一些简单的对象给缓存起来,后续操作的时候,只要修改个对象中的某个字段的值就可以了。

list列表类型,比如抖音某网红的粉丝,就可以以list的格式放在redis里去缓存:

key=某网红

value=[shawnee, lisi, wangwu]

一般可以通过list存储一些列表型的数据结构,如文章的评论列表,粉丝列表之类的东西

Set类型,特点:无序集合,自动去除重复,直接基于set将系统里需要去除重复的数据丢进去,就自动给去重了。

sorted set,排序的set,去重但是可以排序,写进去的时候给一个分数,自动根据分数排序,最大的特点是有个分数可以自定义排序规则。

好了,以上就是有关Redis使用场景和常用数据类型的介绍,还想了解更多java一些知识问答记得关注本站消息哦。