02-Redis 数据结构之 字典的数据结构 一、Redis 字典结构内部结构Redis 字典的结构和 Java 中的 HashMap 有点类似,都是存放键值对,在底层都是使用数组加链表(称为一个哈希表)的形式来实现的,但与 HashMap 不同的是,在 Redis 中,它由两个哈希表组成,它的结构大致如下图所示: 由上图可以看到,它使用两个 hashtable ,姑且称之为 0 号哈希表和 1 号哈希表,每次只会使用 0 号哈希表,那么 2021-01-01 Redis #Redis
02-Redis 数据结构之 跳跃表 一、跳跃表简介跳跃表(skiplist)是一种随机化的数据结构,由 William Pugh 在论文《Skip lists: a probabilistic alternative to balanced trees》中提出,是一种可以于平衡树媲美的层次化链表结构——查找、删除、添加等操作都可以在对数期望时间下完成,以下是一个典型的跳跃表例子: Reids 有一个叫 有序列表 zset 的数据结 2021-01-01 Redis #Redis
03-Redis 内存模型 前言我们使用 Redis 时,会接触 Redis 的5种对象类型(字符串、哈希、列表、集合、有序集合),丰富的类型是 Redis 相对于 Memcached 等的一大优势。在了解 Redis 的5种对象类型的用法和特点的基础上,进一步了解 Redis 的内存模型,对 Redis 的使用有很大帮助,例如: 估算 Redis 内存使用量。目前为止,内存的使用成本仍然相对较高,使用内存不能无所顾忌;根 2021-01-01 Redis #Redis
03-Redis 持久化 一、持久化简介持久化的功能:Redis 是内存数据库,数据都是存储在内存中,为了避免进程退出导致数据的永久丢失,需要定期将 Redis 中的数据以某种形式(数据或命令)从内存保存到硬盘;当下次 Redis 重启时,利用持久化文件实现数据恢复。除此之外,为了进行灾难备份,可以将持久化文件拷贝到一个远程位置。 持久化发生了什么 | 从内存到磁盘我们来考虑一下 Redis 作为一个 内存数据库 要做的关 2021-01-01 Redis #Redis
04-Redis 事务 理论Redis 事务的本质是一组命令的集合。事务支持一次执行多个命令,一个事务中所有命令都会被序列化。在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不会插入到事 务执行命令序列中。 总结说:Redis 事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令。在 Redis 中,事务具有原子性(Atomicity)、一致性(Consistency)和隔离性(Isola 2021-01-01 Redis #Redis
04-Redis 单线程 or 多线程 Redis 单线程Redis 单线程指的是 接收客户端请求->解析请求 ->进行数据读写等操作->发送数据给客户端 这个过程是由一个线程(主线程)来完成的。简单来说,Redis 中只有网络请求模块和数据操作模块是单线程的,而其他的如持久化存储模块、集群支撑模块等是多线程的。这也是我们说 Redis 是单线程的原因。 Redis 在启动的时候,是会启动一些后台线程(BIO)的: 2021-01-01 Redis #Redis
05-Redis 多机之1 - 主从复制 1 主从复制 主从复制 是指将一台 Redis 服务器的数据,复制到其他的 Redis 服务器。前者称为 **主节点(master)**,后者称为 **从节点(slave)**。 数据的复制是 单向 的,只能由主节点到从节点。 默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。 Redis 主从复制支持 主从同步 和 从从同步 2021-01-01 Redis #Redis
05-Redis 多机之2 - 哨兵 Redis主从复制的作用有数据热备、负载均衡、故障恢复等;但主从复制存在的一个问题是故障恢复无法自动化。本文将要介绍的哨兵,它基于Redis主从复制,主要作用便是解决主节点故障恢复的自动化问题,进一步提高系统的高可用性。 1 Redis Sentinel 哨兵在介绍哨兵之前,首先从宏观角度回顾一下Redis实现高可用相关的技术。它们包括:持久化、复制、哨兵和集群,其主要作用和解决的问题是: 持久 2021-01-01 Redis #Redis
05-Redis 多机之2 - 哨兵 脑裂 1、原理1.1、概述哨兵模式的 redis 集群有三种角色:sentinel/master/slave,它们通过 tcp 链接,相互建立联系。 sentinel 作为高可用集群管理者,它的功能主要是:检查故障,发现故障,故障转移。 1.2、故障转移流程 在 redis 集群中,当 sentinel 检测到 master 出现故障,那么 sentinel 需要对集群进行故障转移。 2021-01-01 Redis #Redis
05-Redis 多机之3 - 集群 1 Redis 集群Redis的高可用技术有:持久化、主从复制和哨兵,但这些方案仍有不足,其中最主要的问题是存储能力受单机限制,以及无法实现写操作的负载均衡。 Redis集群解决了上述问题,实现了较为完善的高可用方案。集群,即Redis Cluster,是Redis 3.0开始引入的分布式存储方案。 上图展示了 Redis Cluster 典型的架构图,集群中的每一个 Redis 节点都 互相两 2021-01-01 Redis #Redis
Redis - Java 编码调用 JedisJedis 是 Redis 官方推荐的Java连接开发工具。 手动编程redis 依赖12345678910111213<dependencies> <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency> <groupId& 2021-01-01 Redis #Redis
Redis SET、SETNX、SETEX、SETGET SET 官网:https://redis.io/docs/latest/commands/set/ 语法 1SET key value [NX | XX] [GET] [EX seconds | PX milliseconds | EXAT unix-time-seconds | PXAT unix-time-milliseconds | KEEPTTL] 可用版本:>= 1 2021-01-01 Redis #Redis
Redis 使用启动脚本设置开机启动 启动脚本推荐在生产环境中使用启动脚本方式启动redis服务。启动脚本redis_init_script位于位于Redis的/utils/目录下。 123456789101112131415# 大致浏览下该启动脚本,发现redis习惯性用监听的端口名作为配置文件等命名,我们后面也遵循这个约定。 # redis服务器监听的端口 REDISPORT=6379 # 服务端所处位置,在make instal 2021-01-01 Redis #Redis
Redis 安装(Centos 伪分布式) 测试环境 redis 需要安装在 linux 服务器上运行测试,本项目使用 linux 虚拟机及 ssh 客户端进行功能测试。 集群中应该至少有三个节点,每个节点有一备份节点。需要 6 台服务器。 搭建伪分布式,需要 6 个 redis 实例(生产环境搭建只需改下 IP 地址即可,步骤相似)。 redis 安装环境redis 是 C 语言开发,建议在 linux上 运行,本项目使用 Cento 2021-01-01 Redis #Redis
Redis 安装(Centos 源码 7.0.12) Redis 官网下载地址:https://redis.io/download/ Redis 版本第二位数字如果是偶数,就是稳定版,如果是奇数,就是激进版 1、检测 Linux 安装环境Linux 环境安装 Redis 必须先具备 gcc 编译环境,gcc 是 linux 下的一个编译程序,是 C 程序的编译工具。 12gcc -v # 查看是否安装了gccyum -y install g 2021-01-01 Redis #Redis
Redis 安装(Windows) 1、下载 RedisRedis 官网是不提供 Windows 版本的 Redis 的,一开始是由微软的一个团队负责维护其 Windows 版本,github 地址;但是,目前该团队也停止了对这一Windows版本Redis的维护工作,其更新停留在了 2016 年。现在,则是另一个志愿者团队在维护 Windows 版本的 Redis,github 地址。我们在他这下载 Redis 即可。 下载地址: 2021-01-01 Redis #Redis
Redis 安装(管理工具) Redis Desktop Manage 管理工具 官网地址:https://redisdesktop.com/download Github 地址:https://github.com/RedisInsight/RedisInsight Github 地址:https://github.com/uglide/RedisDesktopManager/ https://github.com/ugl 2021-01-01 Redis #Redis
Redis 简介 Redis 相关地址 Github 源码:https://github.com/antirez/redis Redis 官网:https://redis.io Redis 命令使用手册:https://redis.io/commands/ Redis 中文网:http://www.redis.net.cn/ Redis 官方中文文档:https://www.redis.com.cn/docum 2021-01-01 Redis #Redis
Redis 设置和使用密码 设置密码1、通过配置文件redis.conf设置密码找到requirepass关键字,后面就是跟的密码,默认情况下是注释掉的,即默认不需要密码,打开注释,设置为自己的密码,重启即可 12345# Warning: since Redis is pretty fast an outside user can try up to# 150k passwords per second against a 2021-01-01 Redis #Redis
Redis 部分命令 1234567891011121314151617# 查看服务端版本redis-server -v redis-server --version# 查看客户端版本redis-cli -v redis-cli --version# 启动客户端src/redis-server & src/redis-server ./redis.conf & # 指定配置文件 # 停止客户端redi 2021-01-01 Redis #Redis