Redis 缓存设计原则
基本原则
只应将热数据放到缓存中
所有缓存信息都应设置过期时间
缓存过期时间应当分散以避免集中过期
缓存key应具备可读性
应避免不同业务出现同名缓存key
可对key进行适当的缩写以节省内存空间
选择合适的数据结构
确保写入缓存中的数据是完整且正确的
避免使用耗时较长的操作命令,如:keys *
- Redis默认配置中操作耗时超过10ms即视为慢查询
一个key对应的数据不应过大
- 对于string类型,一个key对应的value大小应控制在10K以内,1K左右更优
- hash类型,不应超过5000行
避免缓存穿透
- 数据库中未查询到的数据,可在Redis中设置特殊标识,以避免因缓存中无数据而导致每次请求均达到数据库
缓存层不应抛出异常
- 缓存应有降级处理方案,缓存出了问题要能回源到数据库进行处理
可以进行适当的缓存预热
- 对于上线后可能会有大量读请求的应用,在上线之前可预先将数据写入缓存中
读的顺序是先缓存,后数据库;写的顺序是先数据库,后缓存
数据一致性问题
数据源发生变更时可能导致缓存中数据与数据源中数据不一致,应根据实际业务需求来选择适当的缓存更新策略:
主动更新:在数据源发生变更时同步更新缓存数据或将缓存数据过期。一致性高,维护成本较高。
被动删除:根据缓存设置的过期时间有Redis负责数据的过期删除。一致性较低,维护成本较低。
缓存过期算法
LRU
- 淘汰最后使用时间距当前时间较长的数据
LFU
- 淘汰某段时间内的使用频次较低的数据
FIFO
- 淘汰先写入的数据
版权声明
本文为作者原创,版权归作者雪飞鸿所有。 转载必须保留文章的完整性,且在页面明显位置处标明原文链接。
如有问题, 请发送邮件和作者联系。
相关文章:

最强大,最简洁的【禁止输入中文】
方法一:禁止中文输入法 <input type"text" style"ime-mode:disabled">方法二:禁止黏贴,禁止拖拽,禁止中文输入法!这种方法是最强的禁止 中文输入 <input type"text" οnpaste…

无监督机器学习中,最常见4类聚类算法总结 | 技术头条
点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」,购票请扫码咨询 ↑↑↑编译 | 安然、狄思云来源 | 读芯术(ID:AI_Discovery)在机器学习过程中,很多数据都具有特定值的目标变量,我们可以用它们来训练模…

自动红眼移除算法 附c++完整代码
说起红眼算法,这个话题非常古老了。 百度百科上的描述: “红眼”一般是指在人物摄影时,当闪光灯照射到人眼的时候,瞳孔放大而产生的视网膜泛红现象。 由于红眼现象的程度是根据拍摄对象色素的深浅决定的,如果拍摄对象的…

【Dlib】在GPU环境中运行dlib中的例子dnn_mmod_ex报错...dlib::cuda_error...Error while calling cudaMalloc...
1、问题描述 在GPU环境下运行dlib中的例子dnn_mmod_ex时,报错: terminate called after throwing an instance of dlib::cuda_errorwhat(): Error while calling cudaMalloc(&data, new_size*sizeof(float)) in file /home/laoer/tools/dlib/dlib…

Exchange 2010正式发布了
2009年11月9号,Exchange 2010正式发布了,下载地址:http://www.microsoft.com/downloa ... 0-879f-d74208d6171d简体中文64位120天试用版转载于:https://blog.51cto.com/287416363/657202

【python】使用python脚本将CelebA中图片按照 list_attr_celeba.txt 中属性处理(删除、复制、移动)
1、目的 CelebA中的照片有四十种属性,参见: 【AI】CelebA数据介绍、下载及说明 根据需求从celebA中获取我们想要的图片,方法是将CelebA中图片按照 list_attr_celeba.txt 中属性执行删除、复制或移动操作。 命令格式: python3 C…

firefly 编译opencv3.3.1, CMake报错
更换gcc编译器可以解决 -D CMAKE_C_COMPILER/usr/bin/gcc-4.8转载于:https://www.cnblogs.com/gabrialrx/p/9001554.html

AI时代,为何机器人公司无法盈利只能走向倒闭?
点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」,购票请扫码咨询 ↑↑↑作者 | Bram Vanderborght译者 | 弯月责编 | 屠敏出品 | CSDN(ID:CSDNnews)导语:机器人专家需要公开诚实地讨论我们的成功,而不…

Google Objective-C Style Guide
看题目就知道了~哪天有空翻译成中文的~不多说了~上链接~Google Objective-C Style Guide转载于:https://blog.51cto.com/lulala/659124

