虽然Redis是单线程的工作模式,但是你是否考虑过是否还会出现并发问题吗?
Redis是基于C/S架构,支持多个客户端请求,多个客户端的访问顺序能保证吗?
本篇主要从多客户端执行多个命令入手,介绍事务、Lua脚本和管道的应用场景
需要明确最重要一点就是,Redis的事务不保证原子性,事务出错不回滚
数据库的事务定义特点是“一系列程序执行单元,要么完全地执行,要么完全地不执行”
但是在Redis中的事务机制在某些地方跟数据库还是存在明显的不同
在单机部署的项目下,如果涉及到数据一致性的问题可以通过加锁的思路来解决
但是,越来越多的项目已经开始倾向于分布式系统,原单机并发控制锁策略已经失效
所以,需要提出一种能够实现跨域限制数据一致性的锁,也就是分布式锁的提出
在高并发的场景下,大量的请求直接访问Mysql很容易造成性能问题
所以,我们都会用Redis来做数据的缓存,削减对数据库的请求
但是,Mysql和Redis是两种不同的数据库,如何保证不同数据库之间数据的一致性就非常关键了
思考问题:
Redis内部是怎样的设计才能单机抗下10W+的qbs?
多核CPU下,Redis为什么要设计成单线程的?
Redis下的IO多路复用技术是怎样的工作流程呢?
Redis的数据是存储于内存之中,所以对内存的清理是非常重要的
Redis提出了定期数据存储的设计,也就是数据在Redis上存储是有时间限制的
本篇主要从过期键的设计来对Redis进行了解
Redis是基于内存的数据存储,关于数据的持久化存储有两种不同的方式
分别是RDB和AOF,它们都各自的特点和应用的场景
本篇从数据的持久化入手进一步了解Redis的设计
Redis是基于键值对(key-value)形式的NoSql数据库;
与Mysql不同的是,Mysql是关系型数据库,而Redis是非关系型的数据库;
本篇基础篇主要展开对Nosql和Redis的理解和基本的运用。