redis分布式

打不死的redis集群

柔情痞子 提交于 2019-12-03 03:26:55
最近遇到部分系统因为redis服务挂掉,导致部分服务不可用。所以希望搭建一个redis集群镜像,把原先散落各处的redis服务器统一管理起来,并且保障高可用和故障自动迁移。 一 redis集群分类 大家都知道redis集群有两种,一种是redis sentinel,高可用集群,同时只有一个master,各实例数据保持一致;一种是redis cluster,分布式集群,同时有多个master,数据分片部署在各个master上。基于我们的需求和redis本身技术的成熟度,本次要搭建的是redis sentinel。 Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务: 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。 提醒(Notification : 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。 自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时,

redis面试题

浪子不回头ぞ 提交于 2019-12-03 01:37:59
redis面试题 redis和memcached比较? redis中数据库默认是多少个db 及作用? /etc/redis/redis.conf 文件中,有个配置项 databases = 16 //默认有16个数据库 python操作redis的模块? pip3 install redis 如果redis中的某个列表中的数据量非常大,如果实现循环显示每一个值? redis如何实现主从复制?以及数据同步机制? redis中的sentinel的作用? 如何实现redis集群? redis中默认有多少个哈希槽? 简述redis的有哪几种持久化策略及比较? 列举redis支持的过期策略。 MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证 redis 中都是热点数据? 写代码,基于redis的列表实现 先进先出、后进先出队列、优先级队列。 如何基于redis实现消息队列? 如何基于redis实现发布和订阅?以及发布订阅和消息队列的区别? 什么是codis及作用? 什么是twemproxy及作用? 写代码实现redis事务操作。 redis中的watch的命令的作用? 基于redis如何实现商城商品数量计数器? 简述redis分布式锁和redlock的实现机制。 什么是一致性哈希?Python中是否有相应模块?

Redis面试题总结(1)

两盒软妹~` 提交于 2019-12-03 01:37:41
(1)什么是redis? Redis 是一个基于内存的高性能key-value 数据库 。 (有空再补充,有理解错误或不足欢迎指正) (2)Reids的特点 Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。 Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种 数据结构 ,此外单个value的最大限制是1GB,不像 memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能,比方说用他的List来做FIFO双向链表,实现一个轻量级的高性 能消息队列服务,用他的Set可以做高性能的tag系统等等。另外Redis也可以对存入的Key-Value设置expire时间,因此也可以被当作一 个功能加强版的memcached来用。 Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。 (3)Redis支持的数据类型 Redis通过Key-Value的单值不同类型来区分, 以下是支持的类型: Strings Lists

redis

戏子无情 提交于 2019-12-03 01:37:22
1、什么是Redis? Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。 Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像 memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能,比方说用他的List来做FIFO双向链表,实现一个轻量级的高性 能消息队列服务,用他的Set可以做高性能的tag系统等等。另外Redis也可以对存入的Key-Value设置expire时间,因此也可以被当作一 个功能加强版的memcached来用。 Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。 2、Redis相比memcached有哪些优势? (1) memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型 (2) redis的速度比memcached快很多 (3) redis可以持久化其数据 3、Redis支持哪几种数据类型?

Redis面试题总结

人走茶凉 提交于 2019-12-03 01:36:41
参考 https://blog.csdn.net/zdp072/article/details/50991116 https://blog.csdn.net/qq_34337272/article/details/80012284#commentBox 坑人无数的Redis面试题(未整理,写的很棒,超出了理论范围,结合实际中的问题,给出不错的解决方案) https://blog.csdn.net/u011405515/article/details/79190652 0 什么是Redis? Redis 是一个使用 C 语言写成的,开源的,基于内存的 key-value 数据库。 支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。 与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。目前,Vmware在资助着redis项目的开发和维护。 1 使用redis有哪些好处

helm部署Redis哨兵分布式集群

吃可爱长大的小学妹 提交于 2019-12-03 01:31:46
helm部署Redis哨兵分布式集群 Redis Sentinel集群 介绍 Redis Sentinel集群是由若干Sentinel节点组成的分布式集群,可以实现故障发现、故障自动转移、配置中心和客户端通知。 如下图: Redis Sentinel 故障转移过程: 从这张图中我们能看到主节点挂掉了,原先的主从复制也断开了,客户端和损坏的主节点也断开了。从节点被提升为新的主节点,其它从节点开始和新的主节点建立复制关系。客户端通过新的主节点继续进行交互。Sentinel 会持续监控已经挂掉了主节点,待它恢复后,集群会调整为下面这张图。 一、部署redis哨兵集群 官方chart地址: https://github.com/helm/charts/tree/master/stable/redis-ha 集群说明: By default this chart install 3 pods total: one pod containing a redis master and sentinel container (optional prometheus metrics exporter sidecar available) two pods each containing a redis slave and sentinel containers (optional

让你迅速了解redis

匿名 (未验证) 提交于 2019-12-03 00:44:02
(1)什么是redis? Redis 是一个基于内存的高性能key-value数据库。 (2)Reids的特点 Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。 Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像 memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能,比方说用他的List来做FIFO双向链表,实现一个轻量级的高性 能消息队列服务,用他的Set可以做高性能的tag系统等等。另外Redis也可以对存入的Key-Value设置expire时间,因此也可以被当作一 个功能加强版的memcached来用。 Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。 (3)Redis支持的数据类型 Redis通过Key-Value的单值不同类型来区分, 以下是支持的类型: Strings Lists Sets 求交集、并集 Sorted Set

Golang Redis Cache

匿名 (未验证) 提交于 2019-12-03 00:44:02
1.Redis 2.Golang Redis Pool 点击打开链接 Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有显著区别 ( 不支持的命令列表 ), 上层应用可以像使用单机的 Redis 一样使用, Codis 底层会处理请求的转发, 不停机的数据迁移等工作, 所有后边的一切事情, 对于前面的客户端来说是透明的, 可以简单的认为后边连接的是一个内存无限大的 Redis 服务。 点击打开链接 const ( redis_host string = "127.0.0.1:6379" database string = "redisServer" password string = "123456" maxOpenConns int = 10 maxIdleConns int = 10 ) var Cache *RedisConnPool type RedisConnPool struct { redisPool *redis.Pool } func init() { Cache = &RedisConnPool{} Cache.redisPool = myNewPool() if Cache.redisPool == nil { panic("init redis failed!"

Redis Sentinel 介绍与部署

匿名 (未验证) 提交于 2019-12-03 00:44:02
1. Sentinel介绍 1.1 主从复制的问题 Redis 主从复制可将主节点数据同步给从节点,从节点此时有两个作用: 一旦主节点宕机,从节点作为主节点的备份可以随时顶上来。 扩展主节点的读能力,分担主节点读压力。 但是问题来了: 一旦主节点宕机,从节点晋升成主节点,同时需要修改应用方的主节点地址,还需要命令所有从节点去复制新的主节点,整个过程需要人工干预。 主节点的写能力受到单机的限制。 主节点的存储能力受到单机的限制。 第一个问题,我们接下来讲的 Sentinel 就可以解决。而后两个问题, Redis 也给出了方案 Redis Cluster 。 1.2 Redis Sentinel的高可用 Redis Sentinel 是一个分布式架构,包含若干个 Sentinel 节点和 Redis 数据节点,每个 Sentinel 节点会对数据节点和其余 Sentinel 节点进行监控,当发现节点不可达时,会对节点做下线标识。 如果被标识的是主节点,他还会选择和其他 Sentinel 节点进行“协商”,当大多数的 Sentinel 节点都认为主节点不可达时,他们会选举出一个 Sentinel 节点来完成自动故障转移工作,同时将这个变化通知给 Redis 应用方。 整个过程完全自动,不需要人工介入,所以可以很好解决 Redis 的高可用问题。 接下来我们就通过部署一个 Redis

MyBatis 缓存之Redis简单实现

匿名 (未验证) 提交于 2019-12-03 00:44:02
MyBatis 提供的缓存机制都是基于Cache 接口而实现,因此我们也可以通过实现该接口创建自定义的缓存实现。 简单来说,在MyBatis开启二级缓存的前提下,通过使用自定义的缓存实现类,使用Redis完成对缓存信息的查询和更新。 先来看一下 maven 依赖,本文使用的是Spring boot框架,依赖信息相对简单清晰。 < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter-data-redis </ artifactId > </ dependency > < dependency > < groupId > org.mybatis.spring.boot </ groupId > < artifactId > mybatis-spring-boot-starter </ artifactId > < version > 1.3.2 </ version > </ dependency > 再来看一下具体的实现类, public class RedisCache implements Cache { private static final Logger logger = LoggerFactory.getLogger