
Redis
文章平均质量分 59
南宫拾壹
java学习ing
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Redis布隆过滤器
Redis布隆过滤器01、什么是布隆过滤器缓存穿透故障、幂等性判断、今日头条,抖音的推荐相信很多小伙伴在预览的时候,头条会根据的你喜好,为你推荐一些图文信息供你阅读,比如:你喜欢汽车、喜欢美女,它就会经常推荐一些美女图或者汽车文章供你阅读。我们今天讲的内容不是推荐算法,而是:已读去重算法。推荐引擎给你推荐合适的文章,要过滤你已经阅读过的,不然就会重复给你推荐。比如你阅读了一篇文章,如果你已经阅读了,如果没有已读去重,明天又给你推荐。故为了达到更好的体验效果必须把你读过的内容去重。这种已读去重的技原创 2021-09-04 14:01:09 · 605 阅读 · 0 评论 -
Redis缓存穿透解决方案
Redis缓存穿透解决方案1、什么是缓存穿透查询的key在redis中不存在,对应的ID在数据库也不存在,此时被非法用户进行攻击,大量的请求会直接冲入数据库上造成宕机,从而影响整个系统,这种现象称之为:缓存穿透@GetMapping("/findCategory/{cid}") public List<Category> findCategory(@PathVariable("cid") Integer cid) { // 判断分类id是否传入,如果没有传入那么直接原创 2021-09-04 13:59:54 · 1878 阅读 · 0 评论 -
基于Redis的List实现特价商品列表
基于Redis实现特价商品列表1、场景分析淘宝京东的特价商品列表,商品特点:商品有限,并发量非常的大。考虑分页传统解决方案:数据库db,但是在如此大的并发量的情况下,不可取。一般会采用redis来处理。这些特价商品的数据不多,而且redis的list本身也支持分页。是天然处理这种列表的最佳选择解决方案。2、分析采用list数据,因为list数据结构有:lrange key 0 -1 可以进行数据的分页。127.0.0.1:6379> lpush products p1 p2原创 2021-08-29 19:27:28 · 856 阅读 · 2 评论 -
Redis操作数据结构-List
Redis操作数据结构-List1、分析Redis类型list是一个双端链表的数据结构。容量是:2的32次方减1个元素,即可以存储40亿个元素。其主要功能有:push、pop、lrange 获取元素等,一般应用在栈、队列、消息队列等场景。2、命令2.1 LPUSH key element [element …]以开头插入或者尾部插入的方式指定放入到key队列中,可以存放1个或者多个元素。127.0.0.1:6379> lpush user:list xiaowu xiaozhang xi原创 2021-08-29 19:26:57 · 373 阅读 · 0 评论 -
基于Redis的Set实现黑白名单的过滤校验器
基于Redis实现黑白名单的过滤校验器黑白名单过滤器在实际开发中有很多种,比如:用户黑名单,IP黑名单等。在一些场景下,如果仅仅通过数据库DB来进行过滤处理。在并发量小的情况下是没有问题。但是如果在高并发的场景下,可能会出现性能瓶颈,这时采用redis来实现是最佳的选择方案。如何进行开发和处理呢?答案:redis中的数据结构 set。把黑名单的用户数据放入到redis的集合中。在登录、评价或在一些需要限制的地方,通过sismember命令来查询用户是否在黑名单列表中,如果存在就返回1,不存在就返原创 2021-08-21 16:44:52 · 2757 阅读 · 0 评论 -
基于Redis的Set实现关注和粉丝列表分析
基于Redis实现关注和粉丝列表分析1、定义相关的关注逻辑、我的关注列表、我的粉丝列表package com.example.service;import com.example.entity.User;import com.example.utils.ObjectUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.HashO原创 2021-08-21 16:43:53 · 1007 阅读 · 0 评论 -
基于Redis的Set实现共同好友微关系
基于Redis实现共同好友微关系1、概述使用redis的set集合实现共同好友在开发中,我们可能需要计算出关羽和张飞共同关注的人有哪些?也就是关注关羽的人和关注张飞的人。我们如何通过计算把两个人的关注相同的人找出来。如果我们使用SQL如何进行编写呢?比如:关羽关注了10个人,张飞关注了50个人,怎么计算两个人共同关注了那些人。SQL一般采用in或者not in来实现,但是对于高并发的情况下in和not in是不可取的,就算优化使用了索引,性能也会很差。一般解决方案:RedisRedi原创 2021-08-21 16:43:03 · 1486 阅读 · 0 评论 -
基于Redis的Set实现抽奖功能
基于Redis实现抽奖功能1、分析公司年底要做年会所有的员工都要参与抽奖的环节平台的产品要进行抽奖活动这个时候我们可以利用redis中的set集合中的spop来实现。特征:抽奖成功的人会自动从集合中删除,即获取到奖品的人不再继续参与抽奖。spop命令:随机返回元素,元素从集合中删除该元素2、初始化名单数据package com.example.service;import lombok.extern.slf4j.Slf4j;import org.springframework.原创 2021-08-21 16:42:06 · 2719 阅读 · 1 评论 -
SpringBoot+Redis+Hash存储课程信息和相关API学习
SpringBoot+Redis+Hash存储信息和相关API学习1、设置hash的key乱码和value的序列化问题package com.example.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.connection.Redis原创 2021-08-21 16:40:41 · 348 阅读 · 0 评论 -
分布式限流解决方案-Redis+Lua
分布式限流解决方案-Redis+Lua1、分析黑客或者一些恶意的用户为了攻击网站或者APP,通过并发用肉机并发或者死循环请求接口,从而导致系统出现宕机。针对新增数据的接口,会出现大量的重复数据,甚至垃圾数据会将数据库和CPU或者内存磁盘耗尽,直到数据库撑爆为止。针对查询的接口。一般是重点攻击慢查询,比如一个SQL是2S。只要一致攻击,就必然造成系统被拖垮,数据库查询全都被阻塞,连接一直得不到释放造成数据库无法访问。一个用户在1秒钟之内,只允许请求n次。2、Redis + Lua实现限流解决方原创 2021-08-20 12:19:14 · 440 阅读 · 0 评论 -
Redis操作数据结构-Hash
Redis操作数据结构-HashRedis中的数据结构hash,它是String数据结构的升级版。类似于*java中的Map一样Map<String,Map<String,String>> hash = new HashMap<String,HashMap<String,String>>();每个hash存储的大小,可以存储2的(32-1)次方个键值对(40多亿条)。hset key field value [field value …]原创 2021-08-20 12:18:25 · 311 阅读 · 0 评论 -
基于Redis的Hash实现用户注册
用户注册流程:注册用户填写用户信息,先写入到db中在存储数据到redis的hash结构中 key=”reg:user:id”1、定义user实体package com.example.entity;import lombok.Data;/** * @Auther: 长颈鹿 * @Date: 2021/08/17/17:19 * @Description: */@Datapublic class User implements java.io.Serializable {原创 2021-08-20 12:16:54 · 368 阅读 · 0 评论 -
基于Redis的Hash实现购物车搭建工作
Redis的Hash实现购物车搭建工作1 、目标使用redis的hash数据结构完成小米购物车2、技术架构后端的数据架构:SpringBoot + Redis + MYSQL前端使用的技术栈:vue + axios3、具体实现商品的添加购物车购物车商品的数量的递增和递减商品的删除商品的总计和小计具体效果如下:3.1 导入相关依赖<dependency> <groupId>org.springframework.boot</groupId&g原创 2021-08-20 12:15:47 · 2039 阅读 · 1 评论 -
Redis操作数据结构-Set
Redis操作数据结构-Setsadd语法:sadd key member member1 membe2…membern给集合key中添加元素,如果添加相同元素就会自动过滤127.0.0.1:6379> sadd users u1(integer) 1127.0.0.1:6379> sadd users u2(integer) 1127.0.0.1:6379> sadd users u3 u4 u5smemberssmembers key返回集合中所有的元素原创 2021-08-20 12:13:03 · 292 阅读 · 0 评论 -
SpringBoot+Redis+Lua防止IP重复防刷攻击
SpringBoot+Redis+Lua防止IP重复防刷攻击分析黑客或者一些恶意的用户为了攻击网站或者APP,会通过并发用肉机并发或者死循环请求接口,从而导致系统出现宕机。针对新增数据的接口,会出现大量的重复数据,甚至垃圾数据将数据库和CPU或者内存磁盘耗尽,直到数据库撑爆为止。针对查询的接口,一般是重点攻击慢查询,比如一个SQL是2s。只要黑客一致攻击,就必然造成系统被拖垮,数据库查询全部被阻塞,连接一直得不到释放造成数据库无法访问。具体实现需求:在10秒内,同一IP 127.0.0.1原创 2021-08-13 10:48:44 · 606 阅读 · 0 评论 -
Lua脚本
Lua脚本1、概念Lua是一个轻量、简洁、可扩展的脚本语言特点:轻量:编译后体积很小简洁:由C编写,启动快,运行快可扩展:可内嵌到各种编程语言或者系统中运行;提升静态语言的灵活性;不需要担心语法问题2、优点原子性:将Redis的多个操作合成一个脚本,然后整体执行,在脚本的执行中,不会出现资源竞争的问题。减少网络通信:把多个命令合并成一个lua脚本,redis统一执行脚本。复用性:client发送的脚本会永久存储在Redis中,其他客户端可以复用这个脚本来完成同样的逻辑。3、re原创 2021-08-13 10:48:11 · 1213 阅读 · 0 评论 -
分布式全局ID
分布式全局ID1、概述在项目开发中,随着业务的不断发展数据日增大。这个时候就会出现数据表的分库分表的操作。一旦进行了分库和分表操作。传统的id就失去了意义。所以需要分布式全局ID2、特点全局唯一性,不能出现重复的ID单调递增,保证下一个ID一定大于上一个ID范围趋势递增。在一个时间段内,生成的ID是递增趋势的比如:202012120001 202012120002….第二天的时候又要从1开始计数。202012130001 202012130002……安全性,在不同的领域中我们有些业务不要出原创 2021-08-13 10:46:49 · 189 阅读 · 0 评论 -
分布式订单编号
分布式订单编号1、案例分析系统需要生成根据业务类型生成流水号,每天从0开始生成,第二天会清零继续从0开始流水号格式: bizCode + date + incr如:KS-20171123 -000000、 KS-20171123 -000001、KS-20171123 -000002……如:KS-20171124 -000000、 KS-20171124 -000001、KS-20171124 -000002……好处:可以根据订单编号里面得知今天有多少个订单信息2、具体实现利用Redis原创 2021-08-13 10:45:54 · 716 阅读 · 0 评论 -
基于Redis的String实现文章PV统计
Redis String数据类型实战开发 - 文章的PV统计1、场景分析使用redis的计数器来完成文章的统计计数新浪的文章访问微信公众号的文章访问都有一个浏览数、评论数、转发数等,数量的统计,可以使用string数据结构中的命令incr来进行处理和累加。2、具体实现分析每篇文章都有一个文章ID :可以用作为的key值就是每篇文章的浏览数即可redisTemplate.incrment("文章ID")3、具体实现3.1 使用Redis的计数命令 incr key采用inc原创 2021-08-10 00:12:23 · 1109 阅读 · 0 评论 -
Redis操作数据结构-String
Redis操作数据结构-String查看类型:type key查看所有的keykey *Set命令语法:SET key value [expiration EX seconds|PX milliseconds] [NX|XX]必填参数key: 带设置的键;value: 带设置的值可选参数;[NX]: key不存在时才设置,如果存在就返回null (存在不做任何操作);[XX]: key存在时设置,如果不存在就返回null(替换原则);[EX <seconds>]:原创 2021-08-10 00:11:52 · 147 阅读 · 0 评论 -
SpringBoot连接Redis服务
SpringBoot连接Redis服务1、前期准备redis环境服务的安装redis服务器防火墙端口的开放redis配置文件redis.conf中bind修改开发工具:idea2、目标快速构建Springboot+SSM+Redis+Swagger集成框架3、具体流程3.1 pom.xml整合SSM+Redis+Swagger相关依赖<dependency> <groupId>org.springframework.boot</groupId&g原创 2021-08-09 09:48:21 · 1151 阅读 · 2 评论 -
Redis的安装注意事项
Redis下载和安装redis各个版本下载:http://download.redis.io/releases/1、概述Redis是一个高性能的基于Key-value设计的内存数据库,它支持常见的五种数据格式:String类型、Hash、List列表、Set集合、ZSet有序集合、 bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询等。作用性能通常数据库的操作,一般都要几十毫秒,而Redis的读操作一般仅需要不到1毫秒。所以一般在开发中我们会把一些原创 2021-08-09 09:46:53 · 527 阅读 · 0 评论