202301-31 redis如何设置database个数 目录redis设置database个数redis多数据库database配置项解析应用场景总结redis设置database个数今天连公司数据库,发现db达到255个,不知道为什么,其实是256个从0开始的而我自己的只有16个我是windows的,linux是一样的,目录结构如图:编辑redis.conf配置文件,搜索database,可以找到:databases16如图:通过看简单描述,我们大概知道:最后一句话,意思是,初始的DB是0,(默认的是16),你能自己选择一个数字来作为数据库的... 继续阅读 >
202301-13 Redis字典实现、Hash键冲突及渐进式rehash详解 目录Redis字典实现哈希表节点结构哈希表结构字典哈希算法解决hash冲突rehash渐进式hash本笔记参考《Redis设计与实现》P24~37Redis字典实现哈希表节点结构typedefstructdictEntry{//键void*key;//值:可以是一个指针,或者是一个uint64/int64的整数union{void*val;uint64_tu64;int64_ts64}v;//指向下一个哈希表节点,形成链表:该指针可以将多个哈希值相同的键值对连接在一起,以此解决键冲突的问题。... 继续阅读 >
202211-02 Redis BloomFilter实例讲解 目录1.简介2.guava实现2.1导入依赖2.2BloomFilterTest2.3启动测试2.4小节3.redisson实现3.1导入依赖3.2BloomFilterWithRedisson3.3启动测试1.简介布隆过滤器是防止缓存穿透的方案之一。布隆过滤器主要是解决大规模数据下不需要精确过滤的业务场景,如检查垃圾邮件地址,爬虫URL地址去重,解决缓存穿透问题等。布隆过滤器:在一个存在一定数量的集合中过滤一个对应的元素,判断该元素是否一定不在集合中或者可能在集... 继续阅读 >
202210-08 redis键空间通知使用实现 目录导语实现在业务中使用总结导语最近在开发一个定时活动,而且活动是多个场次的。这个是后就需要在活动开始的时候推送信息给客户端,结束的时候也要推送一次。简单的设计方案就是将配置缓存在redis,然后每隔一秒就轮询reids,获取配置信息,然后判断是不是到活动开始或者结束的时间点,然后推送给客户端。但是,这里会有一个问题,如果没有到活动开始或结束的时间点,这里会造成很多无用的轮询操作。这个操作不但增大了对这个ke... 继续阅读 >
202208-19 基于Redis的List实现特价商品列表功能 目录 1、场景分析2、分析3、具体实现3.1ProductListService类3.2商品的数据接口的定义和展示及分页3.3定时任务4、解决商品列表存在的缓存击穿问题 4.1如何引起的缓存击穿的情况4.2解决方案 1、场景分析淘宝京东的特价商品列表,商品特点:商品有限,并发量非常的大。考虑分页传统解决方案:数据库db,但是在如此大的并发量的情况下,不可取。一般会采用redis来处理。这些特价商品的数据不多,而且red... 继续阅读 >
202207-11 16个Redis的常见使用场景 Redis16个常见使用场景1、缓存String类型例如:热点数据缓存(例如报表、明星出轨),对象缓存、全页缓存、可以提升热点数据的访问数据。2、数据共享分布式String类型,因为Redis是分布式的独立服务,可以在多个应用之间共享例如:分布式Session<dependency><groupId>org.springframework.session</groupId><artifactId>spring-session-data-redis</artifactId></dependency>3、分布式锁String类型setnx方法,只... 继续阅读 >
202207-06 Redis入门教程详解 目录Redis一、Redis基本数据结构1.字符串(String)2.散列(hash)3.列表(list)4.集合(Set)5.有序集合(sortedset)二、Redis的高级数据结构1.HyperLogLog2.GEO3.BitMap三、Redis高级特性1.Redis事务2.发布订阅3.脚本4.RedisStream四、Redis使用场景1.业务数据缓存2.业务数据处理3.全局一致计数4.高效统计计数5.发布订阅与Stream6.分布式锁五、Redis的Java客户端1.Jedis2.Lettuce3.Redission六、项目... 继续阅读 >
202207-06 详解Redis数据类型实现原理 目录1.对象的类型与编码①type属性②encoding属性和*prt指针2.字符串对象①编码②编码的转换3.列表对象①编码②编码转换4.哈希对象①编码②编码转换5.集合对象①编码②编码转换6.有序集合对象①编码②编码转换7.五大数据类型的应用场景1.对象的类型与编码Redis使用前面说的五大数据类型来表示键和值,每次在Redis数据库中创建一个键值对时,至少会创建两个对象,一个是键对象,一个是值对象,而Redis中... 继续阅读 >
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服务设置了密码,需要下面这行,没有就不... 继续阅读 >