Redis基本数据类型及使用场景

这个问题应该算是比较简单的了,工作一两年的朋友基本都会遇到过,此文仅做梳理。

一、基本数据类型分为5种:String、hash、list、set、zset(有序集合)

二、使用场景:

1、String

        命令:set key value

        这个没有什么好说的,最常规的也就是set/get操作,value 可以是String 也可以是数字,一般做一些复杂的计数功能的缓存。

        可以做分布式锁,使用 setnx key value (当key不存在时,将key的值设置为value,并返回1,可以表示获取锁资源。如果key存在,则setnx不做操作,表示获取锁失败)。当然这其中还存在很多问题,比如访问资源无响应就会导致无法释放锁,从而堆积想要获取锁的线程,那么我们可以使用以下原子命令来设置 set key value NX PX seconds ---> NX 不存在  PX 过期时间。

        也可以做分布式全局唯一id,直接获取一段userId的最大值,缓存到本地慢慢累加,快到userId的最大值时,再去获取一段,一个用户服务宕机了,也顶多一小段userId没有用到。

2、hash

        命令:set key field value 

        这里的value存放的是结构化的对象,比较方便操作其中的某个字段。在做单点登录的时候,就可以用这种数据结构存书用户的信息,以cookieId作为key,设置过期时间,就能模拟出session的效果。

3、list

        使用list数据结构,可以做简单的消息队列的功能(当然比不上专业的消息中间件),另一个就是可以利用lrange命令做分页,性能还是不错的。

4、set

       用于去重,比如抽奖、点赞等只能参与一次的操作。另外可以利用交集、并集、差集等操作,计算共同喜好、全部喜好及个人独自喜好等功能。

5、zset

        zset相比于set来说多了一个参数score,集合中的所有元素可以通过score进行排序,比如应用排行榜、音乐排行榜等。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值