(五)Redis在项目中应用

目录

  • 1. redis实现分布式锁
  • 2. 订单或任务缓存
  • 3. Redis和DB数据一致性
  • 4. 大并发Redis穿透直接访问DB
  • 5. 接口限流器

参考:

  • Redis在项目中的运用总结

1. redis实现分布式锁

参考:

  • Redis分布式锁的正确实现方式
  • 分布式锁简单入门以及三种实现方式介绍
127.0.0.1:6379> set distributeKey requestId ex 10 nx
OK
127.0.0.1:6379> get distributeKey
"requestId"
127.0.0.1:6379> del distributeKey
(integer) 1
127.0.0.1:6379> get distributeKey
(nil)
127.0.0.1:6379> set distributeKey requestId ex 10 nx
OK
127.0.0.1:6379> set distributeKey requestId_1 ex 10 nx
(nil)
127.0.0.1:6379> get distributeKey
"requestId"
127.0.0.1:6379> 

2. 订单或任务缓存

127.0.0.1:6379> lpush face "{url:http://**.jpg,roi:{x:0,y:0,w:1,h:1}}"
(integer) 1
127.0.0.1:6379> lpush face "{url:http://**1.jpg,roi:{x:0,y:0,w:1,h:1}}"
(integer) 2
127.0.0.1:6379> lrange face 0 -1
1) "{url:http://**1.jpg,roi:{x:0,y:0,w:1,h:1}}"
2) "{url:http://**.jpg,roi:{x:0,y:0,w:1,h:1}}"
127.0.0.1:6379> 

3. Redis和DB数据一致性

只要有多份数据,就会涉及到数据一致性的问题。
更新缓存步骤:

  1. 更新DB;
  2. 更新Redis;
  3. 更新Redis失败,出现数据不一致:
    • 重试n次;
    • 更新操作插入MQ,后台继续更新;

4. 大并发Redis穿透直接访问DB

使用连接池,限制访问DB并发数。

5. 接口限流器

参考:

  • 基于Redis的限流器的实现

转载于:https://www.cnblogs.com/walkinginthesun/p/10149347.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/265158.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

成为你自己

2019独角兽企业重金招聘Python工程师标准>>> 一个看过许多国家、民族以及世界许多地方的旅行家,若有人问他,他在各处发现人们具有什么相同的特征,他或许会回答∶他们有懒惰的倾向。有些人会觉得,如 果他说他们全是怯懦…

网络知识梳理--OSI七层网络与TCP/IP五层网络架构及二层/三层网络

作为一个合格的运维人员,一定要熟悉掌握OSI七层网络和TCP/IP五层网络结构知识。 废话不多说!下面就逐一展开对这两个网络架构知识的说明:一、OSI七层网络协议OSI是Open System Interconnect的缩写,意为开放式系统互联。 OSI参考模…

动态链接库 仅有.dll文件时候的使用方法

在没有.h和.lib文件时,需要函数指针和WIN32 API函数 LoadLibrary, GetProcAddress 和FreeLibrary 只需要.dll文件即可(将.dll文件置入工程目录中)。 LoadLibrary 进程调用 LoadLibrary以显式链接到 DLL。 如果函数执行成功,它会将…

跟vczh看实例学编译原理——一:Tinymoe的设计哲学

自从《序》胡扯了快一个月之后,终于迎来了正片。之所以系列文章叫《看实例学编译原理》,是因为整个系列会通过带大家一步一步实现Tinymoe的过程,来介绍编译原理的一些知识点。 但是第一个系列还没到开始处理Tinymoe源代码的时候,首…

Linux蜂鸣器实验(使用上一节子系统思想,摈弃了自己配置寄存器的繁琐操作)

目录子系统思想的蜂鸣器驱动流程硬件原理图分析实验程序编写修改设备树文件蜂鸣器驱动程序编写编写测试APP运行测试编译驱动程序和测试APP运行测试上一章实验中我们借助pinctrl 和gpio 子系统编写了LED 灯驱动,I.MX6U-ALPHA 开发板上还有一个蜂鸣器,从软…

gitbash如何修改可恶的蓝色字体

1、问题 这完全看不清啊!! 2、环境 git version 2.19.0 3、解决 1)编辑/etc/bash.bashrc # Uncomment to use the terminal colours set in DIR_COLORS eval "$(dircolors -b /etc/DIR_COLORS)" 2)编辑/etc/DIR…

Oracle分析函数

2019独角兽企业重金招聘Python工程师标准>>> Oracle分析函数——函数列表 SUM :该函数计算组中表达式的累积和 MIN :在一个组中的数据窗口中查找表达式的最小值 MAX :在一个组中的数据窗口中查找表达式的…

