抢购场景中,要保证两点: 1.库存不会超减/少卖 2.在1基础上的执行速度 我测试了两种方案, 方案一.Mysql开启事务 我把库存表简单设计如下 假设库存有10000件(val=100000) php逻辑代码 循环了100000次,用时 方案二.使用Redis开启事务 假设库存有100000件(s ...
分类:
数据库 时间:
2018-02-01 18:26:50
阅读次数:
227
RDB 持久化 一、生成RDB cmd:SAVE --阻塞进程,执行完,才能有效接收客户端命令。 cmd: BGSAVE --非阻塞,开启子进程保存。 客户端如果发送SAVE和BGSAVE命令直接拒绝。 BGWRITEAOF命令再BGSAVE执行完才能执行。 二、载入RDB 服务器启动时自动执行,检 ...
分类:
其他好文 时间:
2018-01-27 15:28:35
阅读次数:
129
最近看了有关redis的一些东西,了解了redis的一下命令,就记录一下: redis中的setnx命令: 关于redis的操作命令,我们一般会使用set,get等一系列操作,数据结构也有很多,这里我们使用最简单的string来存储锁。 redis下提供一个setnx命令用来将key值设为value ...
分类:
其他好文 时间:
2018-01-12 19:01:50
阅读次数:
174
概述 Redis服务器负责与客户端建立网络连接,之前的数据结构部分已经看过了,本章主要从下面三个方面讲解。 1.服务器执行命令的过程 2.serverCron函数的执行 3.服务器的初始化 服务器执行命令的过程 一个客户端请求命令的基本过程大致如下: 1.客户端发送请求命令给服务器,比如set ke ...
分类:
其他好文 时间:
2017-10-09 16:42:11
阅读次数:
269
概述 对于每个与服务器连接的客户端,服务器都为它创建相应的redisClient的数据结构,并保持了相应的状态。Redis Server通过一个链表来保存所有的客户端连接。 本章包括: 客户端数据结构介绍; 客户端的创建与关闭 数据结构 先来看下redisClient中的数据结构: 客户端创建与关闭 ...
分类:
其他好文 时间:
2017-10-06 22:29:31
阅读次数:
206
概述 Redis除了RDB方式提供持久化外,还提供了AOF的方式,和RDB保存数据库的键值对不同,AOF是记录数据库执行的命令来记录数据库状态的。当AOF开始时,Redis服务器加载时,会先检查AOF文件是否存在,如果存在,则加载AOF,否则加载RDB文件。本章主要分为: 1.AOF实现 2.AOF ...
分类:
其他好文 时间:
2017-10-04 21:35:46
阅读次数:
298
概述 Redis为内存数据库,即所有的键值对信息保存在内存中,那么一旦服务器出现问题重启,内存中的数据就会没有了。所以Redis需要实现持久化,将内存中的数据持久化到硬盘,在重新启动后,又将硬盘中的数据加载到内存中。 RDB文件生成与载入 有两个命令可用于生成RDB文件,save和bgsave: S ...
分类:
其他好文 时间:
2017-10-02 21:30:32
阅读次数:
568
概述 1.数据库结构 2.数据库键空间 3.键生存时间 4.持久化对过期键处理 5.数据库通知 1.数据库结构 Redis服务器将所有server状态都保存在数据结构中的db数组,服务器会根据dbnum来决定创建多个个数据库,默认为16个。 创建db后,如下所示: 同样的在redisClient的数 ...
分类:
数据库 时间:
2017-09-30 19:57:02
阅读次数:
281
概述 前面几张介绍了一些Redis的数据结构,比如SDS,集合,字典等,但是Redis并不会直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这些对象包括字符串对象,列表对象,哈希对象,集合对象和有序集合对象。每种对象都用到了一种或多种前面介绍的数据结构。 通过不同类型 ...
分类:
其他好文 时间:
2017-09-27 20:42:44
阅读次数:
186
概述 1.intset概述 2.intset实现 3.intset升级 intset概述 整数集合是Redis集合键的底层实现之一,当值都为整数时,redis就会选择整数集合作为底层实现。 可以保存int16_t,int32_t,int64_t类型的整数值,并且集合中不会出现重复元素。 intset ...
分类:
其他好文 时间:
2017-09-27 19:13:21
阅读次数:
123