![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
redis
文章平均质量分 84
苏迪1
这个作者很懒,什么都没留下…
展开
-
十二、缓存设计
缓存能够有效地加速应用读写速度,同时也可以降低后端负载,对日常应用地开发至关重要。但是将缓存加入应用架构后也会带来一些问题,本章将针对这些问题介绍缓存使用技巧和设计方案,包含如下内容:缓存的收益和成本分析。缓存更新策略的选择和使用场景。缓存粒度控制方法。穿透问题优化。无底洞问题优化。雪崩问题优化。热点key重建优化。一、缓存的收益和成本上图左侧为客户端直接调用存储层的架构,右侧为比较典型的缓存层+存储层架构,下面分析一下缓存加入后带来的收益和成本。收益如下:加速读写:因为缓存通原创 2021-07-08 17:12:29 · 251 阅读 · 0 评论 -
十一、持久化
Redis支持RDB和AOF两种持久化机制,持久化功能有效地避免因进程退出造成地数据丢失问题,当下次重启时利用之间持久化地文件即可实现数据恢复。理解掌握持久化机制对于对于Redis运维非常重要。一、RDBRDB持久化是把当前进程数据生成快照保存到硬盘的过程,触发RDB持久化过程分为手动触发和自动触发。1、触发机制手动触发分别对应save和bgsave命令:save命令:阻塞当前Redis服务器,直到RDB过程完成为止,对于内存比较大的实例会造成长时间阻塞,线上环境不建议使用。运行save命令对应原创 2021-07-07 11:26:40 · 134 阅读 · 0 评论 -
十、慢查询分析
许多存储系统(例如MySQL)提供慢查询日志帮助开发和运维人员定位系统存在的慢操作。所谓慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过超过预设阈值,就将这条命令的相关信息(例如:发生时间,耗时,命令的详细信息)记录下来,Redis也提供了类似的功能。如图3-1所示,Redis客户端执行一条命令分为如下4个部分:1)发送命令2)命令排队3)命令执行4)返回结果需要注意,慢查询只统计步骤3)的时间,所以没有慢查询并不代表客户端没有超时问题。一、慢查询的两个配置参数对于慢查询功能原创 2021-06-28 17:31:15 · 328 阅读 · 0 评论 -
九、Redis Shell
Redis提供了redis-cli、redis-server、redis-benchmark等Shell工具。它们虽然比较简单,但是麻雀虽小五脏俱全,有时可以很巧妙地解决一些问题。一、redis-cli详解第一章曾介绍过redis-cli,包括-h、-p参数,但是除了这些参数,还有很多有用的参数,要了解redis-cli --help命令来进行查看,下面将对一些重要参数的含义以及使用场景进行说明。1、-r-r(repeat)选项代表将命令执行多次,例如下面操作将会执行三次ping命令:redis-原创 2021-06-28 15:34:28 · 368 阅读 · 0 评论 -
八、Pipeline
一、Pipeline概念Redis客户端执行一条命令分为如下四个过程:1)发送命令2)命令排队3)命令执行4)返回结果其中1)+4)称为Round Trip time(RTT,往返时间)。Redis提供了批量操作命令(例如mget、mset等),有效地节约RTT。但大部分命令是不支持批量操作的,例如要执行n次hgetall命令,并没有mhgetall命令存在,需要消耗n次RTT。Redis的客户端和服务端可能部署在不同的机器上。例如客户端在北京,Redis服务器在上海,两地直线距离约1300公原创 2021-06-28 12:01:04 · 73 阅读 · 0 评论 -
七、事务与Lua
为了保证多条命令组合的原子性,Redis提供了简单的事务功能以及集成Lua脚本来解决这个问题。本节首先介绍Redis中事务的使用方法以及它的局限性,之后重点介绍Lua语言的基本使用方法,以及如何将Redis和Lua脚本进行集成,最后给出Redis管理Lua脚本的相关命令。一、事务熟悉关系型数据库的读者应该对事务比较了解,简单地说,事务表示一组动作,要么全部执行,要么全部不执行。例如在社交网站上用户A关注了用户B,那么需要在用户A的关注表中加入用户B,并且在用户B的粉丝表中添加用户A,这两个行为要么全部执原创 2021-06-25 13:59:47 · 283 阅读 · 0 评论 -
六、Bitmaps
一、数据结构模型现代计算机用二进制(位)作为信息的基础单位,1字节等于8位,例如“big”字符串是由3个字节组成,但实际在计算机存储时将其用二进制表示,“big”分别对应的ASCLL码分别是98、105、103,对应的二进制分别是01100010、01101001和01100111,如下图所示。许多开发语言都提供了操作位的功能,合理地使用位能够有效地提高内存使用率和开发效率。Redis提供了Bimaps这个“数据结构”可以实现对位地操作。把数据结构加上引号主要因为:Bitmaps本身不是一种数据结原创 2021-06-25 11:55:01 · 143 阅读 · 0 评论 -
五、HyperLogLog
HyperLogLog并不是一种新的数据结构(实际类型为字符串类型),而是一种基数算法,通过HyperLogLog可以利用极小的内存空间完成独立总数的统计,数据集可以是IP、Email、ID等。HyperLogLog提供了3个命令:pfadd、pfcount、pfmerge。例如2016-03-06的访问用户是uuid-1、uuid-2、uuid-3、uuid-4,2016-03-05的访问用户是uuid-4,uuid-5,uuid-6,uuid-7。一、添加pfadd key element [el原创 2021-06-25 10:16:16 · 111 阅读 · 0 评论 -
四、Redis发布订阅
Redis提供了基于“发布?订阅”模式的消息机制,此种模式下,消息发布者和订阅者不进行直接通信,发布者客户端向指定的频道(channel)发布消息,订阅该频道的每个客户端都可以受到该消息,如下图所示。Redis提供了若干命令支持该功能,在实际应用开发时,能够为此类问题提供实现方法。1、命令Redis主要提供了发布消息、订阅频道、取消订阅以及按照模式订阅和取消订阅等命令。1、发布消息publish channel message下面操作会向channel:sports频道发布一条消息“Tim w原创 2021-06-24 17:05:59 · 183 阅读 · 0 评论 -
三、GEO
Redis3.2版本提供了GEO(地理信息定位)功能,支持存储地理位置信息用来实现诸如附近位置、摇一摇这类依赖于地理位置信息的功能,对于需要实现这些功能的开发者来说是一大福音。GEO功能是Redis的另一位作者Matt Stancliff借鉴NoSQL数据库Ardb实现的,Ardb的作者来自中国,它提供了优秀的GEO功能。一、增加地理位置信息geoadd key longitude latitude member [longitude latitude member ...]longitude、la原创 2021-06-23 14:58:58 · 100 阅读 · 0 评论 -
二、Redis API的理解和使用
Redis提供了5种数据结构,理解每种数据结构的特点对于Redis开发运维非常重要,同时掌握Redis的单线程命令处理机制,会使数据结构和命令的选择事半功倍。原创 2021-06-15 14:38:59 · 275 阅读 · 0 评论 -
一、初识redis
一、Redis简介Redis是一种基于键值对(key-value)的NoSQL数据库,与很多键值对数据库不同的是,Redis中的值可以是由string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、Bitmaps(位图)、HyperLogLog、GEO(地理信息定位)等多种数据结构和算法组成,因此Redis可以满足很多的应用场景,而且因为Redis会将所有数据都存放在内存中,所以它的读写性能非常惊人。不仅如此,Redis还可以将内存的数据利用快照和日志的形式保存到硬盘原创 2021-06-15 12:00:50 · 148 阅读 · 0 评论