你真的懂redis吗?

缓存

我相信大部分互联网应用都是用redis作为缓存的,因为相对于memcached来说,redis的kv结构效率区别不大,并且还有hash这种方便的结构,并且redis还有持久化的能力,可以防止重启机器导致的数据丢失而造成数据击穿问题。

计数器

例如记录文章的点击数,用户每次访问文章就自增一。然后还可以利用自减操作来判断库存问题。由于是原子性操作,可以避免并发问题,而且性能很好。

队列
  • 用做消息队列,在要求不高的情况下可以替代rabbitmq等消息中间件
  • 由于redis把数据添加到队列是返回添加元素在队列的第几位,所以可以做判断用户是第几个访问这种业务
  • 队列不仅可以把并发请求变成串行,并且还可以做队列或者栈使用
集合
  • 可以保存一堆预生成的随机数
  • 可以避免一些操作重复调用,因为加入集合的操作是返回true或者false
发布和订阅

这种特性类似于广播,对于一些不用查看历史记录的业务,可以利用这个特性实现类似于聊天室或者系统消息等业务。

字符串操作

这个数据结构,对于普通应用,使用不高,但是对于大数据和节省空间的场合还是比较常用的,特别是位操作。

其它
  1. hash结构的数据有效期只能在最外层的key来设置失效时间。
  2. redis的队列支持没数据的时候阻塞获取请求直到有数据(这是对于拉取任务的队列是一个很好的特性)
  3. redis还支持事物,对于数据准确性很高的场合非常友好。
  4. redis不要开放外网访问权限,如果实在需要开启请注意设置密码。
    原文作者:yubang
    原文地址: https://www.jianshu.com/p/3862ce5d3f5b
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