Redis开发与运维
文章平均质量分 64
Redis作为基于键值对的NoSQL数据库,具有高性能,丰富的数据结构、持久化、高可用、分布式等特性、同事Redis本身非常稳定,已经得到业界的广泛认可和使用.
详细介绍在开发运维中如何提高效率、减少可能遇到的问题
另一花生
竹杖芒鞋轻胜马,一蓑烟雨任平生
展开
-
常见的缓存读写策略
Cache Aside(旁路缓存)策略这个策略就是我们使用缓存最常见的策略,Cache Aside 策略(也叫旁路缓存策略),这个策略数据以数据库中的数据为准,缓存中的数据是按需加载的。它可以分为读策略和写策略,其中读策略的步骤是:从缓存中读取数据; 如果缓存命中,则直接返回数据; 如果缓存不命中,则从数据库中查询数据; 查询到数据后,将数据写入到缓存中,并且返回给用户。写策略的步骤是:更新数据库中的记录; 删除缓存记录。那么像 Cache Aside 策略这样先更新数据库,后删原创 2021-05-24 00:18:02 · 1457 阅读 · 0 评论 -
缓存策略
选择只读缓存还是读写缓存?使用缓存,首先你就会面临选择读缓存还是读写缓存的问题。他们唯一的区别就是,在更新数据的时候,是否经过缓存。我们之前的课中讲到 Kafka 使用的 PageCache,它就是一个非常典型的读写缓存。操作系统会利用系统空闲的物理内存来给文件读写做缓存,这个缓存叫做 PageCache。应用程序在写文件的时候,操作系统会先把数据写入到 PageCache 中,数据在成功写到 PageCache 之后,对于用户代码来说,写入就结束了。然后,操作系统再异步地把数据更新到磁盘的文件原创 2021-04-06 21:51:37 · 285 阅读 · 0 评论 -
手写一个LRU
public class LRUCache<K, V> extends LinkedHashMap<K, V> { private final int CACHE_SIZE; // 这里就是传递进来最多能缓存多少数据 public LRUCache(int cacheSize) { super((int) Math.ceil(cacheSize / 0.75) + 1, 0.75f, true); // 这块就是设置一个hashmap的初.原创 2021-03-07 22:07:00 · 208 阅读 · 0 评论 -
为什么RedisCluster无法使用pipeline
我们知道,Redis 集群的键空间被分割为 16384 个槽(slot),集群的最大节点数量也是 16384 个。每个主节点都负责处理 16384 个哈希槽的其中一部分。具体的redis命令,会根据key计算出一个槽位(slot),然后根据槽位去特定的节点redis上执行操作。如下所示:master1(slave1): 0~5460master2(slave2):5461~10922master3(slave3):10923~16383集群有三个master节点组成,其中master1分配了原创 2020-06-09 12:31:29 · 2363 阅读 · 0 评论 -
Redis开发与运维之第十章集群(三)-节点通信
通信流程 在分布式存储中需要提供维护节点元数据信息的机制,所谓元数据是指:节点负责哪些数据,是否出现故障等状态信息。常见的元数据维护方式分为:集中式和P2P方式。Redis集群采用P2P的Gossip(流言)协议,Gossip协议工作原理就是节点彼此不断通信交换信息,一段时间后所有的节点都会知道集群完整的信息,这种方式类似流言传播通信过程说明:1)集群中的每个节点...原创 2019-12-02 09:20:20 · 366 阅读 · 0 评论 -
Redis开发与运维之第十章集群(二)-redis-trib.rb搭建集群
redis-trib.rb是采用Ruby实现的Redis集群管理工具。内部通过Cluster相关命令帮我们简化集群创建、检查、槽迁移和均衡等常见运维操作,使用之前需要安装Ruby依赖环境。下面介绍搭建集群的详细步骤。1.Ruby环境准备-- 下载rubywget https:// cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz...原创 2019-12-02 08:54:20 · 460 阅读 · 0 评论 -
Redis开发与运维之第十章集群-搭建集群
三个步骤:1)准备节点。2)节点握手。3)分配槽。准备节点Redis集群一般由多个节点组成,节点数量至少为6个才能保证组成完整 ,高可用的集群。每个节点需要开启配置cluster-enabled yes,让Redis运行在集群模式下。建议为集群内所有节点统一目录,一般划分三个目录:conf、data、log,分别存放配置、数据和日志相关文件。把6个节点配置统一放在conf目录下...原创 2019-11-30 23:59:08 · 406 阅读 · 0 评论 -
Redis开发与运维之第十章集群(一)-数据分布
数据分布理论 分布式数据库首先要解决把整个数据集按照分区规则映射到多个节点的问题,即把数据集划分到多个节点上,每个节点负责整体数据的一个子集。 需要重点关注的是数据分区规则.常见的分区规则有哈希分区和顺序分区两种:Redis Cluster采用哈希分区规则,这里我们重点讨论哈希分区,常见的哈希分区规则有几种1.节点取余分区 使用...原创 2019-10-24 01:47:38 · 351 阅读 · 0 评论 -
Redis.conf配置文件参数解析
#redis.conf# Redis configuration file example.# ./redis-server /path/to/redis.conf################################## INCLUDES ####################################这在你有标准配置模板但是每个redis服务器又需要个性设置的时候...原创 2019-09-25 14:18:31 · 312 阅读 · 0 评论 -
Redis开发与运维之第九章哨兵(九)-高可用读写分离
1.从节点的作用 从节点一般可以起到两个作用:第一,当主节点出现故障时,作为主节点的后备“顶”上来实现故障转移,Redis Sentinel已经实现了该功能的自动化,实现了真正的高可用。第二,扩展主节点的读能力,尤其是在读多写少的场景非常适用 但上述模型中,从节点不是高可用的,如果slave-1节点出现故障,首先客户端client-1将与其失联,其次Senti...原创 2019-09-01 18:21:49 · 372 阅读 · 0 评论 -
Redis开发与运维之第九章哨兵(八)--故障转移过程简介
领导者选举出的Sentinel节点负责故障转移1)在从节点列表中选出一个节点作为新的主节点,选择方法如下: a)过滤:“不健康”(主观下线、断线)、5秒内没有回复过Sentinel节点ping响应、与主节点失联超过down-after-milliseconds*10秒。 b)选择slave-priority(从节点优先级)最高的从节点列表,如果存在则返回,不存在则继...原创 2019-09-01 16:37:01 · 421 阅读 · 0 评论 -
Redis开发与运维之第九章哨兵(七)--哨兵机制实现原理简介
Redis Sentinel的三个定时任务一套合理的监控机制是Sentinel节点判定节点不可达的重要保证,RedisSentinel通过三个定时监控任务完成对各个节点发现和监控;1)每隔10秒,每个Sentinel节点会向主节点和从节点发送info命令获取最新的拓扑结构# Replicationrole:masterconnected_slaves:2slave0:ip=...原创 2019-09-01 14:15:55 · 290 阅读 · 0 评论 -
Redis开发与运维之第九章哨兵(六)--客户端连接
如何正确地连接Redis Sentinel。有人会说这有什么难的,已经知道了主节点的ip地址和端口,用对应编程语言的客户端连接主节点不就可以了吗?但试想一下,如果这样使用客户端,客户端连接Redis Sentinel和主从复制的Redis又有什么区别呢,如果主节点挂掉了,虽然Redis Sentinel可以完成故障转移,但是客户端无法获取这个变化,那么使用Redis Sentine...原创 2019-08-29 01:59:13 · 775 阅读 · 0 评论 -
Redis开发与运维之第九章哨兵(五)--部署技巧
1)Sentinel节点不应该部署在一台物理“机器”上。 这里特意强调物理机是因为一台物理机做成了若干虚拟机或者现今比较流行的容器,它们虽然有不同的IP地址,但实际上它们都是同一台物理机,同一台物理机意味着如果这台机器有什么硬件故障,所有的虚拟机都会受到影响,为了实现Sentinel节点集合真正的高可用,请勿将Sentinel节点部署在同一台物理机器上。2)部署至少三个且奇数...原创 2019-08-14 01:51:58 · 413 阅读 · 0 评论 -
Redis开发与运维之第九章哨兵(四)--配置优化
Redis安装目录下有一个sentinel.conf,是默认的Sentinel节点配置文件,下面就以它作为例子进行说明。1.配置说明和优化port 26379dir /opt/soft/redis/datasentinel monitor mymaster 127.0.0.1 6379 2sentinel down-after-milliseconds mymaster 30...原创 2019-08-13 10:16:16 · 845 阅读 · 0 评论 -
Redis开发与运维之第九章哨兵(三)--Redis Sentinel架构搭建重要点总结
介绍如何安装和部署Redis Sentinel部署Redis数据节点Redis Sentinel中Redis数据节点没有做任何特殊配置,复制redis.conf文件一份 根据以下提示查找1.启动主节点redis-6379.confport 6379daemonize yeslogfile "6379.log"dbfilename "dump-6379.rd...原创 2019-08-08 09:40:16 · 360 阅读 · 0 评论 -
Redis开发与运维之第九章哨兵(二)--故障转移过程总结
Redis Sentinel的高可用性主节点出现故障时,Redis Sentinel能自动完成故障发现和故障转移,并通知应用方,从而实现真正的高可用 Redis Sentinel是一个分布式架构,其中包含若干个Sentinel节点和Redis数据节点,每个Sentinel节点会对数据节点和其余Sentinel节点进行监控,当它发现节点不可达时,会对节点做下线标识。如果被标识...原创 2019-08-07 10:57:40 · 557 阅读 · 0 评论 -
Redis开发与运维之第九章哨兵(一)--高可用介绍
Redis的主从复制模式下,一旦主节点由于故障不能提供服务,需要人工将从节点晋升为主节点,同时还要通知应用方更新主节点地址,对于很多应用场景这种故障处理的方式是无法接受的。可喜的是Redis从2.8开始正式提供了Redis Sentinel(哨兵)架构来解决这个问题.主从复制的问题 Redis的主从复制模式可以将主节点的数据改变同步给从节点,这样从节点就可以起到两...原创 2019-03-11 06:50:36 · 340 阅读 · 1 评论 -
Redis开发与运维之第八章理解内存(五)
insert编码是集合(set)的类型编码的一种,内部表现为存储有序、不重复的整数集。当集合只包含整数且长度不超过set-max-intset-entries 配置时被启用。执行以下命令查看intset表现:redis> sadd set:test 3 4 2 6 8 9 2(integer) 6redis> object encoding set:test"intse...原创 2019-02-26 09:22:55 · 341 阅读 · 0 评论 -
Redis开发与运维之第八章理解内存(四)
编码优化1.了解编码Redis对外提供了string list hash set zet 等类型,但是Redis内部针对不同类型存在编码概念,所谓编码就是具体使用哪种底层数据结构来实现。编码不同将直接影响数据的内存占用和读写效率。使用object encoding 命令获取编码类型。redis> set str:1 helloOK redis> object enco...原创 2019-02-19 09:33:49 · 444 阅读 · 0 评论 -
Redis开发与运维之第八章理解内存(三)
之前写四的时候把三给覆盖掉了。。。只能重写一遍了 = =字符串优化字符串对象是Redis内部最常用的数据类型。所有的键都是字符串类型,值对象数据除了整数之外都使用 字符串存储。比如执行命令 : lpush cache:type "redis" "memcache" "tair" "levelDB", Redis首先创建 "cache:type" 键字符串,然后创建链表对象,链表对象内再包含...原创 2019-02-21 21:42:57 · 493 阅读 · 1 评论 -
Redis开发与运维之第八章理解内存(二)
内存溢出控制策略当Redis所用内存达到maxmemory上限时会触发相应的溢出控制策略。具体策略受maxMemory-policy参数控制,Redis支持六种策略。1.noeviction:默认策略,不会删除任何数据,拒绝所有写入操作并返回客户端错误信息 OOM,此时Redis只响应读操作。2.volatile-lru:根据LRU算法删除设置了超时属性的键,直到腾出足够空间为止,如果...原创 2019-02-11 09:46:26 · 528 阅读 · 0 评论 -
Redis开发与运维之第八章理解内存(一)
本章重点回顾1.Redis实际内存消耗主要包括 :键值对象,缓冲区内存,内存碎片;可以使用指令 info memory 查看命令获取内存相关指标、需要重点关注的指标有属性名 属性说明 used_memory Redis分配器分配的内存总量,也就是内部存储的所有数据内存占用量 used_memory_rss 从操作系统的角度显示Redis进程占用的物理内存总量...原创 2019-01-23 06:47:27 · 459 阅读 · 1 评论 -
Redis开发与运维之第七章Redis的噩梦:阻塞
发现阻塞·当Redis阻塞时,线上应用服务应该最先感知到,这时应用方会收到大量Redis超时异常。常规做法是在应用方加入异常统计并通过邮件/微信/短信报警,以便及时发现通知问题。开发人员需要处理如何统计异常以及触发报警的时机。何时报警根据应用的并发量决定。由于Redis调用API会分散在项目的多个地方,每个地方都监听异常并加入监控代码必然难以维护。这可以借助于日志系统,使用logback或者l...原创 2019-01-17 01:05:49 · 347 阅读 · 0 评论 -
Redis开发与运维之第六章主从复制
本章重点回顾1.Redis通过复制功能实现主节点的多个副本。从节点可灵活地通过slaveof命令建立或者断开复制流程。2.复制支持树状结构,从节点可以复制另一个从节点,实现一层层向下的复制流。Redis2.8之后复制的流程分为:全量复制和部分复制。全量复制需要同步全部主节点的数据集合,大量消耗机器和网络资源。而部分复制有效减少因为网络异常等原因造成的不必要全量复制情况。通过配置合理的复...原创 2019-01-13 20:20:29 · 429 阅读 · 0 评论 -
Redis开发与运维之Redis5.0集群搭建简单使用001
1. 准备工作两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master、3 salve 环境redis 采用 redis-5.0.3 版本。两台虚拟机都是 CentOS7.x版本 ,一台 centos7_64_134 (IP:192.168.133.134),一台 CentOS7_64_135(IP:192.168.133.135) 。注意:前提是你会使用虚拟机正确安装c...原创 2019-01-13 01:45:21 · 427 阅读 · 1 评论 -
Redis开发与运维之第五章持久化
1. Redis提供两种持久化方式 : RDB 和AOFbgsave 命令的运作流程RDB优点:是一个紧凑压缩的二进制文件,代表Redis在某个时间点上的数据快照非常实用于备份,全量复制等场景。比如每6小时执行bgsave备份,并吧文件拷贝到远程机器或者文件系统中 hdfs ,用于灾难恢复。RDB恢复数据远远快于AOF方式缺点:RDB方式数据没办法做到实时持久化/秒级持...原创 2019-01-06 17:33:21 · 6260 阅读 · 2 评论 -
Redis开发与运维之第四章客户端
1. RESP (Redis Serialization Protocol Redis) 保证客户端与服务端的正常通信,是各种变成语言开发客户端的基础。2. 要选择社区活跃客户端,在实际项目中使用稳定版本的客户端。3. 区分Jedis 直连和连接池的区别,在生产环境中,应该使用连接池。4. Jedis.close() 在直连下是关闭连接,在连接池则是归还连接。5. Jedis客户端...原创 2019-01-05 22:11:46 · 265 阅读 · 0 评论 -
Redis开发与运维之第三章总结-小功能大用处
总结1.慢查询中两个重要参数slowlog-log-slower-than(预设阙值) 和 slowlog-max-len(列表最大长度)阙值的设立 慢查询记录存放在哪里超过这个阙值的命令将会记录在一个地方,Redis采用了列表来存储慢查询日志,slowlog-max-len便是列表长度设置。一个新的命令满足慢查询条件时候被插入到这个列表中,当慢查询日志列表已经处于最大长度时候,最...原创 2018-12-16 14:52:58 · 341 阅读 · 0 评论 -
redis开发与运维第二章总结-API的理解和使用
1.redis提供5种数据结构,每种数据结构都有多种内部编码实现。2.Redis高性能的三个因素:纯内存存储,IO多路复用技术,单线程架构3.由于Redis的单线程架构,所以需要每个命令能被快速速速执行完,否则会存在阻塞Redis的可能,理解Redis单线程命令处理机制是开发和运维Redis的核心之一。4.批量操作(mget/mset/hmset)能够有效提高命令执行的效率,但要注...原创 2018-12-15 22:59:42 · 350 阅读 · 0 评论 -
redis安装配置jedis客户端访问redis相关问题总结
redis安装配置jedis客户端访问redis相关问题总结我使用的是CentOS-7-x86_64-DVD-1611.iso 下载地址:http://www.centoscn.com/CentosSoft/虚拟机安装centos安装redis下载以及安装重要步骤配置jedis客户端初步使用centos下iptables的配置jedis连接信息中的异常处理虚拟机安装VMware Wor原创 2017-06-07 11:06:25 · 1141 阅读 · 1 评论