Redis

你知道Redis可以实现延迟队列吗?

穿精又带淫゛_ 提交于 2020-11-14 17:03:41
点击上方蓝色字体,选择“设为星标” 回复”资源“获取整理的海量电子书 作者:_BKing 来源:www.cnblogs.com/xiaowei123/p/13222710.html 最近,又重新学习了下Redis,深深被Redis的魅力所折服,Redis不仅能快还能慢(我想也这么优秀o(╥﹏╥)o),简直利器呀 咳咳咳,大家不要误会,本文很正经的啦!伙伴们跟我一起冲呀,我们一起去爬爬这座延时队列的山峰,探一探它究竟到底有高。 那接下来开始我们的旅行啦~,我们都知道Redis是一种基于内存的单进程单线程数据库(Redis6.0开始之后支持多线程啦!),处理速度都非常快。那么为何Redis又能慢呢?原来,这里说的慢是指Redis可以设置一些参数达到慢处理的结果。(这就是为什么Redis既能快又能慢啦!) 那接下来开始讲讲我们的Redis在队列中如何实现延时的情况: 在我们日常生活中,我们可以发现: 在淘宝、京东等购物平台上下单,超过一定时间未付款,订单会自动取消。 打车的时候,在规定时间没有车主接单,平台会取消你的单并提醒你暂时没有车主接单。 点外卖的时候,如果商家在10分钟还没接单,就会自动取消订单。 收快递的时候,如果我们没有点确认收货,在一段时间后程序会自动完成订单。 在平台完成订单后,如果我们没有在规定时间评论商品,会自动默认买家不评论。 ....... 这时

一文带你全面了解限流算法

别说谁变了你拦得住时间么 提交于 2020-11-14 12:53:57
大多数情况下,我们不需要自己实现一个限流系统,但限流在实际应用中是一个非常微妙、有很多细节的系统保护手段,尤其是在高流量时,了解你所使用的限流系统的限流算法,将能很好地帮助你充分利用该限流系统达到自己的商业需求和目的,并规避一些使用限流系统可能带来的大大小小的问题。 令牌桶算法 令牌桶(token bucket)算法,指的是设计一个容器(即“桶”),由某个组件持续运行往该容器中添加令牌(token),令牌可以是简单的数字、字符或组合,也可以仅仅是一个计数,然后每个请求进入系统时,需要从桶中领取一个令牌,所有请求都必须有令牌才能进入后端系统。当令牌桶空时,拒绝请求;当令牌桶满时,不再往其中添加新的令牌。 令牌桶算法的架构如图1所示: 图1 令牌桶算法 令牌桶算法的实现逻辑如下: 首先会有一个定义的时间窗口的访问次数阈值,例如每天1000人,每秒5个请求之类,限流系统一般最小粒度是秒,再小就会因为实现和性能的原因而变得不准确或不稳定,假设是T秒内允许N个请求,那么令牌桶算法则会使令牌添加组件每T秒往令牌桶中添加N个令牌。 其次,令牌桶需要有一个最大值M,当令牌添加组件检测到令牌桶中已经有M个令牌时,剩余的令牌会被丢弃。反映到限流系统中,可以认为是当前系统允许的瞬时最大流量,但不是持续最大流量。例如令牌桶中的令牌最大数量是100个,每秒钟会往其中添加10个新令牌,当令牌满的时候

Java实操避坑指南 业务代码-整合框架-存储-缓存常见错误详解

生来就可爱ヽ(ⅴ<●) 提交于 2020-11-14 10:25:41
Java实操避坑指南 业务代码-整合框架-存储-缓存常见错误详解 第1章 课程介绍 介绍制作这门课程的初衷、我对这门课程的定位以及愿景,课程中包含了哪些内容,能够帮助你什么,以及怎样去学习这门课程,才能更好的消化吸收。 1-1 为什么做这门课 试看 1-2 为何我们需要每一个你 1-3 感悟之外,你有困扰了还可以这样 第2章 Java 空指针和异常 – 常犯指数5星 空指针问题和各种常见的异常(并发修改、类型转换)几乎是所有 Java 初学者最头疼的问题,本章将会教会你怎么避免这些问题、如何使用 Optional 规避空指针问题,以及正确的使用 try catch 捕获异常 2-1 如何从根源避免空指针 试看 2-2 赋值时自动拆箱出现空指针 2-3 字符串、数组、集合在使用时出现空指针怎么办? 2-4 使用 Optional 需要注意些什么? 2-5 明明 try catch 了却没有解决好异常? 2-6 常见异常:并发修改、类型转换、枚举查找 2-7 编码中常见异常解决办法 2-8 使用 try finally 资源泄露隐患 第3章 Java 计算、集合、接口 – 常犯指数4星 无论什么业务开发,都离不开计算和集合数据结构的使用,频繁的使用带来频繁的出错显然是不能接受的,本章会让你看到最常见的错误以及解决办法;初学者常常会混淆接口和抽象类,尤其是 Java8

