redis在项目中的使用场景


 

数据类型 使用场景
String

比如:我想知道什么时候封锁一个IP(某一个IP地址在某一段时间内访问的特别频繁,那有可能这个IP可能存在风险,所以对它进行封锁),使用Incrby命令记录当前IP访问次数 

存储用户信息【id,name,age】

存储方式:set(userKey,用户信息字符串)

Hash

存储用户信息【id,name,age】

存储方式:Hset(key,filed,value)

hset(userKey,id,101)

hset(userKey,name,"admin")

hset(userKey,age,23)

这样存储的好处:当修改用户信息某一项属性值时,直接通过filed取值,并修改值

-----修改案例------

hget(userKey,id)

hset(userKey,id,102)

------------------------------

为什么不使用String存储?

获取方式:get(userKey)

会把参数为userKey对应的用户信息字符串全部进行反序列号,而用户信息字符串包含了用户所有的信息

如果我只修改用户的ID,那反序列化的其他信息其实是没有任何意义的

序列化与反序列化是由IO进行操作的,使用String类型存储增加了IO的使用次数,降低了程序的性能

对值为某类信息时不建议使用String类型存储

List

实现最新消息的排行,还可以利用List的push命令,将任务存在list集合中,同时使用另一个pop命令将任务从集合中取出

Redis——list数据类型来模拟消息队列。

比如:电商中的秒杀就可以采用这种方式来完成一个秒杀活动 

set

特殊之处:可以自动排重。

比如微博中将每个人的好友存在集合(Set)中

如果求两个人的共同好友的操作,我们只需要求交集即可。(交/并集命令)

Zset

有序集合(sorted set),以某一个条件为权重,进行排序。

比如:京东看商品详情时,都会有一个综合排名,还有可以安装价格、销量进行排名


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM