Go 语言下基于Redis分布式锁的实现方式
分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细介绍...[2021/6/28]
Redis 面霸篇:高频问题横扫核心知识点
「码哥字节」从高频面试问题跟大家一起横扫 Redis 核心知识点,从根本上理解 Redis ,不做八股文的工具人,做扭转乾坤的大神。
码哥到如今已经写了 9 篇 Redis 连载,后台有小伙伴也让我写一些关于面试的文章,于是“面霸”系列便出道了。
如果大家用心读完《Redis 系列》并理解,...[2021/6/28]
springboot拦截器无法注入redisTemplate的解决方法springboot拦截器无法注入redisTemplate的解决方法
在工作中我们经常需要做登录拦截验证或者其他拦截认证功能,基于springboot项目下我们很容易想到结合redis做的分布式拦截,把用户登录或者需要验证的信息放到redis里面。但是在写拦截器的时候发现redisTemplate一直无法注入进来,最后查资料才发现springboot拦截器是在Bea...[2021/6/28]
Redis最佳实践
缓存数据库在现代系统架构中越来越成为标准配置之一,特别是随着微服务架构的流行,微服务无状态改造要求状态外置,外置的状态就需要存储到外部缓存服务中。Redis是当前主流的缓存数据库实现,本文介绍Redis基本概念与最佳实践。
架构与概念
Redis是一个使用ANSI C编写的开源、支持网络、基于...[2021/6/21]
解析Redis Cluster原理
目录一、前言二、为什么需要Redis Cluster三、Redis Cluster是什么四、节点负载均衡五、什么是一致性哈希六、虚拟节点机制七、Redis Cluster采用的什么算法八、Redis Cluster如何做到高可用8.1、集群如何进行扩容8.2、高可用及故障转移九、简单了解go ip协...[2021/6/21]
Redis集群搭建
Redis的使用模式主要分为单机和集群,而集群又分为三种模式,分别是主从模式、Sentinel模式、Cluster模式,本文记录下三种搭建集群的方式,方便以后回顾。
由于搞不到那么多服务器,本文搭建集群使用一个主机,不同端口运行不同实例来模拟多个服务器。
一、主从模式:
主从模式是最基本的...[2021/6/15]
Windows中Redis安装配置流程并实现远程访问功能
一、实现目标
1.1、在Windows中安装Redis-5.0.10
1.2、配置Redis实现远程访问
二、Windows上安装Redis流程
2.1、准备内容
①Redis下载地址:https: github.com/tporadowski/redi release...[2021/6/7]
详解Redis集群搭建的三种方式
一、单节点实例
单节点实例还是比较简单的,平时做个测试,写个小程序如果需要用到缓存的话,启动一个
Redis 还是很轻松的,做为一个 key/value 数据库也是可以胜任的
二、主从模式(master laver)
redis 主从模式配置
主从模式:
redis 的主从模式...[2021/5/31]
Redis数据结构
一、String
string的应用场景
分布式锁
布隆过滤器
缓存
自增、自减:统计计数
分布式主键ID生成:incrby orderId 10000 一次获取批量的ID ,批量获取减少与Redis交互的频率。
se ion共享
二、hash类型
hash的特点:
hash...[2021/5/24]
Govern Service 基于 Redis 的服务治理平台安装过程详解
Govern Service 基于 Redis 的服务治理平台(服务注册/发现 & 配置中心)
Govern Service 是一个轻量级、低成本的服务注册、服务发现、 配置服务 SDK,通过使用现有基础设施中的 Redis (相信你已经部署了Redis),不用给运维部署带来额外的成本...[2021/5/17]
RedisTemplate常用方法封装
RedisTemplate常用方法封装
序列化和配置
package com.gitee.ccsert.mall.common.redis.config;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fa...[2021/5/17]
Redis 集群伸缩原理
Redis 节点分别维护自己负责的槽和对应的数据。伸缩原理:Redis 槽和对应数据在不同节点之间移动
环境:CentOS7 搭建 Redis 集群
一、集群扩容
1. 手动扩容
(1) 准备节点 9007,并加入集群
192.168.11.40:9001> cluster meet ...[2021/5/17]
Redis 的持久化
原文链接: https: www.changxuan.top/?p=1386
Redis 是一个非关系型的内存数据库,使用内存存储数据是它能够进行快速存取数据的原因之一。
在实际应用中,常有人提倡把 Redis 只作为一种能够提高用户体验的组件来使用, 也就是说即...[2021/5/10]
c#基于Redis实现轻量级消息组件的步骤
最近在开发一个轻量级ASP.NET MVC开发框架,需要加入日志记录,邮件发送,短信发送等功能,为了保持模块的独立性,所以需要通过消息通信的方式进行处理,为了保持框架在部署,使用,二次开发过程中的简易便捷性,所以没有选择传统的MQ,而是基于Redis的订阅发布实现一个系统内部消息组件,话不多说,上...[2021/5/7]
Docker下安装Redis
1:使用docker获取Redis镜像
docker pull redis(此处不加版本号表示拉取最新版本)
2:查看是否成功拉取Redis镜像
docker images
3:准本修改Redis配置文件
Redis配置下载
基本参...[2021/5/6]
Redis入门 - 数据类型:Stream详解
Redis5.0 中还增加了一个数据类型Stream,它借鉴了Kafka的设计,是一个新的强大的支持多播的可持久化的消息队列。@pdai
Redis入门 - 数据类型:Stream详解
为什么会设计Stream
Stream详解
Stream的结构
增删改查
独立消费
消费组消费
信息...[2021/4/19]
Redis
一、了解
1、Nosql概述(同sql的区别)
1、存储方式
SQL数据存在特定结构的表中;而NoSQL则更加灵活和可扩展,存储方式可以省是JSON文档、哈希表或者其他方式。
2、表/数据集合的数据的关系
SQL中,必须定义好表和字段结构后才能添加数据,例如定义表的主键(primary k...[2021/4/19]
Redis遍历所有key的两个命令(KEYS 和 SCAN)
当我们需要遍历Redis所有key或者指定模式的key时,首先想到的是KEYS命令:
KEYS pattern
官网对于KEYS命令有一个提示: KEYS 的速度非常快,例如,Redis在一个有1百万个key的数据库里面执行一次查询需要的时间是40毫秒 。但在一个大...[2021/4/12]
redis配置文件中常用配置详解
此次安装的版本为: 5.0.3
[root@localhost local]# redis-server --version
Redis server v=5.0.3 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=afabdec...[2021/4/12]
浅谈redis五大数据结构和使用场景浅谈redis五大数据结构和使用场景
老规矩,先抛结论后验证
string:有点像java的hashMap,存的时候什么key,取的时候也什么key,常用于做缓存,保存用户信息、查询列表等;
hash:这个有点像hashMap的value又套了个hashMap,下文有举例,一看就明白了;
list:有序列表,类似J...[2021/4/12]
Redis如何一键部署脚本
先将安装包拖入/opt目录
注意:这里的脚本bind修改后为 0.0.0.0
bind修改后为bind 127.0.0.1 +服务器IP在下面
#!/bin/bash
#yum源
echo -e "\033[31m =====正在验证当前为仅主机还是NAT模式====...[2021/4/12]
Redis入门到放弃系列-redis cluster集群原理 - IT码农-三叔
Redis Cluster
Redis Cluster是redis的分布式解决方案,在redis 3.0版本推出后有效的解决了reids分布式方面的需求。Redis Cluster的主要特性有:
数据进行分片,在每个master上保存一部分数据
内置高可用支持,部分master不可用时,仍可提...[2021/4/12]
【数据库】Redis(3)--Redis事务、Jedis、SpringBoot整合Redis
1.Redis事务
Redis事务本质是一组命令的集合。执行时,一个事务中所有的命令都会被序列化,在事务执行,会按照顺序执行、一次性、排他性执行所有的命令。
Redis事务没有隔离级别的概念。所有的事务中,并没有直接被执行,只有发起执行命令时才会被执行。执行命令Exec。
Redis执行单挑...[2021/4/6]
【数据库】Redis(4)--Redis进阶Redis配置与持久化
1.Redis.conf配置文件说明
Redis的配置文件涉及Redis启动运行的一些重要参数,也是Redis哨兵和Redis集群配置相关依赖的重要文件。熟悉redis.config文件的配置是非常有必要的。
下面来简单说明一下redis.conf中的主要配置:
①include:包含
类...[2021/4/6]
Redis常见面试题Redis常见面试题
1.什么是redis
Redis 是一个基于内存的高性能key-value数据库。整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB...[2021/4/6]
详解Redis 分布式锁遇到的序列化问题
场景描述
最近使用 Redis 遇到了一个类似分布式锁的场景,跟 Redis 实现分布式锁类比一下,就是释放锁失败,也就是缓存删不掉。又踩了一个 Redis 的坑……
这是什么个情况、又是怎样排查的呢?
本文主要对此做个复盘。
问题排查
既然是释放锁有问题,那就先看看释放锁...[2021/3/29]
使用Redis+SpringBoot实现定时任务测试 - Tom-shushu
Redis实现定时任务是基于对RedisKey值的监控
具体代码实现:
代码GitHub地址:https: github.com/Tom-shushu/Project
建一个SpringBoot项目
引入依赖
<?xml version="1.0" encoding="UTF-...[2021/3/29]
【数据库】Redis(2)--Redis的常用数据类型及命令
1.Redis主要数据类型分类
Redis中存储数据常用的数据类型主要有五种:String、List、Set、Sorted Set、Hash,这五种数据结构在Redis中存储数据的命令掌握对于我们后期在使用Java框架封装类操作Redis的API了解是非常重要的。所以在这里对这五种数据结构进行一...[2021/3/29]
Redis工具收费后新的开源已出现
作者:三十三重天
博客: http: www.zhouhuibo.club
引言
Redis工具哪家强,中国山东找蓝翔。哎呀,串台了。
众所周知,开源的最终还是收费。
Reids Desktop 秉承了这一理念,苦逼的程序员和运维最后只能使用收费前的开源版本进行使用。想要体...[2021/3/24]
如何在 Istio 中支持 Dubbo、Thrift、Redis 以及任何七层协议?
赵化冰,腾讯云高级工程师,Istio Member,ServiceMesher管理委员,Istio 项目贡献者, Aerika 项目创建者 ,热衷于开源、网络和云计算。目前主要从事服务网格的开源和研发工作。
唐阳,知乎基础架构工程师。Istio 项目贡献者,Argo 项目贡献者,专注于开源,云...[2021/3/24]
Redis-第十章节-链表 - Mr-Tsing
目录
数组和链表
链表
对比
总结
1、数组和链表
数组:
数组会在内存中开辟一块连续的空间存储数据,这种存储方式有利也有弊端。当获取数据的时候,直接通过下标值就可以获取到对应的元素,时间复杂度为O(1)。但是如果新增或者删除数据会移动大量的数据,时间复杂度为O(n)。数组的扩容机制是:如...[2021/3/1]
redis配置文件注解
# Redis configuration file example.
#
# Note that in order to read the configuration file, Redis must be
# started with the file path as first argum...[2021/3/1]
redis数据结构和对象一
1. SDS:简单动态字符串(simple dynamic string)
Redis没有直接使用C语言的字符串,而是自己构建了一种名为简单动态字符串类型,并将SDS用作Redis的默认字符串。
SDS的定义
struct sdshdr {
buf 中已占用空间的长度
...[2021/3/1]
Redis基础:持久化
Blog:博客园 个人
什么是持久化?简单来讲就是将数据放到断电后数据不会丢失的设备中,也就是我们通常理解的硬盘上。
首先我们来看一下数据库在进行写操作时到底做了哪些事,主要有下面五个过程:
客户端向服务端发送写操作(数据在客户端的内存中);
数据库服务端接收到写请求的数据(数据在服...[2021/3/1]
Redis-第九章节-动态字符串 - Mr-Tsing
目录
概述
SDS(动态字符串)
SDS(动态字符串)与c语言字符串的区别
1、概述
String类型底层实现的简单动态字符串sds,是可以修改的字符串。它采用预分配冗余空间的方式来减少内存的频繁分配。
2、SDS动态字符串
动态字符串是以 \0 为分隔符。最大容量是redis...[2021/2/22]
一文掌握Redis的三种集群方案(小结)
在开发测试环境中,我们一般搭建Redis的单实例来应对开发测试需求,但是在生产环境,如果对可用性、可靠性要求较高,则需要引入Redis的集群方案。虽然现在各大云平台有提供缓存服务可以直接使用,但了解一下其背后的实现与原理总还是有些必要(比如面试), 本文就一起来学习一下Redis的几种集群方案。
...[2021/2/18]
详解如何清理redis集群的所有数据
1. 背景:生产测试后redis中产生大量数据
生产前需要清理reids集群中的数据。、
你看有很多key呢:
使用工具
使用命令,查看是否有数据:
keys *
2. 清理步骤
2.1 任意登录一台redis机器
执行下面脚本:
...[2021/2/18]
SpringBoot和Redis实现Token权限认证的实例讲解
一、引言
登陆权限控制是每个系统都应必备的功能,实现方法也有好多种。下面使用Token认证来实现系统的权限访问。
功能描述:
用户登录成功后,后台返回一个token给调用者,同时自定义一个@AuthToken注解,被该注解标注的API请求都需要进行token效验,效验通过才可以正常访问,实...[2021/2/18]
Redis内存碎片
目录一、什么是内存碎片二、如何判断有内存碎片三、内存碎片是怎么形成的3.1 jemalloc分配机制导致3.2 数据的修改删除操作导致四、如何清理内存碎片4.1 重启4.2 redis内存碎片自动清理机制五、和现实的类比
一、什么是内存碎片
redis数据删除后,所占用内存不会马上还...[2021/2/18]
Redis缓存雪崩、击穿、穿透Redis缓存雪崩、击穿、穿透
目录一、缓存三大问题二、缓存雪崩2.1 雪崩场景2.1 应对方案三、缓存击穿3.1 击穿场景3.2 应对方案四、缓存穿透4.1 穿透场景4.2 应对方案
一、缓存三大问题
这三个问题一旦发生,就会导致大量请求进入后台的数据库,如果有大量并发同时到达数据库,有可能会导致数据库宕机,...[2021/2/18]
Redis内存回收淘汰策略
目录一、Redis最大内存1.1 预估最大内存1.2 设置最大内存二、内存淘汰策略2.1 删除过期键对象2.2 内存溢出控制策略三、内存淘汰流程以及影响
一、Redis最大内存
1.1 预估最大内存
Redis作为内存数据库,需要尽量把那些频繁被访问的热点数据放入Redis。
按照...[2021/2/18]
Redis实现分布式锁
目录一、分布式锁二、基于单个redis节点的分布式锁2.1 示意图2.2 redis命令支持2.2.1 redis 命令支持-加锁-setnx2.2.2 redis 命令支持-释放锁-del2.2.3 setnx和del的组合的问题2.2.4 setnx和del的问题解决2.3 单节点r...[2021/2/18]
Redis-第八章节-应用场景 - Mr-TsingRedis-第八章节-应用场景 - Mr-Tsing
目录
概述
详解
1、概述
Redis支持五种数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合)。
2、详解
1、String(字符串)
定义: String 是 redis 最基本的类型,一个 key 对应一个 val...[2021/2/18]
Redis五大类型及底层实现原理Redis五大类型及底层实现原理
目录
简单动态字符串 链表 字典 跳跃表 整数集合 压缩列表 对象
对象的类型与编码 字符串对象 列表对象 哈希对象
集合对象 有序集合对象 类型检查与命令多态 内存回收 对象共享 对象的空转时长
...[2021/2/18]
Redis Lua 脚本
简介:
redis脚本使用lua解释器来执行脚本。
常用命令:
1.eval
2.evalsha
3.script_load
4.script_exists
5.script_flush
6.script_kill
命令详解:
1.eval
可用版本: &g...[2021/2/18]
Redis DEBUG 调试命令
本文主要记录一下redis调试相关的命令。
命令总览:
1.PING
2.ECHO
3.OBJECT
4.SLOWLOG
5.MONITOR
6.DEBUG_OBJECT
7.DEBUG_SEGFAULT
命令介绍:
1.PING
可用版本: >=1.0.0
时间复杂度...[2021/2/18]
Redis分布式锁升级版RedLock及SpringBoot实现方法
分布式锁概览
在多线程的环境下,为了保证一个代码块在同一时间只能由一个线程访问,Java中我们一般可以使用synchronized语法和ReetrantLock去保证,这实际上是本地锁的方式。但是现在公司都是流行分布式架构,在分布式环境下,如何保证不同节点的线程同步执行呢?因此就引出了分布式锁,...[2021/2/1]
CPU架构对redis性能的影响分析
目录一、主流多核CPU1.1 多核CPU缓存结构1.2 对redis的影响二、NUMA CPU2.1 UMA(SMP)架构VS NUMA 架构2.2 对redis的影响
本文主要基于cpu的架构和运行机制来分析cpu架构对redis的性能影响。
一、主流多核CPU
1.1 多核C...[2021/2/1]
如何判断redis变慢了
redis作为内存数据库,最大的特点是快,那么如何判断redis变慢,变慢的标准是什么,因为机器的配置环境是不一样的,不能简单通过响应的时间来简单对比。
redis提供了工具用来检测redis的性能基线,如果超过基线一定范围,便可以认为redis是变慢了。
本文针对以上问题展开介绍。...[2021/2/1]
Redis-第六章节-事务 - Mr-TsingRedis-第六章节-事务 - Mr-Tsing
目录
简介
执行过程
特点
案例
watch
简介
事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。
执行过程
开始事务 -> 命令入队 -> 执行事务。
特点
① 批量操作...[2021/2/1]