![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Redis
文章平均质量分 96
redis
童话ing
放弃不难,但坚持一定很酷。
展开
-
【Redis】Lua脚本在Redis中的基本使用及其原子性保证原理
在介绍Eval命令执行过程中,第一步会在Lua环境中生成一个Lua脚本对应的函数,形如:f_dfdugndgub320433,只要脚本对应的函数在Lua中定义过,那么即使不知道脚本的内容本身,客户端也是可以根据脚本的SHA1来调用脚本对应的函数,从而达到执行脚本的目的,这也就是EvalSHA命令的实现原理。如果Lua脚本比较耗时,甚至Lua脚本存在问题,那么此时Lua脚本的执行会阻塞Redis,直到脚本执行完毕或 者外部进行干预将其结束,就可以使用。字典,关闭现有的Lua环境并重建一个新的Lua环境。原创 2023-09-08 21:12:04 · 1825 阅读 · 2 评论 -
【Redis】(一)一文读懂Redis基本数据类型及其常见应用场景与底层实现原理
文章目录前言一、String(字符串)1.1 String常用命令1.2 String主要应用场景1.3 String底层实现二、List(列表)2.1 List常用命令2.2 list常见应用场景2.3 List底层实现ziplistquicklist三、Set(集合)3.1 Set常用命令3.2 Set常见应用场景3.3 Set底层实现四、Sorted Set(有序集合,也称为Zset)4.1 Sorted Set常用命令4.2 Sorted Set常见应用场景4.3 Sorted Set底层实现五、H原创 2021-11-19 22:48:03 · 1591 阅读 · 0 评论 -
【Redis】Redis内存淘汰策略和过期数据的删除策略
在使用Redis做缓存的过程中,我们一般会对key设置一定的过期时间,Redis中除了字符串类型有⾃⼰独有设置过期时间的命令 setex外,其他⽅法都需要依靠expire命令来设置过期时间 。另外, persist 命令可以移除⼀个键的过期时间:过期时间除了有助于缓解内存的消耗,还有什么其他⽤么? 很多时候,我们的业务场景就是需要某个数据只在某⼀时间段内存在,⽐如我们的短信验证码可能只在1分钟内有效,⽤户登录的 token 可能只在 1 天内有效。如果使⽤传统的数据库来处理的话,⼀般都是⾃⼰判断过期,原创 2021-11-18 15:46:22 · 4090 阅读 · 0 评论 -
【数据结构】跳表
根据原文完善了一下,方便翻阅。原文地址:数据结构与算法——跳表什么是跳表跳表全称为跳跃列表,它允许快速查询,插入和删除一个有序连续元素的数据链表。是redis的一个核心组件,也同时被广泛地运用到了各种缓存地实现当中,它的主要优点,就是可以跟红黑树、AVL等平衡树一样,做到比较稳定地插入、查询与删除。跳跃列表的平均查找和插入时间复杂度都是O(logn)。快速查询是通过维护一个多层次的链表,且每一层链表中的元素是前一层链表元素的子集(见下边的示意图)。一开始时,算法在最稀疏的层次进行搜索,直至需要查找的.转载 2021-04-04 16:47:37 · 141 阅读 · 0 评论 -
【Redis】为什么Redis单线程却能支撑高并发?Redis6.0之后为什么又引入多线程?
一、为什么Redis单线程却能支撑高并发?redis 和 memcached 有什么区别?redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发?这个是问 redis 的时候,最基本的问题吧,redis 最基本的一个内部原理和特点,就是 redis 实际上是个单线程工作模型,你要是这个都不知道,那后面玩儿 redis 的时候,出了问题岂不是什么都不知道?还有可能面试官会问问你 redis 和 memcached 的区别,但是 memcached 是早些年各大互联网公司常用的缓存方案,但原创 2021-03-25 21:17:15 · 1104 阅读 · 0 评论 -
【SpringBoot】SpringBoot2.x自定义RedisTemplate整合Redis
前言在SpringBoot中一般使用RedisTemplate提供的方法来操作Redis。但是面临着大量Redis代码问题以及默认jdk序列化后乱码问题,因此本文采用统一配置类RedisConfig配置Redis序列化相关以及采用RedisUtil工具类简化开发,降低代码的复杂性。Maven依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>s原创 2020-11-28 11:19:48 · 949 阅读 · 2 评论 -
Redis(四)缓存穿透、缓存击穿和缓存雪崩
在上篇文章 Redis(三)发布订阅、主从复制和哨兵模式 中,我们了解了Redis发布订阅、主从复制和哨兵模式,本文中我们将了解Redis的缓存穿透、缓存击穿和缓存雪崩。文章目录一、Redis可能的问题二、缓存穿透1、缓存空对象2、布隆过滤器三、缓存击穿(请求太多,缓存过期)四、缓存雪崩一、Redis可能的问题Redis 缓存的使用,极大的提升了应用程序的性能和效率,特别是数据查询方面。但同时,它也带了一些问题。其中,最要害的是问题,就是数据一致性的问题,从严格意义上讲,这个问题无解。如果对数据.原创 2020-11-25 10:04:27 · 290 阅读 · 0 评论 -
Redis(三)发布订阅、主从复制、哨兵模式和集群
在上篇文章 Redis(二)Redis持久化(RDB+AOF)详解 中,我们了解了Redis持久化机制,本文中我们将了解Redis的发布订阅、主从复制及哨兵模式。文章目录一、发布订阅二、主从复制1、概念2、主从复制的作用3、环境配置4、一主二从5、注意事项6、复制原理三、哨兵模式1、概述2、配置一个一主二从的哨兵模式一、发布订阅Redis发布订阅(pub/sub)是一种消息通信模式:发步者发送消息,订阅者接收消息。发布 / 订阅消息图:特点:Redis发布订阅模式中,发布者可以有多个订阅者.原创 2020-11-24 21:15:43 · 699 阅读 · 0 评论 -
Redis(二)Redis持久化(RDB+AOF)详解
文章说明:文章源于狂神B站视频内容,但觉得其中稍微简单了一点(未细讲原理),因此找到了掘金上的两篇RDB和AOF详解文章进行了整合,希望能帮助更好的理解redis的持久化机制。文章目录一、RDB持久化二、AOF持久化三、持久化扩展 Redis 是一种内存数据库,是将所有数据全部放在内存中的,所以说使用单线程去操作效率就是最高的,官方表示,redis是基于内存操作,CPU不是redis性能瓶颈,redis的瓶颈是根据机器的内存和网络带宽,既然可以使用单线程来实现,就使用单线程(Redis6.0之前,.原创 2020-11-19 11:43:10 · 1815 阅读 · 0 评论 -
Redis6.0配置文件详解
来源于:Redis6.0配置文件详解为什么用6.0呢,因为redis6.0之后就可以多线程了,这是个跨度。如果想要linux界面看解读,可以观看redis的配置文件介绍如果要配置跟内存大小相关的参数是可以这样配置:1k => 1000 bytes1kb => 1024 bytes1m => 1000000 bytes1mb => 10241024 bytes1g => 1000000000 bytes1gb => 10241024*1024 bytes转载 2020-11-18 21:02:53 · 568 阅读 · 0 评论 -
Docker安装Redis以及以配置文件方式启动Redis(docker安装的请别乱下载redis.conf文件)
首先确保你已经安装好了docker,如果没安装好,可以简单参考一下Ubuntu中Docker安装+docker常用命令一、docker安装redis1、搜索redis镜像docker search redis2、拉取redis镜像(不指定版本则默认最新版)docker pull redis //不指定版本,默认拉取最新版docker pull redis:6.0.8 //版本看自己需要了3、查看镜像docker images二、docker启动redis首先确保你的dock原创 2020-11-18 20:30:24 · 5826 阅读 · 5 评论 -
乐观锁几种实现方式(Mybatis+Redis+Jedis)
上文我们介绍了一下什么是乐观锁和悲观锁以及实现的思路。Mysql乐观锁与悲观锁的区别。本文中,我们简单实现一下乐观锁。文章目录一、Mybatis实现二、Redis实现乐观锁介绍: 乐观锁( Optimistic Locking ) 相对悲观锁而言,乐观锁假设认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则让返回用户错误的信息,让用户决定如何去做。那么我们如何实现乐观锁呢,一般来说有以下2种方式:一、Mybatis实现1、...原创 2020-11-15 22:18:15 · 6425 阅读 · 1 评论