基于redis实现的扣减库存-redis扣减库存命令(1-3-24)

更新时间:2024-08-21 分类:Redis 浏览量:2

Redis本文目录一览:

  • 1、redis常用命令是什么?
  • 2、redis适合什么场景?
  • 3、redis一般运用在哪里
  • 4、redismysql库存扣减失败怎么办
  • 5、深入了解Redis操作五大数据类型常用命令
  • 6、通过redis+lua实现加减库存

redis常用命令是什么?

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。

如果我们存储的string中的内容是数字的话,我们也可以对其进行增或减操作,Redis可以自动的对字符串进行相关的操作。

curl命令 + 请求接口的地址 如果想看到详细的请求信息,可以加上 -v 参数 结果如下:可以用 -X POST 来申明我们的请求方法,用 -d 参数,来传送我们的参数。

开启redis-benchmark压测进程 检查复制积压缓冲区内存消耗,可以看到因为缓冲区设置过大,数据量才存储190多M,Redis就无法写入了。

常用命令:String应用场景:Redis hash是一个string类型的field和value的映射表, hash特别适用于存储对象 。每个hash可以存储 232-1 (40亿左右)键值对。可以看成KEY和VALUE的MAP容器。相比于JSON,hash占用很少的内存空间。

redis适合什么场景?

1、云数据库redis的应用场景有:缓存、会话存储、发布/订阅系统、计数器和排行榜、实时数据分析。缓存 Redis最常见的用途就是作为缓存层,由于Redis存储在内存中,读写速度非常快,可以显著减轻数据库或其他后端服务的负载压力。

2、- 计数器:Redis 提供的 incr 命令可以实现计数器,适用于电商网站的浏览量、视频的播放量等场景。- 排行榜:Redis 提供的有序集合数据类型能实现各种复杂排行榜的应用。

3、不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。总结: Redis受限于特定的场景,专注于特定的领域之下,速度相当之快,目前还未找到能替代使用产品。

redis一般运用在哪里

1、缓存:这应该是 Redis 最主要的功能了,也是大型网站必备机制,合理地使用缓存不仅可以加 快数据的访问速度,而且能够有效地降低后端数据源的压力。

2、缓存 Redis最常见的用途就是作为缓存层,由于Redis存储在内存中,读写速度非常快,可以显著减轻数据库或其他后端服务的负载压力。通过将频繁访问的数据存储在Redis中,可以加速数据的获取,提升系统的响应性能。

3、国内外很多大型互联网公司都在使用 Redis,比如 Twitter、YouPorn、暴雪娱乐、Github、StackOverflow、腾讯、阿里、京东、华为、新浪微博等等,很多中小型公司也都有应用。

4、redis是一个单线程的NoSQL数据库,主要用来做数据缓存,一般大型网站的应用和数据库之间的那一层就是Redis。

5、// 设置一分钟过期的sessionSET randomHash {userId} EX 60// 获取用户IDGET randomHash队列使用Redis可以做的一个不太常见,但非常有用的事情是排队。

6、丰富的特性 _ Redis还支持 publish/subscribe, 通知, key 过期等等特性。Redis的缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。

redismysql库存扣减失败怎么办

如果只用Redis来进行存储,处理完数据直接返回前端即可。如果还要持久化到DB,要尽量避免直接操作DB,因为DB往往是最大的IO瓶颈,如果要异步落库到DB,比如使用MQ。要注意处理Redis扣减和消息发送的原子性处理。

如果某个命令执行失败,可以通过修改 AOF 文件中的内容来回滚之前的操作。定期备份 Redis 数据库:如果您发现 Redis 数据库中的数据发生了错误,可以使用备份的数据进行恢复。

延迟双删: 先删redis,然后更新mysql,然后sleep一段时间,再删除redis。 本方案可以让用户更早查询到新数据。

如果方案是扣减时候先lua扣redis,扣成功了同步扣mysql,这样可以解决流量大库存少的问题,基本上库存比较少没有啥问题。

使用redis做缓存必须解决两个问题,首先就是确定用何种数据结构存储来自mysql的数据;确定数据结构之后就是需要确定用什么标识来作为数据的key。 mysql是按照表存储数据的,这些表是由若干行组成。

深入了解Redis操作五大数据类型常用命令

hash可以用于存储变更的数据,比如user,name,age等,尤其是用户信息之类的,hash更加适合用于对象的存储,string更加适合用于字符串的存储。

常用命令:set、get、decr、incr、mget等。注意:一个键最大能存储512MB。Hash(哈希)Redis hash 是一个键值(key=value)对集合;是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。

Redis五种数据类型分别是string(字符串),hash(哈希),list(列表),set(集合)及sortset(有序集合)。字符串string字符串类型是Redis中最基本的数据存储类型,它是一个由字节组成的序列,在Rediss中是二进制安全的。

空间预分配:对字符串进行空间扩展的时候,扩展的内存比实际需要的多,这样可以减少连续执行字符串增长操作所需的内存重分配次数。

redis支持的数据类型就是列表、哈希、集合并和删除、获取子列表等。Redis支持的五种数据类型包括String、Hash、List、Set、Zset,其中,String类型的值可以是字符串、数字或二进制,但值最大不能超过512MB。

通过redis+lua实现加减库存

我们先分析场景,通过多种方案对比,选用了redis+lua的组合来满足我们的业务需要。利用redis单线程的特点,以及redis6版本后开始对lua的支持,我们采用redis执行lua脚本来确保我们查询+修改的串行执行。

如果方案是扣减时候先lua扣redis,扣成功了同步扣mysql,这样可以解决流量大库存少的问题,基本上库存比较少没有啥问题。

Redis事务可以保证多个命令的原子性执行。需要注意的是,Redis事务并不是真正的ACID事务,因为Redis并不支持回滚操作Redis是一种非常流行的内存数据库,常用于数据缓存与高频数据存储。

Redis的LUA脚本的执行是具有原子性的,也就是说在执行脚本期间,其他客户端发送的请求将会被阻塞,直到该脚本执行完成。

Redis Incr 命令将 key 中储存的数字值增一。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

Redis的有序集合和计数器功能非常适合实现排行榜和计数器功能。可以将用户的得分或计数存储在有序集合中,通过Redis提供的相关命令进行排名查询、范围查询、增减操作等。