很多小伙伴刚接触redis都是拿来当缓存用,然而强大的redis可不仅仅能做这点小事。
K V数据库
redis用的最多的就是它的kv结构了,利用set和get实现数据缓存。然而kv结构还有更高级的用法,就是setnx。这个方法在key存在返回false,然后不存在则写入返回true。通过这一特性,很容易实现锁操作。
计数器
redis提供原子增加和减少的功能,就是incr和decr。然后通过这个特性可以拿唯一id,也可以做限流器(防止过多请求)。
list
redis提供list的数据结构。可以从左右两边插入和弹出数据,并且支持阻塞读取(直到有数据才返回)。利用这些特性,我们可以基于list实现队列和栈的数据结构。
我们来看看redis的list的应用场景:
消息(任务)队列
最近若干条热点数据
set
redis的集合支持普通的集合和有序集合。
普通集合可以用于数据去重,并且集合的交集,并集,差集可以快速实现共同好友,二度人脉等需求。
而有序集合可以做排行版。
hash
redis的hash结构,类似于两层的字典。key为字典的第一层,field为字典的第二层。这种结构可以方便存储对象的属性。
订阅和发布
redis支持通过主题的订阅和发布,并且支持模式匹配订阅。但是redis的订阅发布不支持持久化存储,所以发布了信息之后,如果客户端没连接上,消息会直接丢失。
这种功能一般用于解耦,例如一个用户注册之后,要初始化各种信息,还要推送信息。就可以把用户注册当成发布信息,各个子系统订阅该信息,然后再处理。
事务
redis的事务仅仅是把指令打包执行,失败了不会回滚也不会终止后面的命令。
redis支持的数据结构
string
hash
list
set
有序集合
地理空间
其它通用命令
领取专属 10元无门槛券
私享最新 技术干货