![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Redis
文章平均质量分 81
缓存屏障开启!
samarua
while "live" : print("Loli")
展开
-
【Reids】配置文件详解
说明# Note that in order to read the configuration file, Redis must be started with the file path as first argument: # ./redis-server /path/to/redis.conf# units are case insensitive so 1GB 1Gb 1gB are all the same.redis.conf配置文件的开头说明了两件事情:第一,如果你想让配置文件原创 2021-05-30 20:00:45 · 206 阅读 · 0 评论 -
【Redis】Lua脚本
简单脚本直接返回127.0.0.1:6379> eval "return 'hello!lua!!!'" 0"hello!lua!!!"首先,执行Lua脚本的关键字为eval代入参数原创 2021-05-30 20:00:15 · 224 阅读 · 0 评论 -
【Redis】性能调优
尽可能使用简短的key-value准确的说,是在“见名知意”的前提下,尽可能精简。 避免使用会引发阻塞的命令Redis是单线程的,当发生阻塞时,整个Redis服务器是无法提供服务的。因此,我们应该尽可能少的使用会引发阻塞的命令(比如keys *)。 尽量使用位操作和字节操作位(bit)的思想非常重要。比如你需要存储用户的性别信息,并且用户ID是连续的整数,这时你应该立即想到使用位图(bitmap),用户ID作为数组下标,每个位上用0/1表示性别。原创 2021-05-30 16:20:06 · 172 阅读 · 0 评论 -
【Redis】key过期清除策略
引入一个单实例Redis服务器最多能支持 2^32 个key,差不多就是 2.5个亿 。那么是不是说,我们可以无限制的向缓存中加入key呢?显然不能。容量的瓶颈不在于Redis本身,而在于内存。这正是我们需要给key设置过期时间并清除的原因。 定时删除 定时删除就是在设置key的过期时间的同时,为该key创建一个定时器(timer)。定时器会察觉到key过期,并触发立即删除动作。除了算法简单,这种删除策略只有一个好处——保证过期key快速被删除,立即释放内存。但是,这种原创 2021-05-30 16:13:44 · 340 阅读 · 0 评论 -
【Redis】事务
简单理解Redis是单线程的,所以并Redis的每个命令必然是原子性的。所以,Redis事务的实现非常简单:开启事务后,之后的命令都不会立即执行,而是放到一个队列中,之后一声令下开始顺序执行。 ACID根据官网文档,Redis事务支持ACI(原子性、一致性、隔离性),但不一定支持D(持久型)。当持久化方式是AOF且配置为appendfsync always时,才能保证持久性。 原语实现Redis的事务通过 multi、exec、discard、w原创 2021-05-28 17:50:18 · 99 阅读 · 0 评论 -
【Redis】缓存穿透,缓存击穿,缓存雪崩
引入在正常的情况下,用户查询一个数据,流程是怎样的呢?用户查一个数据,会先去内存数据库(如Redis)查询,如果命中则直接返回查询结果,如果未命中则又去磁盘数据库(如MySQL)查询;如果这一次命中则返回查询结果,并将结果缓存到内存数据库中,如果仍未命中则宣告查询失败。但是,实际情况会如我们所愿吗? 缓存穿透什么是缓存穿透?缓存穿透是指查询一个根本不存在的数据,缓存层和持久层都不会命中,使得缓存失去了意义。缓存总是无法命中的危害显而易见,即持久层数据库的压力加大。原创 2021-05-26 19:36:52 · 93 阅读 · 0 评论 -
【Redis】哨兵模式
手动主从切换主从复制/读写分离策略有个致命的问题,master挂掉且不可恢复了怎么办?有一种方式是手动进行主从切换。具体的操作是,先在slave上执行slaveof no one命令把自己变成新的master,然后手动的把其他节点连接到这个新的master上。显然,这种方式费时费力,还会造成一段时间内服务不可用。而哨兵模式,可以自动的、透明的、健壮的完成主从切换的任务。 原理讲解哨兵是一个独立运行的的进程,它监控着所有的Redis服务器。当然,一个哨兵可能还会出问题,因原创 2021-05-26 19:30:31 · 214 阅读 · 0 评论 -
【Redis】主从复制
基础简介主从复制就是将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave)。主从复制有以下基本规则:① 数据复制是单向的,即只能从主节点到从节点② 一个主节点可以拥有多个从节点,但从节点只能有一个主节点,即树状③ 从节点也可以拥有下一级从节点④ 主节点通常用于写,从节点通常用于读,这就是读写分离⑤ 读写分离是异步非阻塞的 重要作用1)数据冗余。主从复制实现了数据的热备份,是持久化之外的另一种数据冗余原创 2021-05-26 19:27:04 · 98 阅读 · 2 评论 -
【Redis】发布/订阅
简述什么是发布/订阅模型?直接看图:这个模型我们再熟悉不过了,这不就是MQ的模型吗?Channel不就是MQ中的主题吗?Redis发布/订阅模型是对范式极其简单的实现——生产者和消费者均是Redis客户端(client),通道为Redis服务端(server),它们共同组成了这个与 MQ主题模式 极其类似的发布/订阅模型。 演示▶ 消费者(订阅消息)127.0.0.1:6379> subscribe channel666Reading messages...原创 2021-05-25 22:16:10 · 1422 阅读 · 0 评论 -
【Redis】持久化
引入众所周知Redis是一个内存数据库,但是内存中的数据是易失性的。还好,Redis为我们提供了两种持久化机制——针对数据的RDB和针对操作的AOF。 RDB(Redis DataBase)核心原理RDB持久化是指在指定的时间间隔内将内存中数据快照写入磁盘。其语义是“如果一定的时间间隔内某个key上的操作数达到了某个值,就持久化该数据”。这也是默认的持久化方式。另外,数据快照默认被存到到了dump.rdb文件中。手动触发持久化(save与bgsave)通过两行原创 2021-05-25 22:13:15 · 102 阅读 · 0 评论 -
【Redis】三种特殊数据类型
Geospatial 地理空间什么!?键值对数据库也可以提供地理空间支持?其实,地理空间支持就是我们传入经纬度,Redis构建出一个地球模型,我们便可以获得两人的距离、半径内附近的人…▶ geoadd:添加地理位置# 有效的经度 -180~180# 有效的纬度 -85.05112878~85.05112878127.0.0.1:6379> geoadd china:city 116.41667 39.91667 beijing(integer) 1127.0.0.1:6379>原创 2021-05-25 22:00:25 · 107 阅读 · 0 评论 -
【Redis】简介与常用命令
简介▶ What is Redis?Redis是用C语言开发的一个开源的高性能键值对数据库全称Remote Dictionary Server ,即远程字典服务,这个名字非常生动形象!▶ 谈到Redis,你会立即想到它的哪些特性?基于内存可持久化多样的数据类型单线程模型高并发读写主从复制事务lua脚本…▶ Redis又被用于哪些场景中呢?高速缓存计时器、计数器发布订阅系统地图信息分析… 命令Redis存储的是key-v原创 2021-05-25 21:56:18 · 74 阅读 · 0 评论