Redis
Redis的使用和原理
Lyzxii
积累,进步;
展开
-
缓存穿透,缓存击穿,缓存雪崩、大Key
缓存的使用,极大的提升了应用程序的性能和效率,特别是数据查询方面。但同时,它也带来了一些问题。其中,最要害的问题,就是缓存数据的一致性问题,从严格意义上讲,这个问题无解。如果对数据的一致性要求很高,那么就不能使用缓存。另外的一些典型问题就是:缓存穿透、缓存雪崩和缓存击穿。缓存穿透缓存穿透:是指查询一个数据库一定不存在的数据。(想象一下这个情况,如果传入的参数为-1,会是怎么样?这...原创 2019-05-06 18:04:50 · 867 阅读 · 0 评论 -
Redis分布式锁
分布式锁概述在单机情况下(单JVM),线程之间共享内存,只要使用线程锁(synchronized或者lock)就可以解决并发问题。如果是分布式情况下(多JVM),线程A和线程B可能不是在同一JVM中,这样线程锁就无法起到作用了,此时可以通过分布式锁或者共享外部变量(比如数据库锁)来解决并发问题。基于Redis实现分布式锁Redis实现分布式锁要点同一个业务的锁的名字唯一 使用Redis中的SETNX key value,将key的值设为value,当且仅当key不存在。若给定...原创 2018-04-12 16:40:38 · 182 阅读 · 0 评论 -
Redis复制、哨兵、集群架构
Redis高可用架构主要包括:复制(Replication):扩展系统对于读的能力 哨兵(Sentinel):为服务器提供高可用特性,减少故障停机出现 集群(Cluster):扩展内存容量,增加机器,提高性能读写能力和存储以及提供高可用特性复制在Redis中可以通过执行SLAVEOF命令或者设置slaveof选项,让一个服务器去复制另外一个服务器,被复制的服务器称为主服务器master,复制的服务器称为从服务器slave,主从服务器的数据库保存相同的数据。SLAVEIF命令如下:SLAV原创 2018-03-29 17:32:03 · 2176 阅读 · 0 评论 -
Redis底层数据结构解析
Redis对象概述Redis 是一个基于内存的键值对(key-value)的分布式存储系统,Redis 数据库里面的每个键值对(key-value pair)底层都是由对象(redisObject)组成的,其中Redis的key总是一个字符串对象Redis对象的类型type和编码encodingRedis使用对象来表示key和value,在Redis数据库中,新创建一个键值对时,至少会创建两个对象,一个键对象,一个值对象Redis中的每个对象都由redisObject结构表示。redis..原创 2018-03-20 17:19:10 · 348 阅读 · 0 评论 -
Redis事件
目录文件事件文件事件处理器的结构文件事件的处理器:Redis I/O多路复用时间事件时间事件的实现时间事件应用实例:serverCron函数事件的调度和执行Redis服务器是事件驱动程序,服务器需要处理以下两类事件文件事件(file event):Redis服务器通过套接字和客户端或其他Redis服务器之间通信,会产生相应的文件事件(文件事件就是套接字的抽象),服务器通过监听并处理文件事件完成一系列网络通信操作。 时间事件(time event):Redis服.原创 2018-03-21 13:53:51 · 1070 阅读 · 0 评论 -
Redis常用知识总结
Redis 简介Redis 是一个C语言开发的,基于键值对的内存存储系统,支持RDB和AOF持久化,可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(String), 散列(Hash), 列表(List), 集合(Set), 有序集合(Sorted Set)。Redis 常用数据结构常用Redis命令KEYS * 获取所有的键名列表(KEYS pattern (pattern可以是?:一个字符,*:任意个字符,[a-f]:a-f之间任意一个字符),\x:匹配字符原创 2018-03-20 15:59:37 · 427 阅读 · 0 评论 -
一致性哈希算法
我们在使用Redis的时候,为了保证Redis的高可用,提高Redis的读写性能,最简单的方式我们会做主从复制,组成Master-Master或者Master-Slave的形式,或者搭建Redis集群,进行数据的读写分离,类似于数据库的主从复制和读写分离比如现在有大概2000W左右的数据,按照我们约定的规则进行分库,规则就是随机分配,我们可以部署8台缓存服务器,每台服务器大概含有500W条数据...原创 2019-07-11 09:15:34 · 2022 阅读 · 0 评论