Redis

Redis00--Redis的基本命令

主宰稳场 提交于 2020-10-03 21:48:58
前言 这一篇文章我们主要是来整理下Redis的一些常用命令。 基本命令 启动Redis ./src/redis-server redis.conf 连接Redis数据库 ./src/redis-cli -h 127.0.0.1 -p 6379 字符串相关的操作命令 String 数据类型主要用在做缓存,计数器,分布式锁,分布式ID等等 3. 设置一个字符串类型的值 set key value 例如: set testkey testvalue 获取字符串的值 get key 例如:get testkey 5. 删除键 del key 例如:del testkey 不存在就插入(not exists), 存在的话就不会插入,这是用Redis做分布式锁的基础。 setnx key value 例如:127.0.0.1:6379> setnx username zhangsan (integer) 1 设置过期时间(expire) setex key time value 例如: 127.0.0.1:6379> setex username 1 lisi 递增 incr key incrby key increment 例如:127.0.0.1:6379> incr age 递减 decr key decrby key decrement 例如: 127.0.0.1:6379> decr

Srping cloud gateway 实现动态路由(MySQL持久化+redis分布式缓存) 最新

落爺英雄遲暮 提交于 2020-10-03 13:29:22
摘要 本文讲解在Spring Cloud 中如何通过MySQL和redis实现动态路由配置,以及路由信息持久化在MySQL中,同时使用Redis作为分布式路由信息缓存。 无广告原文链接: Srping cloud gateway 实现动态路由(MySQL持久化+redis分布式缓存) 正文 Sping Cloud gateway 中自己集成了一套基于配置文件的一套路由规则,该规则需要配置在application.yml/properties文件中,如果在使用配置文件时想要动态化实现路由配置,需要网关结合Spring cloud config一起来使用(路由配置在config配置中心中,随着config修改路由信息,gateway会自动刷新而不需要重启刷新路由)。 本文将会在上述基础之上修改路由的存储方式为MySQL,并且把路由信息缓存在redis中,当数据库中的路由信息发生变化时, 可以主动通知网关去重新加载路由信息。 我们在使用此方法改造前,请去掉您的配置文件中配置的路由规则 注意,本部分代码需要使用的部分依赖为: <!-- ali json依赖 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> <

4W字的后端面试知识点总结(持续更新)

为君一笑 提交于 2020-10-03 13:28:41
点赞再看,养成习惯,微信搜索【 三太子敖丙 】关注这个互联网苟且偷生的工具人。 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点、资料以及我的系列文章。 前言 前段时间敖丙不是在复习嘛,很多小伙伴也想要我的复习路线,以及我自己笔记里面的一些知识点,好了,丙丙花了一个月的时间,整整一个月啊,给大家整理出来了。 一上来我就放个大招好吧,我的复习脑图,可以说是全得不行,为了防止被盗图,我加了水印哈。 这期看下去你会发现很硬核,而且我会持续更新,啥也不说了,看在我熬夜一个月满脸痘痘的份上,你可以点赞了哈哈。 注:如果图被压缩了,可以去公众号【三太子敖丙】回复【复习】获取原图 Spring Spring框架的七大模块 Spring Core:框架的最基础部分,提供 IoC 容器,对 bean 进行管理。 Spring Context:继承BeanFactory,提供上下文信息,扩展出JNDI、EJB、电子邮件、国际化等功能。 Spring DAO:提供了JDBC的抽象层,还提供了声明性事务管理方法。 Spring ORM:提供了JPA、JDO、Hibernate、MyBatis 等ORM映射层. Spring AOP:集成了所有AOP功能 Spring Web:提供了基础的 Web 开发的上下文信息,现有的Web框架,如JSF

牛逼哄哄的布隆过滤器,到底有什么用?

為{幸葍}努か 提交于 2020-10-03 13:23:31
作者:CodeBear的园子 www.cnblogs.com/CodeBear/p/10911177.html 本文是站在小白的角度去讨论布隆过滤器,如果你是科班出身,或者比较聪明,又或者真正想完全搞懂布隆过滤器的可以移步。 不知道从什么时候开始,本来默默无闻的布隆过滤器一下子名声大燥,仿佛身在互联网,做着开发的,无人不知,无人不晓,哪怕对技术不是很关心的小伙伴也听过它的名号。 我也花了不少时间去研究布隆过滤器,看了不少博客,无奈不是科班出身,又没有那么聪明的头脑,又比较懒...经过“放弃,拿起,放弃,拿起”的无限轮回,应该算是了解了布隆过滤器的核心思想,所以想给大家分享下。 布隆过滤器的应用 我们先来看下布隆过滤器的应用场景,让大家知道神奇的布隆过滤器到底能做什么。 缓存穿透 我们经常会把一部分数据放在Redis等缓存,比如产品详情。这样有查询请求进来,我们可以根据产品Id直接去缓存中取数据,而不用读取数据库,这是提升性能最简单,最普遍,也是最有效的做法。面试常问,缓存三大问题及解决方案! 一般的查询请求流程是这样的:先查缓存,有缓存的话直接返回,如果缓存中没有,再去数据库查询,然后再把数据库取出来的数据放入缓存,一切看起来很美好。 但是如果现在有大量请求进来,而且都在请求一个不存在的产品Id,会发生什么?既然产品Id都不存在,那么肯定没有缓存,没有缓存

Redis 是如何处理已过期元素的?[云图智联]

