Redis
文章平均质量分 87
Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。Redis通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(li
别团等shy哥发育
硕士在读,对分布式、中间件、容器、微服务、深度学习、机器学习与数据挖掘方面感兴趣,希望可以在这些方面和大家交流学习方法。
后续文章会搬到这里:www.codeleader.top
展开
-
分布式锁-Redisson
如果负责储存这个分布式锁的Redisson节点宕机以后,而且这个锁正好处于锁住的状态时,这个锁会出现锁死的状态。为了避免这种情况的发生,Redisson内部提供了一个监控锁的看门狗,它的作用是在Redisson实例被关闭前,不断的延长锁的有效期。随着业务发展的需要,原单体单机部署的系统被演化成分布式集群系统后,由于分布式系统多线程、多进程并且分布在不同机器上,这将使原单机部署情况下的并发控制锁策略失效,单纯的Java API并不能提供分布式锁的能力。超过这个时间后锁便自动解开了。原创 2023-04-19 00:12:41 · 1953 阅读 · 0 评论 -
docker搭建3主3从redis集群(主从容错切换、主从扩容、主从缩容)
3主3从、4主4从、主从扩容、主从缩容、主从容错切换迁移原创 2022-01-15 17:38:45 · 1165 阅读 · 0 评论 -
1亿条数据需要缓存,怎么设计存储案例?
1亿条数据需要缓存,怎么设计存储案例?1、问题描述2、三种解决方案2.1 哈希取余分区2.2 一致性哈希算法分区2.2.1 一致性Hash简介2.2.2 一致性Hash能干嘛?2.2.3 三大步骤2.2.3.1 构建一致性哈希环2.2.3.2 服务器IP节点映射2.2.3.3 key落到服务器的落键规则2.2.4 一致性哈希算法的优点2.2.5 缺点:Hash环的数据倾斜问题2.2.6 总结2.3 哈希槽分区2.3.1 哈希槽简介2.3.2 哈希槽计算1、问题描述现在有1~2亿条数据需要缓存,如何设计这原创 2022-01-14 23:08:26 · 2066 阅读 · 1 评论 -
Spring Cache+Redis缓存数据
Spring Cache+Redis缓存数据1、为什么使用缓存2、常用的缓存注解2.1 @Cacheable2.2 @CacheEvict2.3、@Cacheput2.4、@Caching2.5、@CacheConfig3、SpringBoot缓存支持4、项目继承Spring Cache+Redis4.1 添加依赖4.2 配置类4.3 添加redis配置4.4 接口中使用缓存注解4.5 缓存效果测试1、为什么使用缓存 我们知道内存的读取速度远大于硬盘的读取速度。当需要重复地获取相同数据时,一次一次地请原创 2022-01-03 00:16:18 · 1347 阅读 · 4 评论 -
Redis结合SpringBoot的秒杀案例
文章目录1、构建SpringBoot项目2、启动类3、在Controller层里定义秒杀接口4、在Service层里通过lua脚本实现秒杀效果5、配置redis连接参数6、演示秒杀效果6.1 准备redis环境6.2 启动项目6.3 多线程形式发起秒杀请求 秒杀(也叫限时秒杀),是商家在某特定时间段里大幅降低网络商品价格的一种营销活动。这里用Redis整合SpringBoot框架的方法给出一个秒杀案例1、构建SpringBoot项目搭建名为quickbuy的springboot项目,相关的依赖包如下原创 2021-09-28 23:14:00 · 754 阅读 · 5 评论 -
Redis整合lua脚本的实例分析
文章目录1、以计数模式实现限流效果2、用lua脚本防止超卖 基于Redis的lua脚本能确保Redis命令的顺序性和原子性,所以在高并发场景下会用两者整合的方法实现限流和防超卖等效果,下面给出相关范例。1、以计数模式实现限流效果 限流是指某应用模块需要限制指定IP(或指定模块、指定应用)在单位时间内的访问次数。例如,在某高并发场景里,会员查询模块对风险控制模块的限流需求是在10秒里最多允许有1000个请求。以计数模式的限流做法是,提供服务的模块会统计服务请求模块在单位时间内的访问次数,如果已经达到原创 2021-09-27 22:55:00 · 497 阅读 · 0 评论 -
Redis整合MySQL主从集群
Redis整合MySQL主从集群1、用Docker搭建MySQL主从集群1.1 拉取mysql镜像1.2 创建配置文件夹1.3 编写主服务器的配置文件信息1.4 启动mysql主服务器的容器1.5 观察主服务器状态1.6 配置mysql从服务器1.7 启动mysql从服务器1.8 确认主从关系2、准备数据2.1 创建数据库2.2 创建student数据表2.3 向student表插入几条数据3、用Java代码读写MySQL集群和Redis3.1 引入redis和mysql依赖3.2 代码整合4、MySQL主原创 2021-09-26 17:10:23 · 2957 阅读 · 12 评论 -
Redis压力测试实战
文章目录1、概述2、压测实战1、概述 Redis一般会用在高并发场景里。在实践中,一些项目组在上线高并发的系统前会先通过redis-benchmark命令对已部署好的Redis组件进行压力测试。该压力测试的命令格式如下:redis-benchmark [option] [option value] 其中,option是参数项,option value是对应的值。该命令常用的参数项如表所示。参数名含义-h该压测命令指向的服务器IP地址-p该压测命令指向的服务器的端原创 2021-09-24 16:19:37 · 2002 阅读 · 1 评论 -
用Java实现Redis限流
用Java实现Redis限流1、概述2、zset有序集合相关命令与限流3、zset有序结合与限流1、概述 限流的含义是在单位时间内确保发往某个模块的请求数量小于某个数值,比如在实现秒杀功能时,需要确保在10秒内发往支付模块的请求数量小于500个。限流的作用是防止某个段时间段内的请求数过多,造成模块因高并发而不可用。2、zset有序集合相关命令与限流 zset也叫有序集合,是Redis的一种数据类型,在其中每个值(value)都会有一个对应的score参数,以此来描述该值的权重分值。可以通过如下形原创 2021-09-24 16:02:04 · 2151 阅读 · 1 评论 -
Docker搭建Redis的cluster集群
文章目录1、简介2、哈希槽与cluster集群3、初步搭建cluster集群3.1 配置cluster集群的三个主节点3.2 配置三个从节点3.3 为各个节点创建容器3.4 使用docker inspect redisClusterMaster1等命令查看各个节点IP和端口3.5 连接各个节点3.6 分配哈希槽3.7 从节点设置3.8 主从关系设置1、简介相比于哨兵集群,cluster集群能支持扩容,且无须额外的节点来监控状态,所以使用这种模式集群的系统会用得更多些。2、哈希槽与cluster集群在原创 2021-09-21 11:05:22 · 1222 阅读 · 7 评论 -
Docker搭建Redis哨兵模式集群
Docker搭建Redis哨兵模式集群1、哨兵模式概述2、Docker搭建哨兵模式集群2.1 先按照如下链接中方法搭建一个一主二从的Redis集群,其中redis-master1是主服务器,redis-salve11和redis-salve22是从服务器。2.2 在/root/redisconf/文件夹下新建sentinel1.conf配置文件2.3 新建redis-sentinel1容器(第一个哨兵节点)2.4 查看哨兵节点信息2.5 新建redis-sentinel2容器(第二个哨兵节点)3、哨兵节点的原创 2021-09-20 22:19:33 · 1906 阅读 · 4 评论 -
Docker搭建Redis主从复制集群
Docker搭建Redis主从复制集群1、简介2、主从复制模式概述3、用命令方式搭建集群3.1 创建主服务器3.2 创建第一个从服务器3.3创建第二个从服务器3.4 查看redis-master容器信息3.5 主从复制配置3.6 通过info replication命令查看主从配置信息3.7 主从复制测试4、通过配置搭建主从集群4.1 三个配置文件4.2 启动主服务器4.3 启动两台从服务器4.4 查看主从配置信息4.5 主从复制测试1、简介 在实际项目里,一般不会简单地只在一台服务器上部署Redis原创 2021-09-20 17:16:52 · 2492 阅读 · 8 评论 -
config rewrite一直报没有权限,无法写入数据
config rewrite一直报没有权限1、问题描述2、解决方案1、问题描述使用docker挂载宿主机的redis.conf配置文件的方式启动redis容器,但是在启动之后,想给redis设置个密码,config rewrite命令一直提示没有权限容器启动命令:docker run --privileged=true -p 6379:6379 -d -v /root/redisconf:/usr/local/etc/redis --name myredis redis:6.2.3 redis-ser原创 2021-09-19 20:56:29 · 892 阅读 · 3 评论 -
docker挂载redis.conf启动redis后容器立马退出的解决方案
文章目录1、问题描述2、分析3、解决方案1、问题描述今天让docker挂载外部的redis.conf配置文件启动redis,但是启动之后容器立马退出。docker run -p 6379:6379 -d -v /root/redisconf:/usr/local/etc/redis --name myredis redis:6.2.3 redis-server /usr/local/etc/redis/redis.conf2、分析我们查询redis容器的日志docker logs 8acc8原创 2021-09-19 20:08:16 · 3212 阅读 · 0 评论 -
Redis的RDB持久化机制
文章目录1、RDB简介2、备份是如何执行的?3、Fork4、RDB持久化流程5、dump.rdb文件6、配置快照位置7、如何触发RDB快照,保持策略7.1 配置文件中默认的快照配置7.2 save和bgsave命令7.3 flushall命令7.4 RDB持久化相关配置8、RDB备份实战1、RDB简介 在基于RDB的持久化机制里会定时把Redis内存数据以快照的方式保存到硬盘上,而在必要的时候就可以通过快照文件来恢复数据。2、备份是如何执行的? Redis会单独创建(fork)一个子进程来进行持原创 2021-09-19 15:40:22 · 286 阅读 · 2 评论 -
Redis的AOF持久化机制
文章目录1、AOF是什么?2、AOF持久化流程2、AOF配置文件的说明2.1 AOF默认是不开启的2.2 AOF启动/修复/恢复2.3 AOF同步频率设置2.4 Rewrite压缩2.4.1 重写原理,如何实现重写2.4.2 重写流程3、AOF持久化实战3.1 启动redis服务并用客户端连接3.2 设置几个键值对3.3 模仿断电,我们直接shutdown关闭redis服务器3.4 再次打开redis服务器并用客户端连接3.5 测试持久化是否成功(查看断电之前的数据还在不在) Redis提供了两种持久化原创 2021-09-19 12:48:09 · 271 阅读 · 1 评论 -
Redis事务操作
Redis事务操作1、事务的概念和ACID特性2、实现Redis事务的相关命令3、通过discard命令撤销事务中的操作4、用watch命令监视指定键 事务具有ACID特性,即原子性、一致性、隔离性和持久性。用过事务,可以让一段代码要么全部执行要么全都不执行。 由于Redis是NoSQL类型的键值对数据,因此操作事务的方式和关系型数据库有差别。1、事务的概念和ACID特性 在数据库层面,事务是指一组操作,这些操作要么全都被成功执行,要么全都不执行。比如某转账的事务里包含两个操作,操作1是从Mi原创 2021-09-19 00:04:09 · 214 阅读 · 1 评论 -
Redis排序相关命令
Redis排序相关命令1、用sort命令进行排序2、用by参数指定排序模式3、用limit参数返回部分排序结果4、sort命令里get参数的用法5、通过store参数提升性能 排序是数据库必备的命令,在Redis这种NoSQL数据库里可以通过本节给出的命令对列表、集合与有序集合等格式的数据进行升序或降序的排列操作。1、用sort命令进行排序 在sort命令里,可以通过asc参数进行升序排列操作,通过desc参数进行降序排列操作。 通过lpush命令向键是salary的列表(list)里插入了原创 2021-09-17 11:29:54 · 730 阅读 · 0 评论 -
lua脚本相关命令
lua脚本相关命令1、简介2、把lua脚本装载到缓存里3、通过evalsha命令执行缓存中的脚本4、清空缓存中lua脚本的命令5、用eval命令执行lua脚本1、简介 lua是一种比较轻量的脚本语言,可以嵌入应用程序中,能以较小的代价定制功能。在Redis里,也可以通过使用lua脚本来实现特定的效果。 llua脚本是一个和Redis独立的技术,不仅能用在Redis里,还能用在其他场景中。 l我们先使用docker命令创建redis容器再进入容器内部2、把lua脚本装载到缓存里 l可以原创 2021-09-17 10:53:58 · 1840 阅读 · 0 评论 -
HyperLogLog相关命令
HyperLogLog相关命令1、用pfadd添加键值对2、用pfcount统计基数值3、用pfmerge进行合并操作4、统计网站访问总人数 先通过统计网站访问数量得场景来理解基数得概念。例如,在10分钟内,user1点击了3次某网站得页面,user2点击了4次,user3点击了2次,user4点击了5次。虽然油多次点击事件,但是访问者的基数是4,也就是说基数集合里面不包含重复的元素。 通过Redis的HyperLogLog对象能高效地统计基数。在其他统计基数地场景里,元素地数量和内存地消耗量是成正原创 2021-09-16 23:28:58 · 413 阅读 · 0 评论 -
Redis键操作命令
Redis键操作命令1、用exists命令判断键是否存在2、用Keys命令查找键3、用scan命令查找键4、重命名键5、用del命令删除键6、关于键生存时间的命令Redis是以键值对的方式来缓存数据的,这里讲解针对“键”操作的相关命令1、用exists命令判断键是否存在通过exists命令能判断指定key是否存在exists keyset name 'Peter'2、用Keys命令查找键keys命令可以用通配符或正则表达式来查找指定模式的键,格式如下:keys pattern其中,原创 2021-09-16 22:18:41 · 565 阅读 · 0 评论 -
Redis主从复制(下)
Redis主从复制[下]5.2 薪火相传:5.2.1 配置之前先查看主机的主从配置信息:5.2.2 配置6381端口的主机位6380端口:5.2.3 查看6381端口的主从配置信息:5.2.4 查看6380端口的主从配置信息:5.2.5 查看主机6379端口:5.2.6 主机(6379端口)设置值:`set k9 v9`5.2.7 从机获取值:5.3 反客为主5.3.1 假设主机挂掉:5.3.2 配置6380反客为主5.3.3 让6381的主机变为63805.3.4 6379重新启动:5.4 复制原理5.5原创 2021-05-31 22:39:50 · 709 阅读 · 0 评论 -
Redis主从复制(上)
Redis主从复制1、Redis主从复制:2、Redis主从复制能干什么?3、相关操作命令3.1 SLAVEOF host port3.2 ROLE3.3 info replication4、读写分离实例4.1、配从库不配主库4.2、从库配置:4.3 修改配置文件细节操作4.3.1 拷贝多个redis.conf文件4.3.2 开启daemonize yes4.3.3 修改pid文件名字4.3.4 指定端口4.3.5 设置Log文件名字4.3.6 修改Dump.rdb文件名字5、主从复制5.1 一主二仆5.1原创 2021-05-31 20:24:34 · 169 阅读 · 0 评论 -
Redis的发布订阅
Redis的发布订阅1、什么是Redis的发布与订阅?2、相关命令2.1 PUBLISH channel message2.2 SUBSCRIBE channel [channel …]2.3 PSUBSCRIBE pattern [pattern …]2.4 UNSUBSCRIBE [channel [channel …]]2.5 PUNSUBSCRIBE [pattern [pattern …]]2.6 PUBSUB [argument [argument …]]3、案例实操1、什么是Redis的发原创 2021-05-29 21:50:59 · 155 阅读 · 0 评论 -
Redis的事务
Redis的事务一、事务相关命令1.1 MULTI1.2 EXEC1.3 DISCARD1.4 WATCH key [key …]1.5 UNWATCH1.6 什么是Redis的事务?1.7 Redis的事务能干什么?二、实操1、正常放行2、放弃事务3、全体连坐4、冤头债主5、watch监控1、悲观锁和乐观锁的概念:2、无加塞篡改,先监控再开启MULTI,保证两笔金额变动在同一个事务内3、有加塞篡改4、UNWATCH5、watch总结三、总结3.1 Redis事务的三个阶段3.2 Redis事务的三个特性原创 2021-05-29 21:19:12 · 159 阅读 · 0 评论 -
Redis五大数据类型之Zset(有序集合)命令操作
Redis五大数据类型之Zset有序集合命令操作一、常用命令1.1 ZADD key score member [[score member] [score member] …]1.2 ZSCORE key member1.3 ZINCRBY key increment member1.4 ZCARD key1.5 ZCOUNT key min max1.6 ZRANGE key start stop [WITHSCORES]一、常用命令1.1 ZADD key score member [[score原创 2021-05-29 12:15:52 · 659 阅读 · 0 评论 -
Redis五大数据类型之Hash操作命令
Redis五大数据类型之Hash操作命令一、常用命令1.1 HSET hash field value1.2 HSETNX hash field value1.3 HGET hash field1.4 HEXISTS hash field1.5 HDEL key field [field …]1.6 HLEN key1.7 HSTRLEN key field1.8 HINCRBY key field increment1.9 HINCRBYFLOAT key field increment1.10 HMSE原创 2021-05-28 21:48:03 · 460 阅读 · 0 评论 -
Redis五大数据类型之Set(集合)操作命令
Redis五大数据类型之Set操作命令一、常用命令1.1 SADD key member [member …]1.2 SISMEMBER key member1.3 SPOP key1.4 SRANDMEMBER key [count]1.5 SREM key member [member …]1.6 SMOVE source destination member1.7 SCARD key1.8 SMEMBERS key1.9 SSCAN key cursor [MATCH pattern] [COUNT原创 2021-05-28 21:22:25 · 539 阅读 · 0 评论 -
Redis五大数据类型之List操作命令
Redis五大数据类型List操作命令一、常用命令1.1、BLPOP key1[key2] timeout1.2、BPROP key1[key2] timeout1.3、BRPOPLPUSH source destination timeout1.4、LINDEX key index1.5、LINSERT key BEFORE|AFTER pivot value1.6、LLEN key1.7、LPOP key1.8、LPUSH key value1 [value2]1.9、LPUSHX key value1原创 2021-05-28 21:06:53 · 828 阅读 · 1 评论 -
Redis五大数据类型之String(字符串)命令
Redis五大数据类型之String操作命令1、先查看是否有活动的redis进程2、启动redis客户端:3、查看数据库所有数据4、`SET key value [EX seconds] [PX milliseconds] [NX|XX]`5、`GET key`6、`del key`7、`APPEND key value`8、INCR key9、`decrby key decrement`10、`GETRANGE key start end`11、`SETRANGE key offset value`12、原创 2021-05-28 20:29:29 · 383 阅读 · 0 评论 -
Spring Boot整合Redis
Spring Boot整合Redis一、整合Redis1、Spring Data Redise2、Serializer3、Spring Boot的支持二、使用StringRedisTemplate和RedisTemplate1、创建基于spring-boot-starter-data-redis依赖的Spring Boot Web应用ch6_92、配置application.properties文件3、创建实体类4、创建数据访问层5、创建控制器层6、修改配置类Ch69Application7、运行测试一、原创 2021-04-01 15:12:50 · 680 阅读 · 1 评论 -
Redis安装(Windows环境)
文章目录一、Resid简介:二、下载Redis三、启动Redis服务四、设置Windows服务五、常用的Redis服务命令六、cmd启动服务:七、操作测试Redis一、Resid简介:Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。Redis通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)原创 2021-04-01 14:35:50 · 4734 阅读 · 0 评论