redis常见的使用场景
导读:redis常见的使用场景,文章摘要:redis常见的使用场景方面的介绍,请看下面详细的介绍。 缓存: 是 redis 被使用最多的场景之一,业务数据一般存在磁盘中,当我们要读写数据时,直接去磁盘
redis常见的使用场景
文章摘要:redis常见的使用场景方面的介绍,请看下面详细的介绍。
- 缓存:是 redis 被使用最多的场景之一,业务数据一般存在磁盘中,当我们要读写数据时,直接去磁盘里面访问就可以。但磁盘 IO 一直是业务性能提升的一个重要瓶颈,且并发量很高的情况下,数据库承受不了访问压力甚至还会宕机。而缓存就是为了应对这些场景产生的,当用到缓存时,先把一部分业务数据从 MySQL 写到 redis 中,用户在访问业务数据时,先到 redis 中拿数据;如果不存在,再到 MySQL 中拿,接着把访问过的数据写入 redis 中:

用 redis 作缓存时,访问速度快,且 redis 提供持久化机制,可以保证服务宕机之后,缓存数据依旧可以恢复。
- 消息队列: 上篇文章中我们已经说到,Redis 中的
list数据结构可以用LinkedList双向链表实现 。它可以很轻松地实现消息队列(生产者/消费者模型)。消息的生产者只需要通过lpush命令将消息放入list,消费者可以通过rpop取出该消息,并且保证消息的有序性。
如果需要实现带有优先级的消息队列也可以选择 sorted list。
- 分布式锁:在实现了高可用的业务场景中,假设现网的某个服务运行在三台服务器上。当客户端进行业务访问时,每台服务器被访问的概率一致。这种情况下,想要控制只能由一台服务器去执行某些操作时(比如更新共享内存,防止并发),就可以用到分布式锁。简单来说,分布式锁就是为了保证多台服务器在执行某一段代码时保证只有一台服务器执行。Redis 实现分布式锁主要利用了
setnx命令,setnx 即SET if not exists(如果不存在,则 SET) 的简写:
127.0.0.1:6379> setnx lock value1 #在键lock不存在的情况下,将键key的值设置为value1
(integer) 1
127.0.0.1:6379> setnx lock value2 #试图覆盖lock的值,返回0表示失败
(integer) 0
当某个客户端执行时,对某一段代码用 setnx 命令进行加锁。不存在则保存,并返回 1 表示加锁成功;如果已经存在则返回 0,加锁失败,代表该段代码已被加锁。分布式锁需要满足以下几点:
1、互斥性。在任何时刻,保证只有一个客户端持有锁。
2、不能出现死锁。如果在一个客户端持有锁的期间,这个客户端崩溃了,也要保证后续的其他客户端可以上锁。
相关阅读
-
nginx链接末尾自动补全斜杠 nginx详细教程
为大家介绍nginx链接末尾自动补全斜杠的相关经验,下面为详细的介绍。 如何在nginx链接末尾自动补全斜杠,下面不念就来讲一下详细步骤教程。 放在locaation里边就行 location /new { root /data/; i
-
html网页制作代码大全 创建自己的网站平台的流程
您可能不了解html网页制作代码大全和创建自己的网站平台的流程方面的介绍,如有不对的地方欢迎指正! 在HTML中最重要的概念就是标签,或者说每一个你写的语句都是一个标签。 通过这些标
-
date函数的使用方法及实例 数据库modify的用法
跟大家聊一聊date函数的使用方法及实例和数据库modify的用法的相关知识,具体介绍如下: 在年龄、工龄等时长的计算中,大家一贯的做法都是当前年份或者离职年份减去出生年份或者上班年份
-
营销型网站建设推广公司 网站建设企业建站
IT袋网小编为你介绍营销型网站建设推广公司和网站建设企业建站的相关经验,接下来分享详细内容。 从线下营销到线上营销是一个转变非常大的过程,线下的营销模式和线上的营销模式是截