Redis—持久化

爱⌒轻易说出口 提交于 2020-11-14 07:01:32
一、持久化简介 Redis 的数据 全部存储 在 内存 中,如果 突然宕机 ,数据就会全部丢失,因此必须有一套机制来保证 Redis 的数据不会因为故障而丢失,这种机制就是 Redis 的 持久化机制 ,它会将内存中的数据库状态 保存到磁盘 中。 持久化发生了什么 | 从内存到磁盘 我们来稍微考虑一下 Redis 作为一个 "内存数据库" 要做的关于持久化的事情。通常来说,从客户端发起请求开始,到服务器真实地写入磁盘,需要发生如下几件事情: 详细版 的文字描述大概就是下面这样: 客户端向数据库 发送写命令 (数据在客户端的内存中) 数据库 接收 到客户端的 写请求 (数据在服务器的内存中) 数据库 调用系统 API 将数据写入磁盘 (数据在内核缓冲区中) 操作系统将 写缓冲区 传输到 磁盘控控制器 (数据在磁盘缓存中) 操作系统的磁盘控制器将数据 写入实际的物理媒介 中 (数据在磁盘中) 注意: 上面的过程其实是 极度精简 的,在实际的操作系统中, 缓存 和 缓冲区 会比这 多得多 ... 如何尽可能保证持久化的安全 如果我们故障仅仅涉及到 软件层面 (该进程被管理员终止或程序崩溃) 并且没有接触到内核,那么在 上述步骤 3 成功返回之后,我们就认为成功了。即使进程崩溃,操作系统仍然会帮助我们把数据正确地写入磁盘。 如果我们考虑 停电/ 火灾 等 更具灾难性 的事情

linux(安装软件)

独自空忆成欢 提交于 2020-11-14 06:38:37
Mysql 1.下载源 wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm 2.安装源 yum localinstall mysql57-community-release-el7-8.noarch.rpm 3.检查是否安装成功 yum repolist enabled | grep "mysql.*-community.*" 4.安装mysql yum install mysql-community-server 5.开机启动 systemctl enable mysqld systemctl daemon-reload 6.启动mysql service mysqld start 7.查看运行状态 service mysqld status 8.获取临时密码 grep 'temporary password' /var/log/mysqld.log 9.登录mysql mysql -uroot -p 10.修改密码难度 set global validate_password_policy=0; set global validate_password_length=1; 11.修改密码 ALTER USER 'root'@'localhost' IDENTIFIED BY

开源GitHub标星30K的腾讯Redis笔记,阿里技术专家看到都赞不绝口

感情迁移 提交于 2020-11-13 19:29:03
前言 Redis的火爆程度,相信不用我多说,现在大型的互联网公司基本上都需要使用到Redis技术。Redis作为目前最火爆的内存数据库之一,通过在内存中读写数据,很大程度上提高了读写速度,可以说Redis 是实现网站高并发不可或缺的一部分。 但是,对于Redis的使用,相信还是有很多人不知道如何使用,也有不少中小型企业还没有使用到Redis,但是现在的大厂要求,对Redis的使用是需要熟练并掌握的,因此,学习Redis刻不容缓。 好消息是,今天公开了一份宝藏的技术笔记,由腾讯技术专家整理出来的Redis技术笔记,下载量已经突破了30W。 现在分享出来,需要的朋友,私信我领取密码“Redis”即可免费下载。 首先,上一套Redis思维脑图 这一套Redis的思维脑图还是非常详细具体的,内容比较多,图片展示的是“简约版”,实际上还有更完整的内容,“+”键未展开,Redis的思维导图能够更好地去帮助我们理解这本笔记的内容,也让我们在学习Redis的时候有一个更清晰的思路。 Redis思维导图内容: 基本数据结构及其应用:字符串+列表+集合+有序集合+哈希 用Redis实现分布式锁 持久化:AOF+RDB 如何解决多线程竞争问题 数据库、缓存双写不一致问题 事务 如何保证高可用 哨兵 集群 面试题相关 然后,上正菜:Redis技术笔记 1.认识Redis (Redis简介