![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Redis
文章平均质量分 86
Redis
码拉松
这个作者很懒,什么都没留下…
展开
-
【Redis实战】GeoHash实现原理与基本使用
现在很多APP上都有依赖基于附近搜索的需求,也就是根据一组经纬度,检索其相邻范围内的经纬度,而GeoHash就是一种可以用来解决检索相邻区域的地理空间算法。我们不妨先从最原始的需求开始分析,也就是根据某个经纬度获取其附近一定范围内的其他目标信息,我们可以先尝试通过使用像MySQL这样的关系型数据库来实现,比如表中记录了longitude表示经度,latitude 表示纬度。现在有个用户当前处于的经纬度分别为X、Y,请查询其M范围内的相关信息。根据经纬度距离计算公式可以写出如下SQL,即可按记录由近到远得到想原创 2022-12-04 18:00:00 · 1124 阅读 · 0 评论 -
Redis底层数据结构介绍
一谈到Redis,马上能想到的就是:“快”,Redis之所以快,一方面是因为Redis的所有操作都在内存中完成,内存操作本身就很快,另一方面就要归功于它的数据结构了,高效的数据结构是Redis快的基石,当然,也不是所有的命令执行效率都很高,本文就来看看都有哪些时间复杂度较高的命名。原创 2022-09-12 21:31:48 · 705 阅读 · 0 评论 -
【Redis实战】生产中使用Redis的一些注意事项
功能,这是由客户端提供的API,它可以一次性传一批命令给到服务端,从而减少了客户端与服务端的交互次数,避免了网络消耗的问题,当然批命令在使用时也要注意,批量的命令也不是无上限的,其不能超过缓冲区的大小,还要注意一次传入过多的命令也必然会造成服务端执行时间较长,造成阻塞问题。Key的集中过期对于Redis来说并没有什么影响,主要还是在业务上可能会因为大量Key的集中失效,导致在失效那一时刻,如果存在大量访问,则会对数据库带来巨大的压力,所以一般情况下,可以在失效时间上加上毫秒级别的随机数。原创 2022-09-03 19:40:18 · 829 阅读 · 0 评论 -
【Redis实战】认识Redis中的全局哈希表
一谈到Redis,马上能想到的就是:“快”,那么,Redis之所以快,一方面是因为Redis的所有操作都在内存中完成,内存操作本身就很快,另一方面就要归功于它的数据结构了,高效的数据结构是Redis快的基石。当然,提到哈希表,肯定少不了哈希冲突的问题,Redis中采用的方式和Java中的HashMap一样,都是链式哈希的方式,所以一旦冲突变多,就会导致链表过长,最终退化为。中,既然保存的是指针,所以也就能保存任何类型的数据结构(String,Hash,List,Set)的方式,实际上Redis每次在进行。.原创 2022-08-26 22:46:38 · 1166 阅读 · 0 评论 -
Redis应用实战---商品购买相关性分析
前言无论是在线上电商,或是线下超市,用户购买商品的相关性分析对商家来说都非常重要,电商平台可以根据商品相关性在商品的详情页进行推送,超市也可以根据商品之间的相关性来参考商品摆放的位置。基于上述的业务场景,我们可以利用Redis的sorted set来实现。sorted set(有序集合)Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一原创 2021-02-02 14:57:46 · 545 阅读 · 0 评论 -
Redis应用实战---结合Spring Session实现会话管理
会话(Session)管理在web开发中是一种不可或缺的功能,Redis集合Spring Session可以轻松便捷的实现分布式集群中的会话管理。背景信息由于HTTP的特征之一就是无状态,即用户在访问同一个网站的不同页面时进行的某些交互性操作将毫无意义...原创 2020-12-29 21:41:13 · 296 阅读 · 0 评论 -
Redis哨兵环境搭建与详细分析
什么是Redis哨兵?Sentinel(哨兵)是Redis的高可用性解决方案:由一个或者多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器,以及这些主服务器下的所有从服务器。Sentinel使用流言协议(gossip protocols)来接收关于主服务器是否下线的信息, 并使用投票协议(agreement protocols)来决定是否执行自动故障迁移, 以及选择哪个从服务器作为新的主服务器。哨兵的任务监控(Monitoring): Sentinel 会不断地检查你的主服务原创 2020-11-27 21:49:59 · 451 阅读 · 0 评论 -
深入分析Redis主从复制原理
Redis主从环境详细搭建过程,之前在这篇文章中已经搭建好主从复制的环境了,搭建起来非常简单,接下来就要搞清楚主从复制的原理了。主从复制的机制当一个 master 实例和一个 slave 实例连接正常时, master 会发送一连串的命令流来保持对 slave 的更新,以便于将自身数据集的改变复制给 slave :包括客户端的写入、key 的过期或被逐出等等。当 master 和 slave 之间的连接断开之后,因为网络问题、或者是主从意识到连接超时, slave 重新连接上 master原创 2020-11-23 20:30:05 · 686 阅读 · 1 评论 -
Redis主从环境详细搭建过程
首先准备两个搭建好的Redis环境,一主一从,Redis快速搭建可以参考linux下redis安装和开机自动启动,这篇文章中演示了初始搭建。现在根据上述准备好的环境中,cd到/opt/redis-5.0.9/utils目录再次执行./install_server.sh,输入6380端口,即可快速完成一套新的redis服务端搭建。现在两台redis服务端已经准备好主:192.168.70.113 6379从:192.168.70.113 6380正常情况下主从应该分别部署在两台不同的主机上,本文由原创 2020-11-23 11:18:26 · 297 阅读 · 1 评论 -
Redis 混合式持久化流程分析
前面的文章中分别介绍过了 AOF 和 RDB 两种持久化策略,这次要介绍一种新的方式—混合模式。为什么会有混合模式?我们知道RDB方式虽然恢复快,但是数据丢失多,而AOF相比RDB数据丢失方面几乎不存在什么问题,但是恢复时间长,体积大,重写期间还会发生阻塞问题,所以综合来看两者无论你使用哪一种都会出现一些较为麻烦的问题,所以Redis4.0开始就提出了混合模式,它结合了AOF和RDB各自的优点来解决持久化问题。如何开启混合模式?# When rewriting the AOF file, Redis原创 2020-11-05 16:01:08 · 773 阅读 · 0 评论 -
Redis AOF持久化流程分析与参数配置详解
上一篇文章中介绍了RDB的持久化方式,本文接着分析一下另外的一种持久化方式AOF。Redis中的AOFAOF功能在Redis中默认是关闭的,与RDB快照的方式不同,AOF是通过保存服务器执行的写命令来记录数据库状态的,也就是说AOF文件中保存的就是一条条的操作指令。如何开启AOF在redis.conf文件中,设置:appendonly yes(默认为no)这份关于AOF的摘要说明也非常好,所以贴出来,建议大家阅读。# By default Redis asynchronously dumps原创 2020-11-04 11:23:13 · 1062 阅读 · 0 评论 -
Redis RDB持久化流程分析与参数配置详解
为什么需要Redis持久化?redis本身是内存数据库,数据都是存储在操作系统内存中的,那么就会存在当进程退出或者服务断电等情况下内存数据丢失的问题,所以redis就需要提供某种持久化方案用来把内存中的数据保存到磁盘上,用以解决内存数据丢失的问题。持久化的几种方式?一提到持久化的方式,不仅仅是Redis,基本上所有的持久化方案都会采用“快照”和“日志”这个两种方式,快照是一种定时生成的方式,而日志则更倾向于实时产生。Redis中的RDB先来介绍Redis中的第一种持久化方案—RDB,这就是基于“快原创 2020-11-02 16:41:39 · 1278 阅读 · 0 评论 -
Redis面试常问---缓存穿透、击穿、雪崩
现在面试一聊到Redis基本上都会问到穿透、击穿、雪崩,然而我觉得实际上大多数企业是碰不上这类问题的,不过现在面试都要求你虽然没吃过猪肉必须要见过猪跑的☝ᖗ乛◡乛ᖘ☝,所以我们还是要了解了解的,不要被几个高大上的名词所唬住,实际上问题本身现象并不复杂,一起看来来怎么解决吧!缓存穿透什么是缓存穿透?缓存穿透主要强调的就是专门用缓存中肯定不存在的key来查询,导致每次查询都会落到数据库上,从而造成数据库压力过大,最终服务不可用。如何解决缓存穿透?A)把不存在的key也缓存起来,然后设置一个过期时间。原创 2020-10-24 11:37:54 · 292 阅读 · 0 评论 -
Redis中Bitmap基本操作与面试常问场景
redis中bitmap基本操作与使用场景原创 2020-10-20 10:43:41 · 380 阅读 · 0 评论 -
linux下redis安装和开机自动启动
进入Redis官网,找到需要安装的Redis版本,本文安装版本redis-5.0.9。1、下载rediswget https://download.redis.io/releases/redis-5.0.9.tar.gzwget命令不存在,通过yum安装安装完成,再次使用wget https://download.redis.io/releases/redis-5.0.9.tar.gz2、解压tar包,阅读README.md文件,安装gcctar xf redis-5.0.9.tar.gz解原创 2020-10-12 13:46:20 · 509 阅读 · 1 评论 -
Redis的内存淘汰策---LRU与LFU分析
Redis的内存淘汰机制与适用选择分析原创 2020-10-10 20:30:11 · 471 阅读 · 0 评论 -
Redis6.0多线程设计分析
Redis6.0到底是单线程还是多线程?原创 2020-09-14 15:22:24 · 235 阅读 · 0 评论 -
Redis为什么要设计成单线程?
单线程的Redis为什么还那么快原创 2020-09-12 21:37:16 · 412 阅读 · 0 评论 -
Redis五种数据类型常用命令时间复杂度分析
Redis各种数据类型的时间复杂度分析原创 2020-09-11 17:26:20 · 1587 阅读 · 0 评论 -
关于Redis过期键删除策略详解
关于Redis过期策略详解原创 2020-08-31 16:49:11 · 691 阅读 · 0 评论 -
Redis为什么要把字符串设计成SDS?
在Redis中String类型的底层数据结构名为(simple dynamic string SDS)简单动态字符串,我们知道Redis是用C语言编写的,但是Redis并没有直接使用C语言中的字符串,而是自己新创建了一种,文本就来探究一下其中的缘由吧!...原创 2020-08-24 15:31:33 · 872 阅读 · 0 评论 -
Redis分布式锁的正确使用方式及问题演示
现在很多项目上都会使用Redis来实现分布式锁,相比ZK无论是使用还是理解都比较容易,但也是出现了一些五花八门的使用方式,漏洞百出,本文主要介绍一下在Redis单机未部署集群环境下,都出现了哪些错误使用方式。直接上代码 @GetMapping("/redisLock") public String redisLock() throws InterruptedException { //加锁 if (redisTemplate.opsForValue().setIf原创 2020-08-15 22:40:42 · 475 阅读 · 0 评论 -
关于Redis并发更新key的问题
Redis并发更新key的问题,主要指的是多个线程对同一个key的set操作,这种问题就如同在java中对同一个资源的并发访问一样。问题场景1、某个值先从redis中取出,然后再修改,比如一个线程取出值为1,然后+1后更新,另一个线程在同一个时间也取出了值为1,然后也+1后更新,最终的结果为2,并非3。2、如果有多个请求顺序修改某个key,比如请求修改为1 >> 2 >> 3,但是由于网络原因第二次请求稍慢与第三次请求,结果就变成了1 >> 3>> 2原创 2020-07-20 22:31:23 · 4516 阅读 · 0 评论 -
详细图解如何保证缓存和数据库一致性
缓存和数据库保持一致性主要是指当数据发生更新时如何保证同时更新缓存和数据库的问题。一致性保证方式1、设置失效时间,到期自动失效优点:实现简单。缺点:有延迟,一旦设置就不可控,存在固定不变的延迟时间,设置不合理还会存在缓存雪崩、击穿问题。2、定时任务更新,固定时间从数据库中捞出最新数据,然后刷新缓存优点:实现简单。缺点:基本和第一种更新方式存在一样的问题。3、实时更新优点:低延迟,一致性强。缺点:相比前两种方式逻辑比较复杂,为了获取高一致性,往往需要考虑是先处理缓存数据还是先处理数据库数据原创 2020-07-19 22:10:27 · 2781 阅读 · 0 评论 -
Redis基本数据类型及适用场景
String(字符串)简单的key/value方式,任何类型都可以转换成string进行存储。常用命令适用场景可以用来做一些简单信息的缓存,利用自增属性计数(统计、点击量等等),定时过期,分布式锁、分布式会话等场景。Hash(哈希)string类型的field和value的映射表,每个hash可以存储2^32 - 1 个键值对常用命令适用场景hash 特别适合用于存储对象,但是string也可以存储对象,二者的选择在于,对象的属性是否会频繁发生修改,如果频繁修改,就不适用于string原创 2020-07-06 22:10:17 · 1678 阅读 · 0 评论