ICPC 2019国际大学生程序设计竞赛,中国高校未能夺冠
点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」,购票请扫码咨询 ↑↑↑整理 | 琥珀出品 | AI科技大本营(ID:rgznai100)一年一度的国际大学生程序设计竞赛(International Collegiate Programming Contest,ICPC&am…

完爆Facebook/GraphQL,APIJSON全方位对比解析(一)-基础功能
相关阅读: 完爆Facebook/GraphQL,APIJSON全方位对比解析(二)-权限控制 完爆Facebook/GraphQL,APIJSON全方位对比解析(三)-表关联查询 自APIJSON发布以来,不断有网友拿来和Facebook的GraphQL对比, 甚至有不少人声称“完…

【AI】吴恩达斯坦福机器学习中文笔记汇总
1、吴恩达机器学习和深度学习课程的字幕翻译以及笔记整理参见: 以黄海广博士为首的一群机器学习爱好者发起的公益性质项目(http://www.ai-start.com)。 2、黄海广博士公益项目介绍 https://www.jianshu.com/p/16a749e332db 3、吴恩达 斯坦…

【C++】C++命名空间重定向
参见博客: namespace使用总结 命名空间的重定向的格式: namespace newName oldName; 在caffe源码走读时,遇到namespace的重定向用法,以前没有用过,源码如下,其中 GFLAGS_GFLAGS_H_是为了检测gflags的版…

宝宝都能看懂的机器学习世界
点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」,购票请扫码咨询 ↑↑↑作者 | 武博士、宋知达、袁雪瑶、聂文韬来源 | 大鱼AI(ID:DayuAI-Founder)人类需要经过各式各样的学习才有办法认识这个世界。 当小朋友第一次看到猫后…

iOS LLDB调试命令(Low Lever Debug)
断点 设置断点 $breakpoint set -n XXX set 是子命令 -n 是选项 是--name 的缩写!查看断点列表 $breakpoint list删除 $breakpoint delete 组号禁用/启用 $breakpoint disable 禁用 $breakpoint enable 启用遍历整个项目中满足Game:这个字符的所有方法 $breakpoint set -r Game…

TCP通信速率与延时关系
刚刚研究了链路延时对TCP速率的影响,占位,有空会写一下。转载于:https://blog.51cto.com/csnas/659983

十三、序列化和反序列化(部分转载)
json和pickle序列化和反序列化json是用来实现不同程序之间的文件交互,由于不同程序之间需要进行文件信息交互,由于用python写的代码可能要与其他语言写的代码进行数据传输,json支持所有程序之间的交互,json将取代XML,由…

【C++】google gflags详解
参考博客;https://blog.csdn.net/lezardfu/article/details/23753741 0、简介 gflags是google的一个开源的处理命令行参数的库,使用c开发,具备python接口,可以替代getopt。gflags使用起来比getopt方便,但是不支持参数…

何恺明等人新作:效果超ResNet,利用NAS方法设计随机连接网络 | 技术头条
点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」,购票请扫码咨询 ↑↑↑译者 | 刘畅编辑 | 一一出品 | AI科技大本营(ID:rgznai100)受人工设计的启发,用于图像识别的神经网络从简单的链状模型发展为具有多个分支的网络。ResN…

网络规划设计师考试命题模式持续在变 你变不变
命题模式持续在变 你变不变深入分析2009下半年~2010下半年3次网络规划设计师考试试卷中项目管理模块(约有5~8题,约占总分数的6.67%~10.67%)的命题规律,心中最强烈的一份感觉体现在一个字——变。“变”是事物持续发…

【C++】google glog详解
0、简介 glog是google的日志管理系统,配合gflags库,通过命令行参数管理日志。 源码下载:https://github.com/google/glog ubuntu安装: sudo apt-get install libgoogle-glog*参考博客: https://blog.csdn.net/jcjc91…

仿抖音注册界面制作
话说上次完成了仿抖音我的界面制作之后,今天抽空又把注册界面给做了,还是做了些小改动,将第三方登录去掉了 注册还是老规矩直接奉上psd源码:仿抖音注册界面psd源码 个人博客https://myml666.github.io

00后的AI开发者进阶之道:从入门到鏖战MIT编程大赛 | 人物志
点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」,购票请扫码咨询 ↑↑↑作者 | 若名出品 | AI科技大本营(ID:rgznai100)当所有中国的高中生都在拼命为跨过高考这道窄门疲惫不堪时,美国的准高中毕业生们也开始申请大学&#x…

js的全部替换函数replaceAll
JS替换功能函数,用正则表达式解决,js的全部替换,学习js的朋友可以参考下。 alert("abacacf".replace(a,9)); alert("abacacf".replace(/a/g,9)); 第一个运行的结果 9bacaf 这个只是替换了第一个 第二个运行的结果 9b9c9f…
【C++】Google Protocol Buffer(protobuf)详解(一)
1、简介 Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准, Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通…

python使用difflib对比文件示例
使用difflib模块对比文件内容1 示例:字符串差异对比 vim duibi.py#!/usr/bin/env python # -*- coding: utf-8 -*- import re import os import difflib tex1"""tex1: this is a test for difflib ,just try to get difference of the log 现在试试…

技术大佬们都推荐的vim学习指南来了,值得收藏!
「2019 Python开发者日」全日程揭晓,请扫码咨询 ↑↑↑作者 | kbsc13,京东算法工程师,研究领域计算机视觉来源 | 机器学习与计算机视觉(ID:AI_Developer)编辑 | Jane【导语】在 Linux 下最常使用的文本编辑…

NoSQl分类
2019独角兽企业重金招聘Python工程师标准>>> http://nosql-database.org/ nosql简单分类 类型 部分代表 特点 列存储 hbase cassandra hypertable 顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩&…

手撕代码之七大常用排序算法 | 附完整代码
点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓,请扫码咨询 ↑↑↑0.导语本节为手撕代码系列之第一弹,主要来手撕排序算法,主要包括以下几大排序算法:直接插入排序冒泡排序选择排序快速排序希尔排序堆排序归并排序…

【C++】google gtest 详解
1、参考博客; https://blog.csdn.net/baijiwei/article/details/81265491 https://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html 2、编译和安装 $ git clone https://github.com/google/googletest.git $ cd googletest $ mkdir mybuild $ cd mybui…