Linux并发与竞争介绍(原子操作、自旋锁、信号量、互斥体)

目录并发与竞争并发与竞争简介保护内容是什么原子操作原子操作简介原子整形操作API函数(atomic_t 结构体)原子位操作API 函数自旋锁自旋锁简介自旋锁API函数线程与线程线程与中断(获取锁之前关闭中断)其他类型的锁(读写锁、顺序锁)自旋锁使用注意事项信号量信号量简介信号量API…

新后缀再开放,投资者应谨慎对待!

为什么80%的码农都做不了架构师?>>> 新后缀再开放,投资者应谨慎对待!2014年伊始,一大批如BIKE,GURU,HOLDINGS等新域名后缀正式启用,是继CNNIC开放CN保留域名注册之后,投…

Linux并发与竞争实验(一次只允许一个应用程序操作LED灯)

目录原子操作实验实验程序编写运行测试(运行多个APP抢占资源)自旋锁实验实验程序编写运行测试信号量实验实验程序编写运行测试(第二条命令因为获取信号量失败而进入休眠状态)互斥体实验(类似二值信号量,会休眠)实验程序编写运行测试在上一章中我们学习了Linux 下的并…

drf缓存

全站缓存: 两个中间件: MIDDLEWARE_CLASSES ( ‘django.middleware.cache.UpdateCacheMiddleware’, #第一 django.middleware.common.CommonMiddleware, ‘django.middleware.cache.FetchFromCacheMiddleware’, #最后 ) CACHE_MIDDLEWARE_SECONDS10 单页面缓存:…

在 SharePoint 2013 中选择正确的 API 集

决定使用哪个 API 集的因素 您可以在多个 API 集中选择一个来访问 SharePoint 2013 平台。您使用哪一个 API 集取决于以下因素: 应用程序的类型。 可能的类型包括但不限于以下不相互排斥的类别:SharePoint 相关应用程序、SharePoint 页上的 Web 部件、在…

Linux按键输入实验(体验一下输入驱动,实际开发使用input子系统处理)

目录Linux下按键驱动原理(使用原子操作)硬件原理图分析实验程序编写修改设备树文件按键驱动程序编写编写测试APP(循环读取按键值)运行测试编译驱动程序和测试APP运行测试(while循环导致CPU占用率很高,后面使用阻塞非阻塞IO处理)在前几章我们都是使用的GPIO 输出功能…

SAP Fiori + Vue = ?

2017年3月28日,我到国内一个SAP CRM客户那里,同他们的架构师关于二次开发的UI框架选择SAP UI5还是Vue进行了一番探讨。回到SAP研究院之后,我把这个问题扔到了公司的微信群里,引起了大家的热烈讨论。 因为出差回来之后,…

linux内核书籍

linux内核书籍 1, 关于操作系统理论的最初级的知识。不需要通读并理解《操作系统概念》《现代操作系统》等巨著,但总要知道分时(time-shared)和实时(real-time)的区别是什么,进程是个什么东西,C…

Linux 内核定时器实验————复习到这

目录Linux 时间管理和内核定时器简介内核时间管理简介内核定时器简介Linux 内核短延时函数硬件原理图分析实验程序编写修改设备树文件定时器驱动程序编写编写测试APP运行测试编译驱动程序和测试APP运行测试定时器是我们最常用到的功能,一般用来完成定时功能&#xf…

商品评价判别,文本分类——学习笔记

FASTTEXT(Facebook开源技术) 二分类任务,监督学习。 自然语言 NLP自然语言处理 步骤: 语料Corpus:好评和差评分词Words Segmentation:基于HMM构建dict tree 构建词向量Construct Vector: one-ho…

跨平台(Android, iOS, WP, HTML5)游戏开发libGDX学习教程

2019独角兽企业重金招聘Python工程师标准>>> 疯狂小土豆的跨平台游戏开发引擎libGDX游戏开发视频,本视频主讲Android和桌面游戏开发。libGdx是一个跨平台的2D/3D的游戏开发框 架,它由Java/C/C语言编写而成。它基于Apache License, Version 2.…

分页器 版本控制

分页器 三种分页: 第一种: 类似于原来django中的分页 -page_size api_settings.PAGE_SIZE -page_query_param page -page_size_query_param -max_page_size 第二种:偏移分页 #每页显示的条数 default_limit api_settings.PAGE_SIZE #标杆值 offset_query_param offset #往后…

Linux 中断实验

目录Linux 中断简介Linux 中断API 函数上半部与下半部设备树中断信息节点获取中断号硬件原理图分析实验程序编写修改设备树文件按键中断驱动程序编写编写测试APP运行测试编译驱动程序和测试APP运行测试不管是裸机实验还是Linux 下的驱动实验,中断都是频繁使用的功能…