![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
redis
文章平均质量分 91
redis
爱上口袋的天空
一步一流年,止不住的脚步,挽不回的青春!
展开
-
点赞模块设计 - Redis缓存 + 定时写入数据库实现高性能点赞功能
至于多久从 Redis 取一次数据存到数据库中,根据项目的实际情况定吧,我是暂时设了两个小时。转载 2024-04-28 11:08:40 · 447 阅读 · 0 评论 -
使用Redis实现文章阅读量、收藏、点赞数量记录功能
如果每一次用户查看博客都从数据库中检索这些数据那数据库开销是非常大的,这个时候就需要使用到缓存来存储这些信息。转载 2024-04-28 10:43:23 · 382 阅读 · 0 评论 -
redis-cli的安装与使用
对key有操作的命令,统一返回值都是1或者0,成功为1,失败为0。转载 2024-01-26 10:04:11 · 951 阅读 · 0 评论 -
如何保障缓存和数据库的一致性
这边理论上一定会存在一些不一致的数据,因为我们查询数据库和缓存之间还是有一定的时间间隔的,可能是1毫秒这样,在高并发下,可能这个间隔之间数据已经被修改过了,所以你拿到的缓存数据和数据库数据可能其实不是一个版本,这种情况下的不一致是正常的。还有就是如果我们通过命令行直接来更新数据库的数据,或者通过公司提供的数据库管理平台来更新数据库数据,这个时候你就没法删除了,因为你的同步删除其实只是写在你的代码里面,这个时候也就导致脏数据问题了,这也是为什么说同步删除很难覆盖所有的入口,同时存在很大的风险。转载 2023-10-13 14:19:22 · 181 阅读 · 0 评论 -
到底什么是IO多路复用?
服务端为了处理客户端的连接和请求的数据,写了如下代码。这段代码会执行得磕磕绊绊,就像这样。可以看到,服务端的线程阻塞在了两个地方,一个是 accept 函数(),一个是 read 函数。如果再把 read 函数的细节展开,我们会发现其阻塞在了两个阶段。这就是传统的阻塞 IO。整体流程如下图。所以,如果这个连接的客户端一直不发数据,那么服务端线程将会一直阻塞在 read 函数上不返回,也无法接受其他客户端连接。这肯定是不行的。转载 2023-10-13 10:16:05 · 156 阅读 · 0 评论 -
使用docker安装redis
1:使用docker下载最新的镜像 docker pull redis2: 创建实例对象并启动redis 1):首先创建目录文件,在centos7环境 mkdir -p /mydata/redis/conf touch /mydata/redis/conf/redis.conf 2): 启动redis docker run -p 6379:6379 --name redis \ -v /mydata/red...原创 2020-06-23 17:39:46 · 231 阅读 · 1 评论 -
Redis实战之附近商户、用户签到、UV 统计
GEO 就是 Geolocation 的简写形式,代表地理坐标。Redis 在 3.2 版本中加入了对 GEO 的支持,允许存储地理坐标信息,帮助我们根据经纬度来检索数据。转载 2023-01-14 09:56:32 · 496 阅读 · 0 评论 -
Redis实战之好友关注功能
推拉模式是一个折中的方案,站在发件人这一段,如果是个普通的人,那么我们采用写扩散的方式,直接把数据写入到他的粉丝中去,因为普通的人他的粉丝关注量比较小,所以这样做没有压力,如果是大 V,那么他是直接将数据先写入到一份到发件箱里边去,然后再直接写一份到活跃粉丝收件箱里边去,现在站在收件人这端来看,如果是活跃粉丝,那么大 V 和普通的人发的都会直接写入到自己收件箱里边来,而如果是普通的粉丝,由于他们上线不是很频繁,所以等他们上线时,再从发件箱里边去拉信息。在博主个人页面展示出当前用户与博主的共同关注呢。转载 2023-01-10 22:50:32 · 990 阅读 · 1 评论 -
Redis实战之达人探店
探店笔记类似点评网站的评价,往往是图文结合。探店笔记表,包含笔记中的标题、文字、图片等其他用户对探店笔记的评价。转载 2023-01-08 17:13:37 · 309 阅读 · 0 评论 -
Redis之秒杀下单优化以及认识redis消息队列
秒杀业务的优化思路是什么?先利用 Redis 完成库存余量、一人一单判断,完成抢单业务再将下单业务放入阻塞队列,利用独立线程异步下单基于阻塞队列的异步秒杀存在哪些问题?内存限制问题数据安全问题。转载 2023-01-07 17:35:11 · 2185 阅读 · 1 评论 -
分布式锁工具之Redisson
是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务,其中就包含了各种分布式锁的实现。t=MBR7t=MBR7Redission使用手册https://www.bookstack.cn/read/redisson-wiki-zh/Redisson%E9%A1%B9%E7%9B%AE%E4%BB%8B%E7%BB%8D.md。转载 2023-01-04 22:39:36 · 3080 阅读 · 0 评论 -
Redis的分布式锁
Redis 提供了 Lua 脚本功能,在一个脚本中编写多条 Redis 命令,确保多条命令执行时的原子性。Lua 是一种编程语言,它的基本语法大家可以参考网站:https://www.runoob.com/lua/lua-tutorial.html,这里重点介绍 Redis 提供的调用函数,我们可以使用 lua 去操作 redis,又能保证他的原子性,这样就可以实现拿锁比锁删锁是一个原子性动作了,作为 Java 程序员这一块并不作一个简单要求,并不需要大家过于精通,只需要知道他有什么作用即可。转载 2023-01-04 21:41:54 · 545 阅读 · 0 评论 -
Redis的优惠券秒杀问题之全局唯一ID、秒杀下单、超卖问题、一人一单问题以及集群下的问题
首先,我们依照黑马的项目来进行分析,在什么情况下要使用到这个全局唯一ID。在黑马点评这个项目中,使用的商品其实也就是当用户抢购时,就会生成订单并保存到这张表中但是,这张SQL表里面的主键,是的!!!转载 2023-01-01 12:18:50 · 1646 阅读 · 0 评论 -
Redis的缓存问题之缓存穿透、缓存雪崩、缓存击穿
缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库。缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力。解决方案(4种)(1)给不同的Key的TTL添加随机值(推荐)操作简单,当我们在做缓存预热的时候,就有可能在同一时间批量插入大量的数据,那么如果它们的TTL都一样的话就可能出现大量key同时过期的情况!!!所以我们需要在设置过期时间TTL的时候,定义一个范围,追加该范围内的一个随机数。转载 2022-12-31 16:28:31 · 4456 阅读 · 0 评论 -
Redis缓存简介以及缓存的更新策略
举个例子:越野车,山地自行车,都拥有” 避震器”, 防止车体加速后因惯性,在酷似”U” 字母的地形上飞跃,硬着陆导致的损害 , 像个弹簧一样;同样,实际开发中,系统也需要” 避震器”,;这在实际开发中对企业讲,对产品口碑,用户评价都是致命的;所以企业非常重视缓存技术;。转载 2022-12-30 23:35:09 · 1781 阅读 · 0 评论 -
Redis实战之Session实现短信登录以及Redis完善登录功能
在这个方案中,他确实可以使用对应路径的拦截,同时刷新登录 token 令牌的存活时间,但是现在这个拦截器他只是拦截需要被拦截的路径,假设当前用户访问了一些不需要拦截的路径,那么这个拦截器就不会生效,所以此时令牌刷新的动作实际上就不会执行,所以这个方案他是存在问题的。转载 2022-12-30 20:51:12 · 1463 阅读 · 0 评论 -
Redis 的 Java 客户端
redis 序列化器 有以下几种:常用的是 StringRedisSerializer 和 Jackson2JsonRedisSerializer。RedisTemplate 可以接收任意 Object 作为值写入 Redis:只不过写入前会把 Object 序列化为字节形式,默认是采用 JDK 序列化,得到的结果是这样的:可读性差内存占用较大/***/@Bean// 创建RedisTemplate对象// 设置连接工厂// 创建JSON序列化工具。转载 2022-12-30 13:28:12 · 322 阅读 · 0 评论 -
redis 常见命令以及数据结构
举个例子,A = {1, 2, 3, 4, 5}, B = {3, 5, 6, 7, 9};那么基数(不重复的元素)= 1, 2, 4, 6, 7, 9;(允许容错,即可以接受一定误差)转载 2022-12-29 23:16:08 · 751 阅读 · 0 评论 -
Redis的四种模式:单机、主从、哨兵、集群
常规的实现方式便是采用如下图所示的代理方案,即采用一个中央节点(比如HDFS中的NameNode)来管理所有的元数据,但是这样的方案带来的最大问题就是代理节点很容易成为访问的瓶颈,当读写并发量高的时候,代理节点会严重的拖慢整个系统的性能。,可以根据机器的性能把不同的槽位分配给不同的Redis实例,对于Redis实例来说,他们只会存储部分的Redis数据,当然,槽的数据是可以迁移的,不同的实例之间,可以通过一定的协议,进行数据迁移。一旦发现redis集群出现了问题,比如刚刚说的主节点挂了,从节点会顶上来。转载 2022-10-04 22:21:19 · 622 阅读 · 0 评论 -
Redis 概念和应用场景
Redis 是一款。Redis 全称为:Remote Dictionary Server(远程词典服务),使用 C 语言编写,Redis 是一个 key-value 存储系统(键值存储系统),。Redis 是一种支持 key-value 等多种数据结构的存储系统。。支持网络,提供字符串,哈希,列表,队列,集合结构直接存取,基于内存,可持久化。转载 2022-10-04 21:12:59 · 413 阅读 · 0 评论 -
Redis6之事务操作
一、事务简介单独的隔离操作 事务中的所有命令都会序列化 按顺序执行 执行的过程中,不会被其他命令请求所打断二、Redis事务三大特性单独的隔离操作(不会被打断) 没有隔离级别 不保证原子性对比一下sql的事务特性,为acid,一致性,隔离性,原子性,持久性而redis的事务特性没有隔离,因为都是单独的隔离而不会被打断,而且也不保证原子性,错了等待不到消息不会进行回滚串联多个命令防止别的命令插队主要的三个命令:multi、exec和discard输..转载 2021-12-18 19:38:06 · 265 阅读 · 0 评论 -
redis6.2.6之数据类型以及配置文件解释
1、key值键位1.1、key值的操作keys * 查看当前库所有key set key value 设置key值与value exists key 判断key是否存在 type key 查看key是什么类型 del key 删除指定的key数据 unlink key 根据value选择非阻塞删除 ------仅将keys从keyspace元数据中删除,真正的删除会在后续异步操作。 expire key 10 10秒钟:为给定的key设置过期时间 ttl key 查看还有多少秒过期,转载 2021-12-15 22:44:07 · 362 阅读 · 0 评论 -
redis6.2.6安装
1、将安装包上传到Linux系统2、查看是否安装gcc环境安装gcc:命令:yum install -y gcc3、解压redis安装包命令:tar -zxvf redis-6.2.6.tar.gz4、进入目录号cd /opt/redis-6.2.6进行make编译以及make install安装即可make命令:make install命令:5、判断是否安装成功在/usr/local/bin中ls:6、如何启动6...转载 2021-12-15 22:12:20 · 1250 阅读 · 0 评论 -
什么是IO多路复用,理解IO多路复用
一、什么是socket?我们都知道unix(like)世界里,一切皆文件,而文件是什么呢?文件就是一串二进制流而已,不管socket,还是FIFO、管道、终端,对我们来说,一切都是文件,一切都是流。在信息 交换的过程中,我们都是对这些流进行数据的收发操作,简称为I/O操作(input and output),往流中读出数据,系统调用read,写入数据,系统调用write。不过话说回来了 ,计算机里有这么多的流,我怎么知道要操作哪个流呢?对,就是文件描述符,即通常所说的fd,一个fd就是一个整数,所以,对转载 2021-03-02 21:30:56 · 4418 阅读 · 0 评论 -
高并发场景下的redis缓存和数据库双写不一致问题分析与解决方案设计
1.最经典的缓存+数据库读写的模式,cache aside pattern1.1、Cache Aside Pattern(1)读的时候,先读缓存,缓存没有的话,那么就读数据库,然后取出数据后放入缓存,同时返回响应(2)更新的时候,先删除缓存,然后再更新数据库1.2、为什么是删除缓存,而不是更新缓存呢?(1)、如果写数据库的值与更新到缓存值是一样的,不需要经过任何的计算,可以马上更新缓存,但是如果对于那种写数据频繁而读数据少的场景并不合适这种解决方案,因为也许还没有查询就被删除或修改了转载 2021-02-21 14:04:37 · 638 阅读 · 0 评论 -
Redis缓存淘汰策略
为什么会有淘汰?Redis可以看作是一个内存数据库,可以通过Maxmemory指令配置Redis的数据集使用指定量的内存。设置maxmemory为0,则表示无限制(这是64位系统的默认行为,而32位系统使用3GB内隐记忆极限)。maxmemory 100mb当内存使用达到maxmemory极限时,需要使用某种淘汰算法来决定清理掉哪些数据,以保证新数据的存入。常用的淘汰算法:FIFO:First In First Out,先进先出。判断被存储的时间,离目前最远的数据优先被淘汰。 LR转载 2021-02-20 20:35:48 · 194 阅读 · 0 评论 -
Redis过期键删除策略
一、三种过期键删除策略定时删除:在设置键的过期时间的同时,创建一个定时器,让定时器在键的过期时间来临时,立即执行对键的删除操作 惰性删除:放任键过期不管,但是每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除该键;如果没有过期,就返回该键 定期删除: 每隔一段时间,程序就对数据库进行一次检查,删除里面的过期键。至于要删除多个过期键,以及要检查多少个数据库,则由算法决定第一种和第三种为主动删除策略,而第二种则为被动删除策略1、定时删除定时删除策略对内存是最友好的:通过使用定转载 2021-02-20 20:25:01 · 187 阅读 · 0 评论 -
Redis操作哈希结构数据
今天带来的是Redis操作的第二部分:Redis操作Hash。总体上来讲与操作字符串的方式基本相同。hash类似于java中的map,存储的基本上都是String类型的key和value的键值对,在内存足够大的情况下,一个hash结构可以存储2的32次方-1个键值对。但是需要注意的是,由于 redis是一个内存数据库, 所有数据基本上都存在于内存当中, 会定时以追加或者快照的方式刷新到硬盘中。所以当我们读取大量数据的时候,我们要考虑到对JVM内存的影响。同时在接下来我们的操作中我们会看到,Redis对ha转载 2021-02-19 21:36:24 · 1085 阅读 · 0 评论 -
为什么要用redis而不用map做缓存?
缓存分为本地缓存和分布式缓存。以java为例,使用自带的map或者guava实现的是本地缓存,最主要的特点是轻量以及快速,生命周期随着jvm的销毁而结束,并且在多实例的情况下,每个实例都需要各自保存一份缓存,缓存不具有一致性。使用redis或memcached之类的称为分布式缓存,在多实例的情况下,各实例共用一份缓存数据,缓存具有一致性。缺点是需要保持redis或memcached服务的高可用,整个程序架构上较为复杂。详细的区别:1、Redis 可以用几十 G 内存来做缓存,Map 不行,一般转载 2020-09-30 16:27:07 · 739 阅读 · 0 评论 -
Redis 为什么是单线程的
一、Redis为什么是单线程注意:redis 单线程指的是网络请求模块使用了一个线程,即一个线程处理所有网络请求,其他模块仍用了多个线程。因为CPU不是Redis的瓶颈。Redis的瓶颈最有可能是机器内存或者网络带宽,既然单线程容易实现,而且CPU不会成为瓶颈,那就顺理成章地采用单线程的方案了。关于redis的性能,官方网站也有,普通笔记本轻松处理每秒几十万的请求二、Redis为什么这么快1、完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,Hash转载 2020-09-30 15:59:28 · 4398 阅读 · 0 评论 -
Redis数据丢失,横向扩容等相关问题解决方案
一:简介redis的高可用 为了达到redis的高可用,有两种部署方式: 主从复制+哨兵机制。 集群模式。 哨兵机制是redis2.8开始支持。集群模式是redis3.0开始支持。 主从复制的意义 主从复制可以把主节点的数据复制给从节点。从节点可以备份主节点的数据,起到主节点挂调, 顶上来接替主节点工作的作用...原创 2019-11-03 09:28:28 · 837 阅读 · 0 评论 -
redis创建集群时显示错误:[ERR] Node IP:7002 is not empty. Either the node already knows other nod
问题: [ERR] Node 192.168.191.101:7002 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.解决方式:删除每个redis节点的备份文件,数据库文件和集群配置文件...原创 2019-10-25 22:29:09 · 1072 阅读 · 0 评论 -
Redis cluster之主从复制,高可用,多master集群搭建
简介 redis cluster: 自动做master+slave复制和读写分离,master+slave高可用和主备切换,支持多个master的hash slot支持数据分布式存储。 环境准备 redis cluster集群,要求至少3个master,去组成一个高可用,健壮的分布式的集群,每个master都建议至少给一个slave, 3个master,3个slave。正式环境下,...原创 2019-10-03 12:05:50 · 1105 阅读 · 0 评论 -
Redis之3节点部署哨兵集群(基于前面的Redis5.0.5读写分离架构搭建环境)
简介 Sentinel:哨兵模式,是一个分布式系统,该进程是用于监控redis集群中Master主服务器工作的状态, 在Master主服务器发生故障的时候,可以实现Master和Slave服务器的切换,保证系统的高可用,其已经被 集成在redis 2.6 +的版本中,Redis的哨兵模式到了2.8版本之后就得到了稳定。 哨兵模式的环境: a:Master主服务器配置信息:...原创 2019-09-28 16:58:18 · 708 阅读 · 0 评论 -
Redis5.0.5读写分离架构搭建
一:Redis安装环境准备 jdk-8u191-linux-x64.tar.gz(已安装好),redis-5.0.5.tar.gz,tcl8.6.1-src.tar.gz,机器(eshop-cache01,eshop-cache02) 将安装包解压到指定目录 安装tcl(安装redis之前需要先安装tcl,否则在make的时候,会报错,安装不成功) 进入/usr/local/...原创 2019-09-22 21:20:37 · 463 阅读 · 0 评论 -
Redis持久化以及主从架构原理
一:Redis入门知识点简介redis持久化的意义? redis持久化的意义在于故障恢复。比如我们在生产环境中部署了redis,在redis中存储了一些较为重要的数据, 把redis作为缓存数据库,如果我们没有对redis中的数据进行持久化的话,那么机器一旦出现灾难性的故障, 就会丢失所有的数据。如果我们能够将数据持久化到磁盘上,并且定期同步一份备份数据到云服务上,就可...原创 2019-09-22 15:27:17 · 215 阅读 · 0 评论