今天我们先下载windows的redis,再搭建主从复制(一主二从),最后搭建监控redis的哨兵(三个,这里为什么要3个,后面会解释的,所以啊,咱不急,慢慢来,毕竟这是块大骨头)。 1.下载windows的redis 因为redis官方并不支持redis,所以我们先去GitHub下载,https://github.com/MSOpenTech/redis/releases? after=win-2.8.2101 2.搭建主从复制(一主二从) 将redis.windows.conf重命名为redis6379.conf,然后在复制两个分别为redis6380.conf,redis6381 可参考:http://weizijun.cn/2015/04/30/Raft%E5%8D%8F%E8%AE%AE%E5%AE%9E%E6%88%98%E4%B9%8BRedis%20Sentinel%E7% 9A%84%E9%80%89%E4%B8%BELeader%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90/ 2.新的主服务器怎么选?
dis_k=bdac5ba0c9ea8d4f2f7aeb4ed0bc8fbe&dis_t=1677549687&play_scene=10400&vid=wxv_2815394943371558915& 很多的开发者,还对Redis认识停留在5.x的版本或者6.x的版本,对Redis7.0还缺乏较少的认识。本系列教程,将带领大家完整的学习Redis7.0相关的知识点。 从最开始只支持列表的数据库,到现在支持多种数据类型,并且提供了一系列的高级特性,Redis 已经成为一个在全世界被广泛使用的开源项目。 Redis提供了两种集合数据类型(set sortset),可以用在积分排行、好友推荐等场景。 7、 就近推荐。Redis中是提供了一种 GEO 的数据类型来进行位运算。 bits=64 build=34dee89a8e7e24d2 启动服务 启动服务时,我们可以指定配置文件,也可以不指定配置文件。
然而,Redis的持久化、异步删除和集群同步等功能实际上是由其他线程完成的。因此,将Redis称为单线程,更多是一种简化的说法,它实际上是一种高效的多线程设计。 Redis为何选择单线程? 深入探索多路复用 多路复用技术是Redis的另一个超能力。它允许Redis在单线程中同时监听多个套接字,当数据到达时,内核会触发事件并将其放入队列,Redis线程随后处理这些事件。 Redis 6.0 多线程模型的改进 Redis 6.0引入了多线程模型,这是相对于之前版本的一个重要改进。 快照生成的命令与策略 Redis提供了两种生成RDB文件的命令: SAVE:在主线程中执行,会阻塞Redis服务,等待快照完成。这种命令在生产环境中很少使用,因为它会显著影响Redis的性能。 Redis的扩展性保证 Redis的扩展性主要体现在以下几个方面: 集群模式:Redis集群通过数据分片,将数据分散存储在多个节点上,每个节点负责处理一部分数据。
Redis使用单线程模型,不仅使Redis服务端处理模型变得简单,也使客户端开发变得简单。 Redis不需要依赖操作系统中的库,Redis自己实现了事件处理的相关功能。 主从复制 Redis 提供了复制功能,实现了多个相同数据的Redis副本(Replica)复制功能是分布式Redis的基础。 高可用和分布式 Redis 提供了⾼可⽤实现的Redis哨兵(Redis Sentinel),能够保证Redis结点的故障发现和故障⾃动转移。 键空间通知的增强 SCAN系列命令:提供了基于游标的迭代器,可以安全的遍历数据库中的键,替代了会阻塞服务的 KEYS 命令。 Redis 3.2(2016) 核心特性: GEO地理空间索引:新增一系列GEO命令,可以存储和查询地理位置信息,支持计算距离、范围内搜索。
无论是使用单线程模型还是多线程模型,都是为了更好地提升Redis的开发效率和运行性能。 哪怕我们在一个普通的 Linux 服务器上启动 Redis 服务,它也能在 1s 的时间内处理 1000000 个用户请求。 如果这种吞吐量不能满足我们的需求,更推荐的做法是使用分片的方式将不同的请求交给不同的 Redis 服务器来处理,而不是在同一个 Redis 服务中引入大量的多线程操作。 Redis 选择选择单线程模型处理客户端的请求主要还是因为CPU不是Redis服务器的瓶颈,所以使用多线程模型带来的性能提升并不能抵消它带来的开发成本和维护成本,系统的性能瓶颈也主要在网络I/O操作上; 而 Redis 引入多线程操作也是出于性能上的考虑,对于一些大键值对的删除操作,通过多线程非阻塞地释放内存空间也能减少对 Redis 主线程阻塞的时间,提高执行的效率。
写在配置文件中上面一种方法会在当前运行状态中生效,一旦重启,将不再同步,要想在重启后依然有效,只用在配置文件中加下面一行[root@m2 tmp]# grep slaveof redis.conf # Use slaveof to make a Redis instance a copy ofslaveof m1 6379[root@m2 tmp]# ----Slave的只读特性可能是出于安全方面的考 ,从 Redis 2.6 开始, 从服务器支持只读模式, 并且该模式为从服务器的默认模式。 只读特性[root@m2 tmp]# redis-cli 127.0.0.1:6379> KEYS * (empty list or set)127.0.0.1:6379> SLAVEOF m1 6379OK
一:Redis的常见数据类型有哪些 Redis 是典型的 “ 键值型 ” 数据库,不同数据类型其 key 结构一致, value 有所差异。 String 类型是 Redis 中最常见的数据类型, value 与 key 一样都是 Redis 自定义的 字符串结构,称为 SDS 。 数据类型Sorted Set使用了跳表作为其中一种数据结构 三:Redis的持久化策略有哪些 在 Redis 中提供了两种数据持久化的方式: 1 、 RDB 2 、 AOF RDB 八:Redis分布式锁如何实现 Redis 实现分布式锁主要利用 Redis 的 setnx 命令。 九:Redis的数据过期策略有哪些 数据删除策略: Redis 中可以对数据设置数据的有效时间,数据的有效时间到了以后,就需要将数据从内存中删除掉。
; Redis是内存数据库,因此它有足够好的读写性能; Redis支持持久化,redis支持AOF和RDB两种持久化方式,确保了内存中的数据不会“丢失”; Redis的sentinel和复制功能保证了Redis 的高可用; Redis支持key维度的数据过期; Redis支持发布订阅、“事务”、pipeline、Lua脚本等附加功能。 使用场景 Redis 适合做什么 缓存,Redis本身是内存数据库,注定有极高的读写速度和吞吐,加上数据过期功能以及完善的数据淘汰策略使得Redis拥有与生俱来的缓存潜质。 Redis 不适合做什么 每种产品都有自己的特定的应用领域。Redis也不是万能的。 Redis是内存数据库,相比磁盘类型的数据库成本要高不少,注定了Redis不能用于存储大规模的数据(土豪忽略)。 深探入微 作为最佳实践本章将会把主要的关注点放和在Redis用户相关的一些Redis基本知识,这部分知识是Redis用户需要了解并在实际使用Redis过程中要考虑的。
一、 本章我们将用简短的几句话来帮助你快速的了解什么是redis,初学者不必深究 1 Redis简介 Remote Dictionary Server(Redis)是一个开源的使用ANSI C语言编写、 、key-value数据库,并提供多种语言的API 它通常被称为数据结构服务器,因为值value可以是字符串String,哈希Map,列表list,集合set和有序集合sorted set等类型 2 Redis 3.支持通过Replication 进行数据复制,通过master-slave 机制,可以实时进行数据同步复制,支持多级复制和增量复制,master-slave机制是Redis进行HA(Hight Availability 4.单进程请求,所有命令串行执行,并下发情况下不需要考虑数据一致性问题 5 Redis读写的速度非常的快
目录 一、前言 二、Java使用Redis 三、总结 四、历史文章指路 一、前言 上文【Redis系列】一文带你入门Redis 介绍如何搭建Redis环境,并对Redis做了基本介绍,这篇则介绍通过Java 使用Redis,首先引入Redis依赖,主要方法有:连接Redis,插入Redis,查询Redis,删除Redis,批量查询Redis。 二、Java使用Redis <! -- Redis依赖 --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> = null) { jedis.auth("root"); //如redis没有设置密码, 则无需添加此行 System.out.println("连接Redis成功"
服务端 redis-client redis 客户端 redis-check-aof 和 redis-check-rdb redis 的持久化工具 redis-benchmark redis 的检测工具 执行make && make install 4、设置后台启动 修改目录下的 redis.conf 5、启动 redis-server,并启动 redis-cli 连接服务端 root@iZuf66y3tuzn4wp3h02t7pZ :/# redis-server /usr/local/redis/redis-6.2.5/redis.conf root@iZuf66y3tuzn4wp3h02t7pZ:/# redis-cli -p 127.0.0.1:6379> hgetall config 1) "name" 2) "xiaomotong" 3) "age" 4) "18" nice ,安装 ok ,并且设置值也是 ok 的 7、 > not connected> root@iZuf66y3tuzn4wp3h02t7pZ:/# ps aux |grep redis root 15903 0.0 0.0 14436
3);-> 2016-01-03 EXTRACT(type FROM d) 基于给定参数年份 year 和所在年中的天数序号day-of-year 返回一个日期 SELECT YEAR("2015-7- 8");-> 2015 EXTRACT(type FROM d) 返回年份 SELECT MONTH('2071-7-15 11:11:11')->11 MONTH(d) 返回日期d中的月份值,1 到 2:3')-> 2 MINUTE(t) 返回 t 中的分钟值 SELECT SECOND('1:2:3')-> 3 SECOND(t) 返回 t 中的秒钟值 SELECT QUARTER('2021-7- -> 2016-01-03 EXTRACT(type FROM d) 基于给定参数年份 year 和所在年中的天数序号 day-of-year 返回一个日期 SELECT YEAR("2015-7- 8");-> 2015 EXTRACT(type FROM d) 返回年份 SELECT MONTH('2071-7-15 11:11:11')->11 MONTH(d) 返回日期d中的月份值,
slowlog-max-len 慢查询日志最多存储多少条,redis 使用一个列表来存储慢查询日志,slowlog-max-len 就是列表最大长度 slowlog-log-slower-than
官网:http://redis.io/ 推荐一个开源组件:StackExchange.Redis https://github.com/StackExchange/StackExchange.Redis 主要类是 StackExchange.Redis.ConnectionMultiplexer,它隐藏了多个Redis服务器的细节,它设计用于在多个调用方共享和复用,也就是说不要在每个调用都创建新的。 三种典型使用场景 访问 Redis Database IDatabase db = redis.GetDatabase(); 这个对象is a cheap object,不要保存,每次使用直接创建即可。 获取了Database对象之后,就可以使用Redis API. Using Redis Pub/Sub ISubscriber sub = redis.GetSubscriber(); 同样这个对象is a cheap object,不用保存。
1 简介 Redis 集群是Redis 的一个分布式实现,它是一个网状结构,每个节点都通过 TCP 连接跟其他每个节点连接。现在来看看Redis集群实现了哪些目标? 那么Redis集群环境与非分布式Redis环境在功能上有没有什么不同的呢? 3.4 使用集群命令行工具redis-trib 我们已经有九个正在运行中的 Redis 实例 ,接下来需要使用这些实例来创建集群 。 Redis中提供集群命令行工具 redis-trib 来简化集群操作 在执行redis-trib.rb文件之前需要安装ruby环境,嫌麻烦可以直接运行下面命令 yum install centos-release-scl-rh Redis官网:https://redis.io Redis中文网:http://www.redis.cn 本篇的集群配置文件:https://github.com/rainbowda/learnWay
Redis服务器初始化没什么较大的区别。 */ } sentinel; 启动哨兵出现的日志如下 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo # Redis version=4.9.103, bits (与主服务器客观下线时间进行比较) 新的主服务器只选择通过上面的测试,并在上面的标准基础上排序: Slave通过Redis实例的redis.conf文件配置的slave-priority排序。 learnSentinelMaster 192.168.17.102 26379 5b1099513713310eba94e69513dba76cf0ac2222 sentinel current-epoch 2 7 down-after-milliseconds mymaster 30000 # 指定了在执行故障转移时,最多可以有多少个从Redis实例在同步新的主实例,在从Redis实例较多的情况下这个数字越小
在 Redis 系列(九)底层数据结构之五种基础数据类型的实现中其实就提到了,那么应该在此之前先介绍它吗? 结论:想那么多屁事,写就完事了。 它可以是以下任意一种: REDIS_ENCODING_INT long 类型的整数 REDIS_ENCODING_ENBSTR embstr 编码的简单动态字符串(不知道的可以去看上一篇文章) REDIS_ENCODING_RAW 简单动态字符串 REDIS_ENCODING_HT 字典 REDIS_ENCODING_LINKEDLIST 双端链表 REDIS_ENCODING_ZIPLIST 压缩列表 REDIS_ENCODING_INTSET 敬请查看 Redis 系列(九)底层数据结构之五种基础数据类型的实现 类型检查与命令多态 如果读者熟悉 Redis 的命令的话(不熟没关系,看下一篇文章), 就会发现,Redis 的命令设计维度不是单一的 Redis 不是最缺内存了吗? 是的,这样子当然是省内存,但是** Redis 是一个高性能的内存数据库**. 性能这一块,Redis 卡的死死的。
背景介绍 以下摘自:Redis 官网。 各种语言都提供了 Redis 的客户端,比如 Java 的Jedis和 python 的redis-py. 同时 Redis 也提供交互式的客户端,在 mac 上执行: brew install redis进行安装,安装完成后执行: redis-cli 进入交互式的客户端,即可开始使用。 MONITOR: 可以监控 redis 服务器,看他处理的每个请求。可以在 redis 客户端中执行monitor, 也可以直接在 shell 种执行:redis-cli monitor. monitor: 监视器,可以监视某个 redis 接受的所有命令。redis-cli monitor. 直接在命令行中执行。
安装 Redis 有关于 Redis 的下载地址 https://redis.io/download step3: 下载 Redis 的安装包 # 进入到用户软件安装目录,在此目录下安装 redis # 将下载好的压缩包进行解压 tar -zxf redis-6.0.8.tar.gz step4: 编译与安装 Redis # 进入解压后的 Redis 目录 cd redis-6.0.8/ # 启动 Redis 服务器 # 进入Redis 的安装目录 cd /usr/local/redis-6.0.8/src/ # 启动 Redis 服务器 . /redis-server Redis 服务器的其他几种启动方式 # 使用指定路劲下的配置文件启动 Redis 服务器 . /redis-server /path/to/redis.conf # 指定端口启动 Redis .
首发博客地址 https://blog.zysicyj.top/ 系列文章地址[1] ---- 如果 Redis 内存很大怎么办? Redis 分片集群是一种将 Redis 数据库分散到多个节点上的方式,以提供更高的性能和可伸缩性。 以下是一个使用 Python 的 redis-py 库处理 MOVED 重定向错误的示例: import redis # 创建Redis集群连接 cluster = redis.RedisCluster 以下是一个使用 Python 的 redis-py 库处理 ASK 命令的示例: import redis # 创建Redis集群连接 cluster = redis.RedisCluster(host 参考资料 [1] 系列文章地址: https://blog.zysicyj.top/categories/技术文章/后端技术/系列文章/Redis/ 本文由 mdnice 多平台发布