redis
仰望星空@脚踏实地
不积跬步 无以至千里!天天向上。
展开
-
CentOS7 安装redis6
1、环境检查 yum -y install gcc yum -y install epel-release # 查看gcc版本是否在5.3以上,centos7.6默认安装4.8.5 gcc -v # 升级gcc到5.3及以上,如下:升级到gcc 9.3: yum -y install centos-release-scl yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils scl enable原创 2021-02-25 00:49:28 · 323 阅读 · 0 评论 -
SpringBoot 不同源Redis切换链接Host
最近在做一个项目,redis 多节点部署。系统运行期间需要将Redis链接进行动态切换。 环境要求,至少2个Redis实例,我们测试验证采用不同Host之间切换。 SpringBoot POM <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <原创 2021-02-09 16:43:12 · 765 阅读 · 0 评论 -
SpringBoot Redis 实现消息发布与订阅
1、POM 引入 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.4.RELEASE</version> <relativePath/> <!-- lookup pare原创 2021-02-01 17:14:13 · 191 阅读 · 0 评论 -
Redis底层原理 (Redis实现分布式锁)(八)
业务场景 防止用户重复下单 MQ消息去重 订单操作变更 库存超卖 分析: 业务场景共性: 共享资源:用户id、订单id、商品id。。。解决方案 共享资源互斥 共享资源串行化 问题转化 锁的问题 (将需求抽象后得到问题的本质) 锁应用 单应用中使用锁:(单进程多线程)synchronized、ReentrantLock 分布式应用中使用锁:(多进程...原创 2019-12-06 01:30:52 · 630 阅读 · 0 评论 -
Redis底层原理 (Redis集群架构演进)知识准备(七)
Replication+Sentinel 这套架构使用的是社区版本推出的原生高可用解决方案,其架构图如下! 这里Sentinel的作用有三个: 监控:Sentinel 会不断的检查主服务器和从服务器是否正常运行。 通知:当被监控的某个Redis服务器出现问题,Sentinel通过API脚本向管理员或者其他的应用程序发送通知。 自动故障转移:当主节点不能正常工作时,...转载 2019-12-04 00:59:18 · 151 阅读 · 0 评论 -
Redis底层原理 (持久化以及集群)集群工作原理(六)
两个redis节点之间进行通信的时候,需要在客户端执行下面一个命令 127.0.0.1:7000>cluster meet 127.0.0.1:7001 如下图所示 意思很简单,让7000节点和7001节点知道彼此存在! 在握手成功后,两个节点之间会定期发送ping/pong消息,交换数据信息,如下图所示。 在这里,我们需要关注三个重点。 (1)交换什么数据信...转载 2019-12-04 00:55:24 · 119 阅读 · 0 评论 -
Redis底层原理 (持久化以及集群)知识准备(五)
fork(函数)以及Redis集群槽点 fork函数介绍 fork系统调用用于创建一个新进程,称为子进程,它与进程(称为系统调用fork的进程)同时运行,此进程称为父进程。创建新的子进程后,两个进程将执行fork()系统调用之后的下一条指令。子进程使用相同的pc(程序计数器),相同的CPU寄存器,在父进程中使用的相同打开文件。 它不需要参数并返回一个整数值。下面是fork()返回的不同值。 ...原创 2019-12-04 00:51:22 · 141 阅读 · 0 评论 -
Redis底层原理 (Redis事务、Redis乐观锁)(四)
Redis事务介绍 Redis 的事务是通过 MULTI 、 EXEC 、 DISCARD 和 WATCH 这四个命令来完成的。 Redis 的单个命令都是原子性的,所以这里需要确保事务性的对象是命令集合。 Redis 将命令集合序列化并确保处于同一事务的命令集合连续且不被打断的执行。 Redis 不支持回滚操作。 在一个事物中,处理命令集不会被干扰。Redis是单进程单线程,所以不会出现线程并...原创 2019-12-02 00:23:16 · 259 阅读 · 0 评论 -
Redis底层原理 (Redis LRU算法)(三)
LRU缓存淘汰算法 LRU是(Least Recently Used)最近最少使用策略的缩写,是根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。 LRU 算法的核心数据结构就是哈希链表,双向链表和哈希表的结合体。其设计思想:就是借助哈希表赋予了链表快速查找的特性,可以快速查找某个 key 是否存在缓存(链表)中,同时可以快速删除、添加节点...原创 2019-12-03 01:57:46 · 601 阅读 · 0 评论 -
Redis底层原理 (缓存淘汰策略)(二)
缓存淘汰策略 目标: 掌握Redis数据类型的底层数据结构 理解LRU 能够编写Redis事务处理,理解弱事务 理解Redis乐观锁及秒杀的实现 最大缓存 在 redis 中,允许用户设置最大使用内存大小maxmemory,默认为0,没有指定最大缓存,如果有新的数据添加,超过最大内存,则会使redis崩溃,所以一定要设置。redis 内存数据集大小上升到一定大小的...原创 2019-12-01 03:16:19 · 316 阅读 · 0 评论 -
Redis底层原理 (Redis底层数据结构)(一)
Redis底层数据结构 目标: 掌握Redis数据类型的底层数据结构 理解LRU 能够编写Redis事务处理,理解弱事务 理解Redis乐观锁及秒杀的实现 Redis内存模型 Redis内存统计 127.0.0.1:6379># Memoryinfo memory #Redis分配的内存总量,包括虚拟内存(字节) used_memory:85...原创 2019-12-01 02:39:38 · 560 阅读 · 0 评论 -
SpringBoot2.0学习笔记:Spring Boot中集成Redis
一、关于Lettuce 在SpringBoot2.0.x版本中集成Redis,Lettuce现已取代Jedis作为Redis驱动。那Lettuce又是个什么呢?与Jedis又有何区别呢? Lettuce 是一个可伸缩的线程安全的 Redis 客户端,支持同步、异步和响应式模式。多个线程可以共享一个连接实例,而不必担心多线程并发问题。它基于优秀 Netty NIO 框架构建,支持 Redis 的...原创 2019-11-30 01:21:18 · 165 阅读 · 0 评论 -
Redis数据类型
Redis常用命令 切换到root用户 su - root 切换目录到redis设置目录: cd /wang/server/redis/bin redis启动命令:redis-server 新命令窗口执行命令连接到redis服务。redis-cli Redis 中存储数据是通过key-value 格式存储数据的,其中v...原创 2019-11-26 00:01:22 · 153 阅读 · 0 评论 -
Redis Java客户端Jedis
Jedis介绍 Redis不仅使用命令来操作,而且可以使用程序客户端操作。现在基本上主流的语言都有客户端支持,比如java、C、C#、C++、php、Node.js、Go等。 在官方网站里列一些Java的客户端,有Jedis、Redisson、Jredis、JDBC-Redis、等其中官方推荐使用Jedis和Redisson。 在企业中用的最多的就是Jedis,下面我们就...原创 2019-11-25 01:59:03 · 179 阅读 · 0 评论 -
Redis学习
什么是Redis? Redis 是用C语言开发的一个开源的高性能键值对( key-value )内存数据库,它是一种NoSQL 数据库。 它是【单进程单线程】的内存数据库,所以说不存在线程安全问题。 它可以支持并发 10W QPS,所以说性能非常优秀。之所以单进程单线程性能还这么好,是因为底层采用了【IO多路复用(NIO思想)】 相比Memcache这种专业缓存技术,它有更优秀的读写...原创 2019-11-25 01:14:39 · 147 阅读 · 0 评论