不打扰是莪最后的温柔 提交于 2020-10-03 13:21:11
1 面试题 Redis 如何处理已过期的元素? 2 涉及知识点 此问题涉及以下知识点: 过期删除策略有哪些? 这些过期策略有哪些优缺点? Redis 使用的是什么过期策略? Redis 是如何优化和执行过期策略的? 3 答案 常见的过期策略: 定时删除 惰性删除 定期删除 1)定时删除 在设置键值过期时间时,创建一个定时事件,当过期时间到达时,由事件处理器自动执行键的删除操作。 ① 优点 保证内存可以被尽快的释放 ② 缺点 在 Redis 高负载的情况下或有大量过期键需要同时处理时,会造成 Redis 服务器卡顿,影响主业务执行。 2)惰性删除 不主动删除过期键,每次从数据库获取键值时判断是否过期,如果过期则删除键值,并返回 null。 ① 优点 因为每次访问时,才会判断过期键,所以此策略只会使用很少的系统资源。 ② 缺点 系统占用空间删除不及时,导致空间利用率降低,造成了一定的空间浪费。 ③ Redis 源码解析 惰性删除的源码位于 src/db.c 文件的 expireIfNeeded 方法中,源码如下: int expireIfNeeded(redisDb *db, robj *key) { // 判断键是否过期 if (!keyIsExpired(db,key)) return 0; if (server.masterhost != NULL) return 1; /*

php生成唯一订单号

孤人 提交于 2020-10-03 13:18:01
使用 https://github.com/godruoyi/php-snowflake 来生成 <?php declare(strict_types=1); use think\facade\Cache; use think\facade\Config; use Godruoyi\Snowflake\Snowflake; use Godruoyi\Snowflake\RedisSequenceResolver; /** * 获取redis实例 * * @return \Redis */ function get_redis(): \Redis { return Cache::store()->handler(); } /** * 生成唯一订单号 * * @param string $prefix 订单号前缀 * @return string */ function build_order_no(string $prefix = ''): string { $options = Config::get('cache.stores.redis'); $redis = get_redis(); $snowflake = new Snowflake(); $sequence = new RedisSequenceResolver($redis); $sequence-

PMP: 项目管理之时间管理

谁说我不能喝 提交于 2020-10-03 12:36:47
坦白的说我自己对时间管理做的不够好,也一直在反思怎么把时间合理有效的利用。大学课程中基本上都学过软件管理的概念。不过工作以后基本上都是放羊式的感觉。 听了王安老师的课程,对时间管理有了更深刻的了解。 本文类似流水式的笔记,简单总结下我所了解到的时间管理的内容. ~ by 飞鸟 2018/06/26 概述 什么是时间管理 时间管理也叫做进度管理。是指通过事先规划和运用一定的技巧、方法与工具实现对时间的灵活以及有效运用,从而实现 个人或组织的既定目标。 时间管理包括保证项目按时完成的各个过程。 时间的特殊性 1. 最客观 ,不可再生,对于每个人最公平。 2. 是对工期,对项目 **最容易衡量** 的一个指标。 项目面临的问题 1. 项目工期是多少?是否合理?你是怎么估算的? 2. 按照阶段,什么时间段应该完成哪一步?特别是复杂的项目,什么时间点完成基础1期,什么时候完成2期。 3. 怎么指定进度计划,有哪些制约因素?有多少人员可以参与?db, redis资源什么时候到位等?各个部门上线是否有制约? 4. 只有详细的进度计划,才能安排团队人员具体实施协作,有效的监控跟踪项目进度等。 解决方法 1. 可以制定一个详细的项目进度计划。 2. 进度计划的制定,需要一个详细的过程。如下内容: (1) 规划管理 (2) 定义活动 (3) 排列活动顺序 (4) 估算活动资源 (5) 估算活动持续时间

30道Java笔试题精选(附答案解析)

我只是一个虾纸丫 提交于 2020-10-03 12:32:06
都是一些非常基础的题,是我最近参加各大IT公司笔试后靠记忆记下来的,纯考Java基础功底,但是IT公司就喜欢考这些基础的东西,所以为了能进大公司就~当复习期末考吧。花了不少时间整理,在整理过程中也学到了很多东西,请大家认真对待每一题! 下面都是我自己的答案,非官方,仅供参考,如果有疑问或错误请一定要提出来,大家一起进步~ 由于篇幅有限,以下只展示小部分面试题,有需要完整版的朋友可以点一点链接跳转领取: 链接: 点这里!!! 暗号:CSDN 1.下面哪些是Thread类的方法() A start() B run() C exit() D getPriority() 答案:ABD 解析:exit()是System类的方法,如System.exit(0)。 2.下面关于java.lang.Exception类的说法正确的是() A 继承自Throwable B Serialable CD 不记得,反正不正确 答案:A 解析:Java异常的基类为java.lang.Throwable,java.lang.Error和java.lang.Exception继承 Throwable,RuntimeException和其它的Exception等继承Exception,具体的RuntimeException继承RuntimeException。 扩展:错误和异常的区别(Error vs

Redis之计数器 简单记录

大兔子大兔子 提交于 2020-10-03 12:01:43
redis计数器简单使用 @Resource private RedisTemplate<String, Integer> integerRedisTemplate; String redisKey = “test”; Integer numValue = integerRedisTemplate.opsForValue().get(redisKey); if(Objects.isNull(numValue)){ integerRedisTemplate.opsForValue().set(redisKey,1,7,TimeUnit.DAYS); return true; } if(numValue <= 3){ //每次自增+1 integerRedisTemplate.opsForValue().increment(redisKey, 1); return true; } integerRedisTemplate.delete(redisKey); 注意 integerRedisTemplate 需要序列化设置 来源: oschina 链接: https://my.oschina.net/easy3399/blog/4338628

记一次线上商城系统高并发的优化

女生的网名这么多〃 提交于 2020-10-03 12:01:20
对于线上系统调优,它本身是个技术活,不仅需要很强的技术实战能力,很强的问题定位,问题识别,问题排查能力,还需要很丰富的调优能力。 本篇文章从实战角度,从问题识别,问题定位,问题分析,提出解决方案,实施解决方案,监控调优后的解决方案和调优后的观察等角度来与大家一起交流分享本次线上高并发调优整个闭环过程。 一、项目简要情况概述 该项目为基于SSM架构的商城类单体架构项目,其中有一个秒杀重磅模块,如下为当前线上环境的简要架构部署图,大致描述一下: (1)项目为SSM架构 (2)服务器类别:1台负载均衡服务器(F5),3台运用程序服务器,1台计时器服务器,1台redis服务器,1台图片服服务器和1台基于Pass架构的Mysql主从服务器(微软云) (3)调用逻辑:下图为简要调用逻辑 二、何为单体架构项目 从架构发展角度,软件项目经历了如下阶段的发展: 1.单体架构: 可理解为传统的前后端未分离的架构 2.垂直架构: 可理解为前后端分离架构 3.SOA架构: 可理解为按服务类别,业务流量,服务间依赖关系等服务化的架构,如以前的单体架构ERP项目,划分为订单服务,采购服务,物料服务和销售服务等 4.微服务: 可理解为一个个小型的项目,如之前的ERP大型项目,划分为订单服务(订单项目),采购服务(采购项目),物料服务(物料项目)和销售服务(销售项目),以及服务之间调用 三