Redis集群一般有四种方式,分别为:主从复制、哨兵模式、Cluster以及各大厂的集群方案
Redis的协议基本分为两大块:1)面向客户端的协议,如ping/set/get等客户端的命令。2)复制协议,slave同步master时需要用到。
介绍了一款支持高并发的kv store,在单台机器上可实现1.6亿OPS的高吞吐,远胜于其它纯内存数据结构的性能。
我们程序中多多少少会有一些共享的资源或者数据,在某些时候我们需要保证同一时间只能有一个线程访问或者操作它们。在传统的单机部署的情况下,我们简单的使用 Java 提供的并发相关的 API 处理即可。但是现在大多数服务都采用分布式的部署方式,我们就需要提供一个跨进程的互斥机制来控制共享资源的访问,这种互斥机制就是我们所说的分布式锁。
Windows环境安装Redis,使用MSI安装包方式安装。要安装Redis,首先要获取安装包。Windows的Redis安装包需要到以下GitHub链接找到。
跨DC(数据中心)的数据同步是企业提升容灾实力的必备手段。随着携程业务向海外发展的速度越来越快,应用架构能够快速全球部署的能力也愈发重要。对于服务而言,我们可以尽量做到无状态的部署架构,来达到灵活拓展,快速部署的目的,比如 server-less。
我们需要在虚拟机中安装好两台centos系统,然后再去搭建一主一从的redis架构。
本文档是一篇草案,其包含的指引将来可能会随着Sentinel项目的进展而改变。 支持Redis Sentinel的Redis客户端指引Redis Sentinel是Redis实例的监控解决方案,处理Redis主服务器的自动故障转移和服务发现(谁是一组实例中的当前主服务器)。
有时候 Redis 实例需要在短时间内加载大量的已存在数据,或者用户产生的数据,这样,上百万的键将在很短的时间内被创建。 这被称为集中插入(mass insertion),这篇文档的目的,就是提供如何最快地向 Redis 中插入数据的一些相关信息。
当 Redis 作为缓存使用时,当你添加新的数据时,有时候很方便使 Redis 自动回收老的数据。这种行为在开发者社区中众所周知,因为这是流行的 memcached 系统的默认行为。 LRU 实际上是被唯一支持的数据移除方法。本文内容将包含 Redis 的 maxmemory 指令,用于限制内存使用到一个固定的容量,也包含深入探讨 Redis 使用的 LRU 算法,一个近似准确的 LRU。
把 loadUserInfo 作为一个单独的函数有点大题小做了,但是在复杂的程序中这是一个很好的方法。认证中唯一被遗漏的事情就是登出了。我们怎么来做登出呢?很简单,我们改变 user:1000 的 auth 字段中的随机串,从 auths 哈希中删除旧的认证秘钥,然后添加一个新的。
本文讲述使用 PHP 以及 Redis 来设计和实现一个简单的微博。编程社区传统上认为,在开发 web 应用程序时,作为特殊目的的键值存储数据库不能用于替换关系型数据库。本文将向你展示 Redis 在键值层之上的数据结构是实现各种应用程序的有效数据模型。 在继续之前,你可以花点时间体验一下在线演示(http://retwis.redis.io,译者注),看看我们究竟要做什么。
Redis 有序集合 (Sorted sets)有序集合类似于集合和哈希的混合体的一种数据类型。像集合一样,有序集合由唯一的,不重复的字符串元素组成,在某种意义上,有序集合也就是集合。 集合中的每个元素是无序的,但有序集合中的每个元素都关联了一个浮点值,称为分数(score,这就是为什么该类型也类似于哈希,因为每一个元素都映射到一个值)。
Redis 列表(Lists)为了解释列表类型,最好先开始来点理论,因为列表这个术语在信息技术领域常常使用不当。例如,”Python Lists”,并不是字面意思(链表),实际是表示数组 (和 Ruby 中的 Array 是同一种类型)。 通常列表表示有序元素的序列:10,20,1,2,3 是一个列表。但是数组实现的列表和链表实现的列表,他们的属性非常不同。 Redis 的列表是使用链表实现的。
Redis 不是一个无格式 (plain) 的键值存储,而是一个支持各种不同类型值的数据结构服务器。这就是说,传统键值存储是关联字符串值到字符串键,但是 Redis 的值不仅仅局限于简单字符串,还可以持有更复杂的数据结构。下面列的是 Redis 支持的所有数据结构,后面将逐一介绍: 二进制安全 (binary-safe) 的字符串。
字符串 (Strings)字符串是 Redis 最基本的数据类型。Redis 字符串是二进制安全的,也就是说,一个 Redis 字符串可以包含任意类型的数据,例如一张 JPEG 图像,或者一个序列化的 Ruby 对象。 一个字符串最大为 512M 字节。 你可以使用 Redis 的字符串类型做很多有意思的事情,例如,你可以: 使用 INCR 命令族 (INCR,DECR,INCRBY),将字符串作为原子计数器。
Redis 作为一门非关系型数据库,其复制功能和关系型数据库(MySQL)来说,功能其实都是差不多,无外乎就是实现的原理不同。Redis 的复制功能也是相对于其他的内存性数据库(memcached)所具备特有的功能。Redis 复制功能主要的作用,是集群、分片功能实现的基础;同时也是 Redis 实现高可用的一种策略,例如解决单机并发问题、数据安全性等等问题。
学习 Redis 源代码之前,我们需要对 Redis 代码的整体架构有一个了解,基于redis1.0源码,我们列出了主流程相关的如下源码文件。
Redis是一个速度非常快的非关系型数据库(non-relational database),它可以存储键(key)与5种不同类型的值(value)之间的映射(mapping),可以将存储在内存的键值对数据持久化到硬盘。可以使用复制特性来扩展读性能,还可以使用客户端分片来扩展写性能。
我们关注主从复制之前,首先要考虑单机有什么问题? 机器故障 容量瓶颈 QPS瓶颈
关注时代Java