202205-07 Redis如何实现分布式锁 目录一、前言二、正文今天我们来聊一聊分布式锁的那些事。相信大家对锁已经不陌生了,我们在多线程环境中,如果需要对同一个资源进行操作,为了避免数据不一致,我们需要在操作共享资源之前进行加锁操作。在计算机科学中,锁(lock)或互斥(mutex)是一种同步机制,用于在有许多执行线程的环境中强制对资源的访问限制。比如你去相亲,发现你和一大哥同时和一个女的相亲,那怎么行呢...,搞不好还要被揍一顿。那什么是分布式锁呢。当多... 继续阅读 >
202204-30 Redis通过scan查找不过期的 key(方法详解) RedisScan命令用于迭代数据库中的数据库键。SCAN返回一个包含两个元素的数组,第一个元素是用于进行下一次迭代的新游标,而第二个元素则是一个数组,这个数组中包含了所有被迭代的元素。如果新游标返回0表示迭代已结束。相关命令:SSCAN命令用于迭代集合键中的元素。HSCAN命令用于迭代哈希键中的键值对。ZSCAN命令用于迭代有序集合中的元素(包括元素成员和元素分值)。#SCAN命令是一个基于游标的迭代器(cursorbase... 继续阅读 >
202204-20 浅谈Redis缓存有哪些淘汰策略 目录Redis过期策略定时删除惰性删除定期删除Redis的内存淘汰机制LRU和LFU的区别LRULFURedis重启如何恢复数据呢?总结Redis过期策略我们首先来了解一下Redis的内存淘汰机制。定时删除概述 redis默认是每隔100ms就随机抽取一些设置了过期时间的key,检查其是否过期,如果过期就删除。注意这里是随机抽取的。为什么要随机呢?你想一想假如redis存了几十万个key,每隔100ms就遍历所有的设置过期时间的ke... 继续阅读 >
202204-20 SpringBoot 开启Redis缓存及使用方法 目录Redis缓存主要步骤具体实践整体目录结构yml文件里配置Redis集群设置序列化的Bean编写业务Controller关于缓存的其他注解检验结果之前不是说过Redis可以当作缓存用嘛现在我们就配置一下SpringBoot使用Redis的缓存Redis缓存为什么用Redis作缓存用redis做缓存,是因为redis有着很优秀的读写能力,在集群下可以保证数据的高可用主要步骤 1、pom.xml文件添加依赖2、yml文件配置redis集群3、编写RedisConfig配置序列化及缓存配置... 继续阅读 >
202202-21 spring redis 如何实现模糊查找key springredis模糊查找key用法Set<String>keySet=stringRedisTemplate.keys("keyprefix:"+"*");需要使用StringRedisTemplate,或自定义keySerializer为StringRedisSerializer的redisTemplateredis里模糊查询key允许使用的通配符: *任意多个字符 ?单个字符 []括号内的某1个字符源码org.springframework.data.redis.core.RedisTemplate... 继续阅读 >
202202-12 Redis使用元素删除的布隆过滤器来解决缓存穿透问题 目录前言缓存雪崩解决方案缓存击穿解决方案 缓存穿透解决方案布隆过滤器(BloomFilter)什么是布隆过滤器位图(Bitmap)哈希碰撞布隆过滤器的2大特点fpp布隆过滤器的实现(Guava)布隆过滤器的如何删除带有计数器的布隆过滤器总结前言在我们日常开发中,Redis使用场景最多的就是作为缓存和分布式锁等功能来使用,而其用作缓存最大的目的就是为了降低数据库访问。但是假如我们某些数据并不存在于Redis当中,那么请求还是会直接... 继续阅读 >
202202-12 为什么断电后Redis数据不会丢失 目录前言Redis持久化机制RDB持久化机制RDB机制触发条件自动触发RDB机制相关配置文件RDB机制优点RDB机制缺点AOF持久化机制AOF机制如何开启AOF机制数据是否实时写入磁盘AOF文件重写AOF重写缓冲区AOF机制触发条件AOF机制机制优点AOF机制机制缺点总结前言Redis作为一款内存数据库,被广泛使用于缓存,分布式锁等场景,那么假如断电或者因其他因素导致Reids服务宕机,在重启之后数据会丢失吗?Redis持久化机制Redis... 继续阅读 >
202202-10 IDEA版使用Java操作Redis数据库的方法 首先下载jedis.jar包然后再工程设置里面找到Libraries,点击+。添加下载好的jedis.jar包。点击OK退出即可创建Java_Control_Redis类测试链接packageccit.redis;importredis.clients.jedis.Jedis;publicclassJava_Control_Redis{publicstaticvoidmain(String[]args){//连接本地的Redis服务Jedisjedis=newJedis("localhost");//如果Redis服务设置了密码,需要下面这行,没有就不... 继续阅读 >
202201-12 Redisson实现Redis分布式锁的几种方式 目录Redis几种架构普通分布式锁单机模式哨兵模式集群模式总结Redlock分布式锁实现原理问题合集前几天发的一篇文章《Redlock:Redis分布式锁最牛逼的实现》,引起了一些同学的讨论,也有一些同学提出了一些疑问,这是好事儿。本文在讲解如何使用Redisson实现Redis普通分布式锁,以及Redlock算法分布式锁的几种方式的同时,也附带解答这些同学的一些疑问。Redis几种架构Redis发展到现在,几种常见的部署架构有:单机模式;主... 继续阅读 >
202201-12 Redis分布式锁Redlock的实现 目录普通实现Redlock实现Redlock源码用法唯一ID获取锁释放锁普通实现说道Redis分布式锁大部分人都会想到:setnx+lua,或者知道setkeyvaluepxmillisecondsnx。后一种方式的核心实现命令如下:-获取锁(unique_value可以是UUID等)SETresource_nameunique_valueNXPX30000-释放锁(lua脚本中,一定要比较value,防止误解锁)ifredis.call("get",KEYS[1])==ARGV[1]thenreturnredis.call("del",KEYS[1])elsere... 继续阅读 >
202201-06 redis setIfAbsent和setnx的区别与使用说明 redissetIfAbsent和setnx的区别与使用如果为空就set值,并返回1如果存在(不为空)不进行操作,并返回0setIfAbsent和setnx使用范围setIfAbsent是java中的方法setnx是redis命令中的方法setnx例子redis>SETNXtestkey"test"(integer)1redis>SETNXtestkey"test"(integer)0redis>GETtestkey"test"setIfAbsent例子redis>SETNXtestkey"test"(integer)1redis>SETNXtestkey"test"(integer)0redis>GETtestkey"tes... 继续阅读 >
202112-16 Redis Cluster 集群搭建你会吗 三台机器201、202、203,每台机器装两个redis实例,构建rediscluster集群。1.安装添加redis-cluster目录,将redis压缩包拷贝到该目录下,解压压缩包。解压完后,将文件夹redis-5.0.3重命名为redis1。[root@test201redis-cluster]#mvredis-5.0.3redis1需要在redis1目录下使用make命令进行编译。[root@test201redis-cluster]#cdredis1[root@test201redis1]#make然后再执行cp命令拷贝另一份redis2。删... 继续阅读 >
202112-16 解析redis hash应用场景和常用命令 存储对象类数据hmsetusernamehuyongjianage23height170常用命令将多个field-value对设置到哈希表key中hmsetusernamehuyongjianage23height170将哈希表key中的字段field的值设为valuehsetuserweight70只有在字段field不存在时,设置哈希表字段的值hsetnxuseraddresschina获取存储在哈希表中指定字段的值hgetusername获取所有给定字段的值hmgetusernameage获取在哈希表中指定key的所有字段和值... 继续阅读 >
202112-16 Windows下安装Redis的流程详解 目录一、简介二、下载与安装Redis1、下载2、解压3、几个重要的文件三、环境变量配置四、验证与连接redis 1、验证3、连接Redis4、设置一个key测试一下一、简介Redis作为常用开源的非关系型数据库,是开发中常用的数据库之一。Redis底层是使用ANSIC编写的,支持网络可基于内存和可持久化的日志型、Key-Value数据库,提供了多种语言API。(基于内存是Redis快的一个重要因素)二、下载与安装Redis1、下载github上可以下载Windows... 继续阅读 >
202111-19 redis debug环境搭建过程详解(使用clion) 目录概要环境搭建的大体思路windows下安装linux工具链什么是make和cmake安装c语言开发的ide具体安装步骤cygwin安装clion安装及插件安装克隆redis代码如何调试如何调试redis-server概要最近写了spring系列,这个系列还在进行中,然后有些同学开始叫我大神,然后以为我各方面都比较厉害,当然了,我是有自知之明的,大佬大神什么的,当作一个称呼就好,如果真的以为自己就是大神,那可能就走偏了。其实我不少方面都比较薄弱,比如re... 继续阅读 >
202111-17 Springboot+Redis实现API接口限流的示例代码 添加Redis的jar包.<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>在application.yml中配置redisspring:##Redisredis:database:0host:127.0.0.1port:6379password:jedis:pool:max-active:8max-wait:-1msmax-idle:8min-idle:0timeout:... 继续阅读 >